/ Hex Artifact Content
Login

Artifact 724358b899d028ff44bfac7d0c071b49fcc6c0b7:


0000: 2f 2a 0a 2a 2a 20 32 30 30 31 20 53 65 70 74 65  /*.** 2001 Septe
0010: 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a 20 54 68  mber 15.**.** Th
0020: 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69  e author disclai
0030: 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20  ms copyright to 
0040: 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65  this source code
0050: 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a  .  In place of.*
0060: 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65  * a legal notice
0070: 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73  , here is a bles
0080: 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d  sing:.**.**    M
0090: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
00a0: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20  nd not evil..** 
00b0: 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20     May you find 
00c0: 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20  forgiveness for 
00d0: 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72  yourself and for
00e0: 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20  give others..** 
00f0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
0100: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0110: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0120: 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a  you give..**.***
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73 20 68  ******.** This h
0180: 65 61 64 65 72 20 66 69 6c 65 20 64 65 66 69 6e  eader file defin
0190: 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  es the interface
01a0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
01b0: 20 6c 69 62 72 61 72 79 0a 2a 2a 20 70 72 65 73   library.** pres
01c0: 65 6e 74 73 20 74 6f 20 63 6c 69 65 6e 74 20 70  ents to client p
01d0: 72 6f 67 72 61 6d 73 2e 0a 2a 2a 0a 2a 2a 20 40  rograms..**.** @
01e0: 28 23 29 20 24 49 64 3a 20 73 71 6c 69 74 65 2e  (#) $Id: sqlite.
01f0: 68 2e 69 6e 2c 76 20 31 2e 32 31 31 20 32 30 30  h.in,v 1.211 200
0200: 37 2f 30 36 2f 31 33 20 31 35 3a 32 32 3a 32 38  7/06/13 15:22:28
0210: 20 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78 70   danielk1977 Exp
0220: 20 24 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 53   $.*/.#ifndef _S
0230: 51 4c 49 54 45 33 5f 48 5f 0a 23 64 65 66 69 6e  QLITE3_H_.#defin
0240: 65 20 5f 53 51 4c 49 54 45 33 5f 48 5f 0a 23 69  e _SQLITE3_H_.#i
0250: 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e 68  nclude <stdarg.h
0260: 3e 20 20 20 20 20 2f 2a 20 4e 65 65 64 65 64 20  >     /* Needed 
0270: 66 6f 72 20 74 68 65 20 64 65 66 69 6e 69 74 69  for the definiti
0280: 6f 6e 20 6f 66 20 76 61 5f 6c 69 73 74 20 2a 2f  on of va_list */
0290: 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73 75 72  ../*.** Make sur
02a0: 65 20 77 65 20 63 61 6e 20 63 61 6c 6c 20 74 68  e we can call th
02b0: 69 73 20 73 74 75 66 66 20 66 72 6f 6d 20 43 2b  is stuff from C+
02c0: 2b 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 5f 5f 63  +..*/.#ifdef __c
02d0: 70 6c 75 73 70 6c 75 73 0a 65 78 74 65 72 6e 20  plusplus.extern 
02e0: 22 43 22 20 7b 0a 23 65 6e 64 69 66 0a 0a 2f 2a  "C" {.#endif../*
02f0: 0a 2a 2a 20 54 68 65 20 76 65 72 73 69 6f 6e 20  .** The version 
0300: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
0310: 62 72 61 72 79 2e 0a 2a 2f 0a 23 69 66 64 65 66  brary..*/.#ifdef
0320: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 0a   SQLITE_VERSION.
0330: 23 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56  # undef SQLITE_V
0340: 45 52 53 49 4f 4e 0a 23 65 6e 64 69 66 0a 23 64  ERSION.#endif.#d
0350: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45 52  efine SQLITE_VER
0360: 53 49 4f 4e 20 20 20 20 20 20 20 20 20 22 2d 2d  SION         "--
0370: 56 45 52 53 2d 2d 22 0a 0a 2f 2a 0a 2a 2a 20 54  VERS--"../*.** T
0380: 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65  he format of the
0390: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 20   version string 
03a0: 69 73 20 22 58 2e 59 2e 5a 3c 74 72 61 69 6c 69  is "X.Y.Z<traili
03b0: 6e 67 20 73 74 72 69 6e 67 3e 22 2c 20 77 68 65  ng string>", whe
03c0: 72 65 0a 2a 2a 20 58 20 69 73 20 74 68 65 20 6d  re.** X is the m
03d0: 61 6a 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d  ajor version num
03e0: 62 65 72 2c 20 59 20 69 73 20 74 68 65 20 6d 69  ber, Y is the mi
03f0: 6e 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  nor version numb
0400: 65 72 20 61 6e 64 20 5a 0a 2a 2a 20 69 73 20 74  er and Z.** is t
0410: 68 65 20 72 65 6c 65 61 73 65 20 6e 75 6d 62 65  he release numbe
0420: 72 2e 20 54 68 65 20 74 72 61 69 6c 69 6e 67 20  r. The trailing 
0430: 73 74 72 69 6e 67 20 69 73 20 6f 66 74 65 6e 20  string is often 
0440: 22 61 6c 70 68 61 22 20 6f 72 20 22 62 65 74 61  "alpha" or "beta
0450: 22 2e 0a 2a 2a 20 46 6f 72 20 65 78 61 6d 70 6c  "..** For exampl
0460: 65 20 22 33 2e 31 2e 31 62 65 74 61 22 2e 0a 2a  e "3.1.1beta"..*
0470: 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f  *.** The SQLITE_
0480: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 69  VERSION_NUMBER i
0490: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 69 74  s an integer wit
04a0: 68 20 74 68 65 20 76 61 6c 75 65 20 0a 2a 2a 20  h the value .** 
04b0: 28 58 2a 31 30 30 30 30 30 30 20 2b 20 59 2a 31  (X*1000000 + Y*1
04c0: 30 30 30 20 2b 20 5a 29 2e 20 46 6f 72 20 65 78  000 + Z). For ex
04d0: 61 6d 70 6c 65 2c 20 66 6f 72 20 76 65 72 73 69  ample, for versi
04e0: 6f 6e 20 22 33 2e 31 2e 31 62 65 74 61 22 2c 20  on "3.1.1beta", 
04f0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 56 45 52 53 49  .** SQLITE_VERSI
0500: 4f 4e 5f 4e 55 4d 42 45 52 20 69 73 20 73 65 74  ON_NUMBER is set
0510: 20 74 6f 20 33 30 30 31 30 30 31 2e 20 54 6f 20   to 3001001. To 
0520: 64 65 74 65 63 74 20 69 66 20 74 68 65 79 20 61  detect if they a
0530: 72 65 20 75 73 69 6e 67 20 0a 2a 2a 20 76 65 72  re using .** ver
0540: 73 69 6f 6e 20 33 2e 31 2e 31 20 6f 72 20 67 72  sion 3.1.1 or gr
0550: 65 61 74 65 72 20 61 74 20 63 6f 6d 70 69 6c 65  eater at compile
0560: 20 74 69 6d 65 2c 20 70 72 6f 67 72 61 6d 73 20   time, programs 
0570: 6d 61 79 20 75 73 65 20 74 68 65 20 74 65 73 74  may use the test
0580: 20 0a 2a 2a 20 28 53 51 4c 49 54 45 5f 56 45 52   .** (SQLITE_VER
0590: 53 49 4f 4e 5f 4e 55 4d 42 45 52 3e 3d 33 30 30  SION_NUMBER>=300
05a0: 31 30 30 31 29 2e 0a 2a 2f 0a 23 69 66 64 65 66  1001)..*/.#ifdef
05b0: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f   SQLITE_VERSION_
05c0: 4e 55 4d 42 45 52 0a 23 20 75 6e 64 65 66 20 53  NUMBER.# undef S
05d0: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55  QLITE_VERSION_NU
05e0: 4d 42 45 52 0a 23 65 6e 64 69 66 0a 23 64 65 66  MBER.#endif.#def
05f0: 69 6e 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49  ine SQLITE_VERSI
0600: 4f 4e 5f 4e 55 4d 42 45 52 20 2d 2d 56 45 52 53  ON_NUMBER --VERS
0610: 49 4f 4e 2d 4e 55 4d 42 45 52 2d 2d 0a 0a 2f 2a  ION-NUMBER--../*
0620: 0a 2a 2a 20 54 68 65 20 76 65 72 73 69 6f 6e 20  .** The version 
0630: 73 74 72 69 6e 67 20 69 73 20 61 6c 73 6f 20 63  string is also c
0640: 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 74 68 65  ompiled into the
0650: 20 6c 69 62 72 61 72 79 20 73 6f 20 74 68 61 74   library so that
0660: 20 61 20 70 72 6f 67 72 61 6d 0a 2a 2a 20 63 61   a program.** ca
0670: 6e 20 63 68 65 63 6b 20 74 6f 20 6d 61 6b 65 20  n check to make 
0680: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6c 69  sure that the li
0690: 62 2a 2e 61 20 66 69 6c 65 20 61 6e 64 20 74 68  b*.a file and th
06a0: 65 20 2a 2e 68 20 66 69 6c 65 20 61 72 65 20 66  e *.h file are f
06b0: 72 6f 6d 0a 2a 2a 20 74 68 65 20 73 61 6d 65 20  rom.** the same 
06c0: 76 65 72 73 69 6f 6e 2e 20 20 54 68 65 20 73 71  version.  The sq
06d0: 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
06e0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
06f0: 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a  rns a pointer.**
0700: 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
0710: 76 65 72 73 69 6f 6e 20 76 61 72 69 61 62 6c 65  version variable
0720: 20 2d 20 75 73 65 66 75 6c 20 69 6e 20 44 4c 4c   - useful in DLL
0730: 73 20 77 68 69 63 68 20 63 61 6e 6e 6f 74 20 61  s which cannot a
0740: 63 63 65 73 73 0a 2a 2a 20 67 6c 6f 62 61 6c 20  ccess.** global 
0750: 76 61 72 69 61 62 6c 65 73 2e 0a 2a 2f 0a 65 78  variables..*/.ex
0760: 74 65 72 6e 20 63 6f 6e 73 74 20 63 68 61 72 20  tern const char 
0770: 73 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b  sqlite3_version[
0780: 5d 3b 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  ];.const char *s
0790: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
07a0: 6e 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20  n(void);../*.** 
07b0: 52 65 74 75 72 6e 20 74 68 65 20 76 61 6c 75 65  Return the value
07c0: 20 6f 66 20 74 68 65 20 53 51 4c 49 54 45 5f 56   of the SQLITE_V
07d0: 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 6d 61  ERSION_NUMBER ma
07e0: 63 72 6f 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20  cro when the.** 
07f0: 6c 69 62 72 61 72 79 20 77 61 73 20 63 6f 6d 70  library was comp
0800: 69 6c 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  iled..*/.int sql
0810: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
0820: 6e 75 6d 62 65 72 28 76 6f 69 64 29 3b 0a 0a 2f  number(void);../
0830: 2a 0a 2a 2a 20 45 61 63 68 20 6f 70 65 6e 20 73  *.** Each open s
0840: 71 6c 69 74 65 20 64 61 74 61 62 61 73 65 20 69  qlite database i
0850: 73 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79  s represented by
0860: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
0870: 74 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67  the.** following
0880: 20 6f 70 61 71 75 65 20 73 74 72 75 63 74 75 72   opaque structur
0890: 65 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  e..*/.typedef st
08a0: 72 75 63 74 20 73 71 6c 69 74 65 33 20 73 71 6c  ruct sqlite3 sql
08b0: 69 74 65 33 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 53 6f  ite3;.../*.** So
08c0: 6d 65 20 63 6f 6d 70 69 6c 65 72 73 20 64 6f 20  me compilers do 
08d0: 6e 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65 20  not support the 
08e0: 22 6c 6f 6e 67 20 6c 6f 6e 67 22 20 64 61 74 61  "long long" data
08f0: 74 79 70 65 2e 20 20 53 6f 20 77 65 20 68 61 76  type.  So we hav
0900: 65 0a 2a 2a 20 74 6f 20 64 6f 20 61 20 74 79 70  e.** to do a typ
0910: 65 64 65 66 20 74 68 61 74 20 66 6f 72 20 36 34  edef that for 64
0920: 2d 62 69 74 20 69 6e 74 65 67 65 72 73 20 74 68  -bit integers th
0930: 61 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 77 68  at depends on wh
0940: 61 74 20 63 6f 6d 70 69 6c 65 72 0a 2a 2a 20 69  at compiler.** i
0950: 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0a 2a 2f  s being used..*/
0960: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 49  .#ifdef SQLITE_I
0970: 4e 54 36 34 5f 54 59 50 45 0a 20 20 74 79 70 65  NT64_TYPE.  type
0980: 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34  def SQLITE_INT64
0990: 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 69 6e 74  _TYPE sqlite_int
09a0: 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75 6e  64;.  typedef un
09b0: 73 69 67 6e 65 64 20 53 51 4c 49 54 45 5f 49 4e  signed SQLITE_IN
09c0: 54 36 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f  T64_TYPE sqlite_
09d0: 75 69 6e 74 36 34 3b 0a 23 65 6c 69 66 20 64 65  uint64;.#elif de
09e0: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20  fined(_MSC_VER) 
09f0: 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 42 4f 52  || defined(__BOR
0a00: 4c 41 4e 44 43 5f 5f 29 0a 20 20 74 79 70 65 64  LANDC__).  typed
0a10: 65 66 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74  ef __int64 sqlit
0a20: 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79 70 65 64  e_int64;.  typed
0a30: 65 66 20 75 6e 73 69 67 6e 65 64 20 5f 5f 69 6e  ef unsigned __in
0a40: 74 36 34 20 73 71 6c 69 74 65 5f 75 69 6e 74 36  t64 sqlite_uint6
0a50: 34 3b 0a 23 65 6c 73 65 0a 20 20 74 79 70 65 64  4;.#else.  typed
0a60: 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74  ef long long int
0a70: 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20   sqlite_int64;. 
0a80: 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65   typedef unsigne
0a90: 64 20 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20  d long long int 
0aa0: 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23  sqlite_uint64;.#
0ab0: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 49 66 20  endif../*.** If 
0ac0: 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20 61 20  compiling for a 
0ad0: 70 72 6f 63 65 73 73 6f 72 20 74 68 61 74 20 6c  processor that l
0ae0: 61 63 6b 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f  acks floating po
0af0: 69 6e 74 20 73 75 70 70 6f 72 74 2c 0a 2a 2a 20  int support,.** 
0b00: 73 75 62 73 74 69 74 75 74 65 20 69 6e 74 65 67  substitute integ
0b10: 65 72 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67 2d  er for floating-
0b20: 70 6f 69 6e 74 0a 2a 2f 0a 23 69 66 64 65 66 20  point.*/.#ifdef 
0b30: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41  SQLITE_OMIT_FLOA
0b40: 54 49 4e 47 5f 50 4f 49 4e 54 0a 23 20 64 65 66  TING_POINT.# def
0b50: 69 6e 65 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ine double sqlit
0b60: 65 5f 69 6e 74 36 34 0a 23 65 6e 64 69 66 0a 0a  e_int64.#endif..
0b70: 2f 2a 0a 2a 2a 20 41 20 66 75 6e 63 74 69 6f 6e  /*.** A function
0b80: 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 64 61   to close the da
0b90: 74 61 62 61 73 65 2e 0a 2a 2a 0a 2a 2a 20 43 61  tabase..**.** Ca
0ba0: 6c 6c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  ll this function
0bb0: 20 77 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20   with a pointer 
0bc0: 74 6f 20 61 20 73 74 72 75 63 74 75 72 65 20 74  to a structure t
0bd0: 68 61 74 20 77 61 73 20 70 72 65 76 69 6f 75 73  hat was previous
0be0: 6c 79 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 66  ly.** returned f
0bf0: 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  rom sqlite3_open
0c00: 28 29 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65  () and the corre
0c10: 73 70 6f 6e 64 69 6e 67 20 64 61 74 61 62 61 73  sponding databas
0c20: 65 20 77 69 6c 6c 20 62 79 20 63 6c 6f 73 65 64  e will by closed
0c30: 2e 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20 53 51 4c 20  ..**.** All SQL 
0c40: 73 74 61 74 65 6d 65 6e 74 73 20 70 72 65 70 61  statements prepa
0c50: 72 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74 65  red using sqlite
0c60: 33 5f 70 72 65 70 61 72 65 28 29 20 6f 72 0a 2a  3_prepare() or.*
0c70: 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  * sqlite3_prepar
0c80: 65 31 36 28 29 20 6d 75 73 74 20 62 65 20 64 65  e16() must be de
0c90: 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20  allocated using 
0ca0: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
0cb0: 28 29 20 62 65 66 6f 72 65 0a 2a 2a 20 74 68 69  () before.** thi
0cc0: 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c  s routine is cal
0cd0: 6c 65 64 2e 20 4f 74 68 65 72 77 69 73 65 2c 20  led. Otherwise, 
0ce0: 53 51 4c 49 54 45 5f 42 55 53 59 20 69 73 20 72  SQLITE_BUSY is r
0cf0: 65 74 75 72 6e 65 64 20 61 6e 64 20 74 68 65 0a  eturned and the.
0d00: 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ** database conn
0d10: 65 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 6f  ection remains o
0d20: 70 65 6e 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  pen..*/.int sqli
0d30: 74 65 33 5f 63 6c 6f 73 65 28 73 71 6c 69 74 65  te3_close(sqlite
0d40: 33 20 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  3 *);../*.** The
0d50: 20 74 79 70 65 20 66 6f 72 20 61 20 63 61 6c 6c   type for a call
0d60: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a  back function..*
0d70: 2f 0a 74 79 70 65 64 65 66 20 69 6e 74 20 28 2a  /.typedef int (*
0d80: 73 71 6c 69 74 65 33 5f 63 61 6c 6c 62 61 63 6b  sqlite3_callback
0d90: 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72  )(void*,int,char
0da0: 2a 2a 2c 20 63 68 61 72 2a 2a 29 3b 0a 0a 2f 2a  **, char**);../*
0db0: 0a 2a 2a 20 41 20 66 75 6e 63 74 69 6f 6e 20 74  .** A function t
0dc0: 6f 20 65 78 65 63 75 74 65 73 20 6f 6e 65 20 6f  o executes one o
0dd0: 72 20 6d 6f 72 65 20 73 74 61 74 65 6d 65 6e 74  r more statement
0de0: 73 20 6f 66 20 53 51 4c 2e 0a 2a 2a 0a 2a 2a 20  s of SQL..**.** 
0df0: 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  If one or more o
0e00: 66 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  f the SQL statem
0e10: 65 6e 74 73 20 61 72 65 20 71 75 65 72 69 65 73  ents are queries
0e20: 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 63 61  , then.** the ca
0e30: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
0e40: 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
0e50: 20 33 72 64 20 70 61 72 61 6d 65 74 65 72 20 69   3rd parameter i
0e60: 73 0a 2a 2a 20 69 6e 76 6f 6b 65 64 20 6f 6e 63  s.** invoked onc
0e70: 65 20 66 6f 72 20 65 61 63 68 20 72 6f 77 20 6f  e for each row o
0e80: 66 20 74 68 65 20 71 75 65 72 79 20 72 65 73 75  f the query resu
0e90: 6c 74 2e 20 20 54 68 69 73 20 63 61 6c 6c 62 61  lt.  This callba
0ea0: 63 6b 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 72  ck.** should nor
0eb0: 6d 61 6c 6c 79 20 72 65 74 75 72 6e 20 30 2e 20  mally return 0. 
0ec0: 20 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   If the callback
0ed0: 20 72 65 74 75 72 6e 73 20 61 20 6e 6f 6e 2d 7a   returns a non-z
0ee0: 65 72 6f 0a 2a 2a 20 76 61 6c 75 65 20 74 68 65  ero.** value the
0ef0: 6e 20 74 68 65 20 71 75 65 72 79 20 69 73 20 61  n the query is a
0f00: 62 6f 72 74 65 64 2c 20 61 6c 6c 20 73 75 62 73  borted, all subs
0f10: 65 71 75 65 6e 74 20 53 51 4c 20 73 74 61 74 65  equent SQL state
0f20: 6d 65 6e 74 73 0a 2a 2a 20 61 72 65 20 73 6b 69  ments.** are ski
0f30: 70 70 65 64 20 61 6e 64 20 74 68 65 20 73 71 6c  pped and the sql
0f40: 69 74 65 33 5f 65 78 65 63 28 29 20 66 75 6e 63  ite3_exec() func
0f50: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
0f60: 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 2a   SQLITE_ABORT..*
0f70: 2a 0a 2a 2a 20 54 68 65 20 31 73 74 20 70 61 72  *.** The 1st par
0f80: 61 6d 65 74 65 72 20 69 73 20 61 6e 20 61 72 62  ameter is an arb
0f90: 69 74 72 61 72 79 20 70 6f 69 6e 74 65 72 20 74  itrary pointer t
0fa0: 68 61 74 20 69 73 20 70 61 73 73 65 64 0a 2a 2a  hat is passed.**
0fb0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
0fc0: 20 66 75 6e 63 74 69 6f 6e 20 61 73 20 69 74 73   function as its
0fd0: 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
0fe0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 32 6e 64 20  ..**.** The 2nd 
0ff0: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
1000: 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
1010: 6f 6e 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72  on is the number
1020: 20 6f 66 0a 2a 2a 20 63 6f 6c 75 6d 6e 73 20 69   of.** columns i
1030: 6e 20 74 68 65 20 71 75 65 72 79 20 72 65 73 75  n the query resu
1040: 6c 74 2e 20 20 54 68 65 20 33 72 64 20 70 61 72  lt.  The 3rd par
1050: 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63 61  ameter to the ca
1060: 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 61 6e 20  llback.** is an 
1070: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
1080: 20 68 6f 6c 64 69 6e 67 20 74 68 65 20 76 61 6c   holding the val
1090: 75 65 73 20 66 6f 72 20 65 61 63 68 20 63 6f 6c  ues for each col
10a0: 75 6d 6e 2e 0a 2a 2a 20 54 68 65 20 34 74 68 20  umn..** The 4th 
10b0: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
10c0: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20   callback is an 
10d0: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
10e0: 20 68 6f 6c 64 69 6e 67 0a 2a 2a 20 74 68 65 20   holding.** the 
10f0: 6e 61 6d 65 73 20 6f 66 20 65 61 63 68 20 63 6f  names of each co
1100: 6c 75 6d 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  lumn..**.** The 
1110: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
1120: 6e 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20 65  n may be NULL, e
1130: 76 65 6e 20 66 6f 72 20 71 75 65 72 69 65 73 2e  ven for queries.
1140: 20 20 41 20 4e 55 4c 4c 0a 2a 2a 20 63 61 6c 6c    A NULL.** call
1150: 62 61 63 6b 20 69 73 20 6e 6f 74 20 61 6e 20 65  back is not an e
1160: 72 72 6f 72 2e 20 20 49 74 20 6a 75 73 74 20 6d  rror.  It just m
1170: 65 61 6e 73 20 74 68 61 74 20 6e 6f 20 63 61 6c  eans that no cal
1180: 6c 62 61 63 6b 0a 2a 2a 20 77 69 6c 6c 20 62 65  lback.** will be
1190: 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20   invoked..**.** 
11a0: 49 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  If an error occu
11b0: 72 73 20 77 68 69 6c 65 20 70 61 72 73 69 6e 67  rs while parsing
11c0: 20 6f 72 20 65 76 61 6c 75 61 74 69 6e 67 20 74   or evaluating t
11d0: 68 65 20 53 51 4c 20 28 62 75 74 0a 2a 2a 20 6e  he SQL (but.** n
11e0: 6f 74 20 77 68 69 6c 65 20 65 78 65 63 75 74 69  ot while executi
11f0: 6e 67 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 29  ng the callback)
1200: 20 74 68 65 6e 20 61 6e 20 61 70 70 72 6f 70 72   then an appropr
1210: 69 61 74 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 65  iate error.** me
1220: 73 73 61 67 65 20 69 73 20 77 72 69 74 74 65 6e  ssage is written
1230: 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74   into memory obt
1240: 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f  ained from mallo
1250: 63 28 29 20 61 6e 64 0a 2a 2a 20 2a 65 72 72 6d  c() and.** *errm
1260: 73 67 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f  sg is made to po
1270: 69 6e 74 20 74 6f 20 74 68 61 74 20 6d 65 73 73  int to that mess
1280: 61 67 65 2e 20 20 54 68 65 20 63 61 6c 6c 69 6e  age.  The callin
1290: 67 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69 73  g function.** is
12a0: 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72   responsible for
12b0: 20 66 72 65 65 69 6e 67 20 74 68 65 20 6d 65 6d   freeing the mem
12c0: 6f 72 79 20 74 68 61 74 20 68 6f 6c 64 73 20 74  ory that holds t
12d0: 68 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 65 73 73  he error.** mess
12e0: 61 67 65 2e 20 20 20 55 73 65 20 73 71 6c 69 74  age.   Use sqlit
12f0: 65 33 5f 66 72 65 65 28 29 20 66 6f 72 20 74 68  e3_free() for th
1300: 69 73 2e 20 20 49 66 20 65 72 72 6d 73 67 3d 3d  is.  If errmsg==
1310: 4e 55 4c 4c 2c 0a 2a 2a 20 74 68 65 6e 20 6e 6f  NULL,.** then no
1320: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69   error message i
1330: 73 20 65 76 65 72 20 77 72 69 74 74 65 6e 2e 0a  s ever written..
1340: 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75 72 6e  **.** The return
1350: 20 76 61 6c 75 65 20 69 73 20 69 73 20 53 51 4c   value is is SQL
1360: 49 54 45 5f 4f 4b 20 69 66 20 74 68 65 72 65 20  ITE_OK if there 
1370: 61 72 65 20 6e 6f 20 65 72 72 6f 72 73 20 61 6e  are no errors an
1380: 64 0a 2a 2a 20 73 6f 6d 65 20 6f 74 68 65 72 20  d.** some other 
1390: 72 65 74 75 72 6e 20 63 6f 64 65 20 69 66 20 74  return code if t
13a0: 68 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72  here is an error
13b0: 2e 20 20 54 68 65 20 70 61 72 74 69 63 75 6c 61  .  The particula
13c0: 72 0a 2a 2a 20 72 65 74 75 72 6e 20 76 61 6c 75  r.** return valu
13d0: 65 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65  e depends on the
13e0: 20 74 79 70 65 20 6f 66 20 65 72 72 6f 72 2e 20   type of error. 
13f0: 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 71 75  .**.** If the qu
1400: 65 72 79 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65  ery could not be
1410: 20 65 78 65 63 75 74 65 64 20 62 65 63 61 75 73   executed becaus
1420: 65 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  e a database fil
1430: 65 20 69 73 0a 2a 2a 20 6c 6f 63 6b 65 64 20 6f  e is.** locked o
1440: 72 20 62 75 73 79 2c 20 74 68 65 6e 20 74 68 69  r busy, then thi
1450: 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  s function retur
1460: 6e 73 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 20  ns SQLITE_BUSY. 
1470: 20 28 54 68 69 73 0a 2a 2a 20 62 65 68 61 76 69   (This.** behavi
1480: 6f 72 20 63 61 6e 20 62 65 20 6d 6f 64 69 66 69  or can be modifi
1490: 65 64 20 73 6f 6d 65 77 68 61 74 20 75 73 69 6e  ed somewhat usin
14a0: 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 75  g the sqlite3_bu
14b0: 73 79 5f 68 61 6e 64 6c 65 72 28 29 0a 2a 2a 20  sy_handler().** 
14c0: 61 6e 64 20 73 71 6c 69 74 65 33 5f 62 75 73 79  and sqlite3_busy
14d0: 5f 74 69 6d 65 6f 75 74 28 29 20 66 75 6e 63 74  _timeout() funct
14e0: 69 6f 6e 73 20 62 65 6c 6f 77 2e 29 0a 2a 2f 0a  ions below.).*/.
14f0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 65 63  int sqlite3_exec
1500: 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 20 20  (.  sqlite3*,   
1510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1520: 20 20 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74    /* An open dat
1530: 61 62 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  abase */.  const
1540: 20 63 68 61 72 20 2a 73 71 6c 2c 20 20 20 20 20   char *sql,     
1550: 20 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20           /* SQL 
1560: 74 6f 20 62 65 20 65 78 65 63 75 74 65 64 20 2a  to be executed *
1570: 2f 0a 20 20 73 71 6c 69 74 65 33 5f 63 61 6c 6c  /.  sqlite3_call
1580: 62 61 63 6b 2c 20 20 20 20 20 20 20 20 20 20 20  back,           
1590: 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 66 75    /* Callback fu
15a0: 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64  nction */.  void
15b0: 20 2a 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   *,             
15c0: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 31 73 74            /* 1st
15d0: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c   argument to cal
15e0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2a  lback function *
15f0: 2f 0a 20 20 63 68 61 72 20 2a 2a 65 72 72 6d 73  /.  char **errms
1600: 67 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  g               
1610: 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20 77    /* Error msg w
1620: 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29  ritten here */.)
1630: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  ;../*.** Return 
1640: 76 61 6c 75 65 73 20 66 6f 72 20 73 71 6c 69 74  values for sqlit
1650: 65 33 5f 65 78 65 63 28 29 20 61 6e 64 20 73 71  e3_exec() and sq
1660: 6c 69 74 65 33 5f 73 74 65 70 28 29 0a 2a 2f 0a  lite3_step().*/.
1670: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
1680: 4b 20 20 20 20 20 20 20 20 20 20 20 30 20 20 20  K           0   
1690: 2f 2a 20 53 75 63 63 65 73 73 66 75 6c 20 72 65  /* Successful re
16a0: 73 75 6c 74 20 2a 2f 0a 2f 2a 20 62 65 67 69 6e  sult */./* begin
16b0: 6e 69 6e 67 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f  ning-of-error-co
16c0: 64 65 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  des */.#define S
16d0: 51 4c 49 54 45 5f 45 52 52 4f 52 20 20 20 20 20  QLITE_ERROR     
16e0: 20 20 20 31 20 20 20 2f 2a 20 53 51 4c 20 65 72     1   /* SQL er
16f0: 72 6f 72 20 6f 72 20 6d 69 73 73 69 6e 67 20 64  ror or missing d
1700: 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66 69  atabase */.#defi
1710: 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 4e  ne SQLITE_INTERN
1720: 41 4c 20 20 20 20 20 32 20 20 20 2f 2a 20 4e 4f  AL     2   /* NO
1730: 54 20 55 53 45 44 2e 20 49 6e 74 65 72 6e 61 6c  T USED. Internal
1740: 20 6c 6f 67 69 63 20 65 72 72 6f 72 20 69 6e 20   logic error in 
1750: 53 51 4c 69 74 65 20 2a 2f 0a 23 64 65 66 69 6e  SQLite */.#defin
1760: 65 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20  e SQLITE_PERM   
1770: 20 20 20 20 20 20 33 20 20 20 2f 2a 20 41 63 63        3   /* Acc
1780: 65 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64  ess permission d
1790: 65 6e 69 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  enied */.#define
17a0: 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20   SQLITE_ABORT   
17b0: 20 20 20 20 20 34 20 20 20 2f 2a 20 43 61 6c 6c       4   /* Call
17c0: 62 61 63 6b 20 72 6f 75 74 69 6e 65 20 72 65 71  back routine req
17d0: 75 65 73 74 65 64 20 61 6e 20 61 62 6f 72 74 20  uested an abort 
17e0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
17f0: 45 5f 42 55 53 59 20 20 20 20 20 20 20 20 20 35  E_BUSY         5
1800: 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61     /* The databa
1810: 73 65 20 66 69 6c 65 20 69 73 20 6c 6f 63 6b 65  se file is locke
1820: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
1830: 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20  ITE_LOCKED      
1840: 20 36 20 20 20 2f 2a 20 41 20 74 61 62 6c 65 20   6   /* A table 
1850: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
1860: 69 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65  is locked */.#de
1870: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4d 45  fine SQLITE_NOME
1880: 4d 20 20 20 20 20 20 20 20 37 20 20 20 2f 2a 20  M        7   /* 
1890: 41 20 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 65  A malloc() faile
18a0: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
18b0: 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20  ITE_READONLY    
18c0: 20 38 20 20 20 2f 2a 20 41 74 74 65 6d 70 74 20   8   /* Attempt 
18d0: 74 6f 20 77 72 69 74 65 20 61 20 72 65 61 64 6f  to write a reado
18e0: 6e 6c 79 20 64 61 74 61 62 61 73 65 20 2a 2f 0a  nly database */.
18f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
1900: 4e 54 45 52 52 55 50 54 20 20 20 20 39 20 20 20  NTERRUPT    9   
1910: 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20 74 65 72  /* Operation ter
1920: 6d 69 6e 61 74 65 64 20 62 79 20 73 71 6c 69 74  minated by sqlit
1930: 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2a 2f  e3_interrupt()*/
1940: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1950: 49 4f 45 52 52 20 20 20 20 20 20 20 31 30 20 20  IOERR       10  
1960: 20 2f 2a 20 53 6f 6d 65 20 6b 69 6e 64 20 6f 66   /* Some kind of
1970: 20 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 20   disk I/O error 
1980: 6f 63 63 75 72 72 65 64 20 2a 2f 0a 23 64 65 66  occurred */.#def
1990: 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55  ine SQLITE_CORRU
19a0: 50 54 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54  PT     11   /* T
19b0: 68 65 20 64 61 74 61 62 61 73 65 20 64 69 73 6b  he database disk
19c0: 20 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f 72   image is malfor
19d0: 6d 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  med */.#define S
19e0: 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20  QLITE_NOTFOUND  
19f0: 20 20 31 32 20 20 20 2f 2a 20 4e 4f 54 20 55 53    12   /* NOT US
1a00: 45 44 2e 20 54 61 62 6c 65 20 6f 72 20 72 65 63  ED. Table or rec
1a10: 6f 72 64 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 2f  ord not found */
1a20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1a30: 46 55 4c 4c 20 20 20 20 20 20 20 20 31 33 20 20  FULL        13  
1a40: 20 2f 2a 20 49 6e 73 65 72 74 69 6f 6e 20 66 61   /* Insertion fa
1a50: 69 6c 65 64 20 62 65 63 61 75 73 65 20 64 61 74  iled because dat
1a60: 61 62 61 73 65 20 69 73 20 66 75 6c 6c 20 2a 2f  abase is full */
1a70: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1a80: 43 41 4e 54 4f 50 45 4e 20 20 20 20 31 34 20 20  CANTOPEN    14  
1a90: 20 2f 2a 20 55 6e 61 62 6c 65 20 74 6f 20 6f 70   /* Unable to op
1aa0: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
1ab0: 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  file */.#define 
1ac0: 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20  SQLITE_PROTOCOL 
1ad0: 20 20 20 31 35 20 20 20 2f 2a 20 4e 4f 54 20 55     15   /* NOT U
1ae0: 53 45 44 2e 20 44 61 74 61 62 61 73 65 20 6c 6f  SED. Database lo
1af0: 63 6b 20 70 72 6f 74 6f 63 6f 6c 20 65 72 72 6f  ck protocol erro
1b00: 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  r */.#define SQL
1b10: 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20 20 20  ITE_EMPTY       
1b20: 31 36 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  16   /* Database
1b30: 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a 23 64 65   is empty */.#de
1b40: 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 43 48 45  fine SQLITE_SCHE
1b50: 4d 41 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20  MA      17   /* 
1b60: 54 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  The database sch
1b70: 65 6d 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a 23  ema changed */.#
1b80: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 4f  define SQLITE_TO
1b90: 4f 42 49 47 20 20 20 20 20 20 31 38 20 20 20 2f  OBIG      18   /
1ba0: 2a 20 53 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42  * String or BLOB
1bb0: 20 65 78 63 65 65 64 73 20 73 69 7a 65 20 6c 69   exceeds size li
1bc0: 6d 69 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  mit */.#define S
1bd0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
1be0: 20 20 31 39 20 20 20 2f 2a 20 41 62 6f 72 74 20    19   /* Abort 
1bf0: 64 75 65 20 74 6f 20 63 6f 6e 74 72 61 69 6e 74  due to contraint
1c00: 20 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f 0a 23 64   violation */.#d
1c10: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53  efine SQLITE_MIS
1c20: 4d 41 54 43 48 20 20 20 20 32 30 20 20 20 2f 2a  MATCH    20   /*
1c30: 20 44 61 74 61 20 74 79 70 65 20 6d 69 73 6d 61   Data type misma
1c40: 74 63 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  tch */.#define S
1c50: 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 20 20 20  QLITE_MISUSE    
1c60: 20 20 32 31 20 20 20 2f 2a 20 4c 69 62 72 61 72    21   /* Librar
1c70: 79 20 75 73 65 64 20 69 6e 63 6f 72 72 65 63 74  y used incorrect
1c80: 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ly */.#define SQ
1c90: 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20  LITE_NOLFS      
1ca0: 20 32 32 20 20 20 2f 2a 20 55 73 65 73 20 4f 53   22   /* Uses OS
1cb0: 20 66 65 61 74 75 72 65 73 20 6e 6f 74 20 73 75   features not su
1cc0: 70 70 6f 72 74 65 64 20 6f 6e 20 68 6f 73 74 20  pported on host 
1cd0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1ce0: 45 5f 41 55 54 48 20 20 20 20 20 20 20 20 32 33  E_AUTH        23
1cf0: 20 20 20 2f 2a 20 41 75 74 68 6f 72 69 7a 61 74     /* Authorizat
1d00: 69 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64  ion denied */.#d
1d10: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 4f 52  efine SQLITE_FOR
1d20: 4d 41 54 20 20 20 20 20 20 32 34 20 20 20 2f 2a  MAT      24   /*
1d30: 20 41 75 78 69 6c 69 61 72 79 20 64 61 74 61 62   Auxiliary datab
1d40: 61 73 65 20 66 6f 72 6d 61 74 20 65 72 72 6f 72  ase format error
1d50: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1d60: 54 45 5f 52 41 4e 47 45 20 20 20 20 20 20 20 32  TE_RANGE       2
1d70: 35 20 20 20 2f 2a 20 32 6e 64 20 70 61 72 61 6d  5   /* 2nd param
1d80: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
1d90: 62 69 6e 64 20 6f 75 74 20 6f 66 20 72 61 6e 67  bind out of rang
1da0: 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
1db0: 49 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20 20  ITE_NOTADB      
1dc0: 32 36 20 20 20 2f 2a 20 46 69 6c 65 20 6f 70 65  26   /* File ope
1dd0: 6e 65 64 20 74 68 61 74 20 69 73 20 6e 6f 74 20  ned that is not 
1de0: 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
1df0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1e00: 45 5f 52 4f 57 20 20 20 20 20 20 20 20 20 31 30  E_ROW         10
1e10: 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74  0  /* sqlite3_st
1e20: 65 70 28 29 20 68 61 73 20 61 6e 6f 74 68 65 72  ep() has another
1e30: 20 72 6f 77 20 72 65 61 64 79 20 2a 2f 0a 23 64   row ready */.#d
1e40: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 4f 4e  efine SQLITE_DON
1e50: 45 20 20 20 20 20 20 20 20 31 30 31 20 20 2f 2a  E        101  /*
1e60: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
1e70: 68 61 73 20 66 69 6e 69 73 68 65 64 20 65 78 65  has finished exe
1e80: 63 75 74 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e 64  cuting */./* end
1e90: 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73 20  -of-error-codes 
1ea0: 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 55 73 69 6e 67 20  */../*.** Using 
1eb0: 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  the sqlite3_exte
1ec0: 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65  nded_result_code
1ed0: 73 28 29 20 41 50 49 2c 20 79 6f 75 20 63 61 6e  s() API, you can
1ee0: 20 63 61 75 73 65 0a 2a 2a 20 53 51 4c 69 74 65   cause.** SQLite
1ef0: 20 74 6f 20 72 65 74 75 72 6e 20 72 65 73 75 6c   to return resul
1f00: 74 20 63 6f 64 65 73 20 77 69 74 68 20 61 64 64  t codes with add
1f10: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
1f20: 69 6f 6e 20 69 6e 0a 2a 2a 20 74 68 65 69 72 20  ion in.** their 
1f30: 75 70 70 65 72 20 62 69 74 73 2e 20 20 54 68 65  upper bits.  The
1f40: 20 6c 6f 77 65 72 20 38 20 62 69 74 73 20 77 69   lower 8 bits wi
1f50: 6c 6c 20 62 65 20 74 68 65 20 73 61 6d 65 20 61  ll be the same a
1f60: 73 20 74 68 65 0a 2a 2a 20 70 72 69 6d 61 72 79  s the.** primary
1f70: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61 62   result codes ab
1f80: 6f 76 65 2e 20 20 42 75 74 20 74 68 65 20 75 70  ove.  But the up
1f90: 70 65 72 20 62 69 74 73 20 6d 69 67 68 74 20 63  per bits might c
1fa0: 6f 6e 74 61 69 6e 0a 2a 2a 20 6d 6f 72 65 20 73  ontain.** more s
1fb0: 70 65 63 69 66 69 63 20 65 72 72 6f 72 20 69 6e  pecific error in
1fc0: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  formation..**.**
1fd0: 20 54 6f 20 65 78 74 72 61 63 74 20 74 68 65 20   To extract the 
1fe0: 70 72 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63  primary result c
1ff0: 6f 64 65 20 66 72 6f 6d 20 61 6e 20 65 78 74 65  ode from an exte
2000: 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
2010: 2c 0a 2a 2a 20 73 69 6d 70 6c 79 20 6d 61 73 6b  ,.** simply mask
2020: 20 6f 66 66 20 74 68 65 20 6c 6f 77 65 72 20 38   off the lower 8
2030: 20 62 69 74 73 2e 0a 2a 2a 0a 2a 2a 20 20 20 20   bits..**.**    
2040: 20 20 20 20 70 72 69 6d 61 72 79 20 3d 20 65 78      primary = ex
2050: 74 65 6e 64 65 64 20 26 20 30 78 66 66 3b 0a 2a  tended & 0xff;.*
2060: 2a 0a 2a 2a 20 4e 65 77 20 72 65 73 75 6c 74 20  *.** New result 
2070: 65 72 72 6f 72 20 63 6f 64 65 73 20 6d 61 79 20  error codes may 
2080: 62 65 20 61 64 64 65 64 20 66 72 6f 6d 20 74 69  be added from ti
2090: 6d 65 20 74 6f 20 74 69 6d 65 2e 20 20 53 6f 66  me to time.  Sof
20a0: 74 77 61 72 65 0a 2a 2a 20 74 68 61 74 20 75 73  tware.** that us
20b0: 65 73 20 74 68 65 20 65 78 74 65 6e 64 65 64 20  es the extended 
20c0: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 73 68 6f  result codes sho
20d0: 75 6c 64 20 70 6c 61 6e 20 61 63 63 6f 72 64 69  uld plan accordi
20e0: 6e 67 6c 79 20 61 6e 64 20 62 65 0a 2a 2a 20 73  ngly and be.** s
20f0: 75 72 65 20 74 6f 20 61 6c 77 61 79 73 20 68 61  ure to always ha
2100: 6e 64 6c 65 20 6e 65 77 20 75 6e 6b 6e 6f 77 6e  ndle new unknown
2110: 20 63 6f 64 65 73 20 67 72 61 63 65 66 75 6c 6c   codes gracefull
2120: 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  y..**.** The SQL
2130: 49 54 45 5f 4f 4b 20 72 65 73 75 6c 74 20 63 6f  ITE_OK result co
2140: 64 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 62 65  de will never be
2150: 20 65 78 74 65 6e 64 65 64 2e 20 20 49 74 20 77   extended.  It w
2160: 69 6c 6c 20 61 6c 77 61 79 73 0a 2a 2a 20 62 65  ill always.** be
2170: 20 65 78 61 63 74 6c 79 20 7a 65 72 6f 2e 0a 2a   exactly zero..*
2180: 2a 0a 2a 2a 20 54 68 65 20 65 78 74 65 6e 64 65  *.** The extende
2190: 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61  d result codes a
21a0: 6c 77 61 79 73 20 68 61 76 65 20 74 68 65 20 70  lways have the p
21b0: 72 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f  rimary result co
21c0: 64 65 0a 2a 2a 20 61 73 20 61 20 70 72 65 66 69  de.** as a prefi
21d0: 78 2e 20 20 50 72 69 6d 61 72 79 20 72 65 73 75  x.  Primary resu
21e0: 6c 74 20 63 6f 64 65 73 20 6f 6e 6c 79 20 63 6f  lt codes only co
21f0: 6e 74 61 69 6e 20 61 20 73 69 6e 67 6c 65 20 22  ntain a single "
2200: 5f 22 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 2e  _".** character.
2210: 20 20 45 78 74 65 6e 64 65 64 20 72 65 73 75 6c    Extended resul
2220: 74 20 63 6f 64 65 73 20 63 6f 6e 74 61 69 6e 20  t codes contain 
2230: 74 77 6f 20 6f 72 20 6d 6f 72 65 20 22 5f 22 20  two or more "_" 
2240: 63 68 61 72 61 63 74 65 72 73 2e 0a 2a 2f 0a 23  characters..*/.#
2250: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
2260: 45 52 52 5f 52 45 41 44 20 20 20 20 20 20 20 20  ERR_READ        
2270: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
2280: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
2290: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53  e SQLITE_IOERR_S
22a0: 48 4f 52 54 5f 52 45 41 44 20 20 20 20 28 53 51  HORT_READ    (SQ
22b0: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 3c  LITE_IOERR | (2<
22c0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
22d0: 49 54 45 5f 49 4f 45 52 52 5f 57 52 49 54 45 20  ITE_IOERR_WRITE 
22e0: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
22f0: 49 4f 45 52 52 20 7c 20 28 33 3c 3c 38 29 29 0a  IOERR | (3<<8)).
2300: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
2310: 4f 45 52 52 5f 46 53 59 4e 43 20 20 20 20 20 20  OERR_FSYNC      
2320: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
2330: 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65 66 69   | (4<<8)).#defi
2340: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
2350: 44 49 52 5f 46 53 59 4e 43 20 20 20 20 20 28 53  DIR_FSYNC     (S
2360: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 35  QLITE_IOERR | (5
2370: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
2380: 4c 49 54 45 5f 49 4f 45 52 52 5f 54 52 55 4e 43  LITE_IOERR_TRUNC
2390: 41 54 45 20 20 20 20 20 20 28 53 51 4c 49 54 45  ATE      (SQLITE
23a0: 5f 49 4f 45 52 52 20 7c 20 28 36 3c 3c 38 29 29  _IOERR | (6<<8))
23b0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
23c0: 49 4f 45 52 52 5f 46 53 54 41 54 20 20 20 20 20  IOERR_FSTAT     
23d0: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
23e0: 52 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64 65 66  R | (7<<8)).#def
23f0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
2400: 5f 55 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20 28  _UNLOCK        (
2410: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
2420: 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  8<<8)).#define S
2430: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 44 4c 4f  QLITE_IOERR_RDLO
2440: 43 4b 20 20 20 20 20 20 20 20 28 53 51 4c 49 54  CK        (SQLIT
2450: 45 5f 49 4f 45 52 52 20 7c 20 28 39 3c 3c 38 29  E_IOERR | (9<<8)
2460: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
2470: 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 20 20 20  _IOERR_DELETE   
2480: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45       (SQLITE_IOE
2490: 52 52 20 7c 20 28 31 30 3c 3c 38 29 29 0a 23 64  RR | (10<<8)).#d
24a0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
24b0: 52 52 5f 42 4c 4f 43 4b 45 44 20 20 20 20 20 20  RR_BLOCKED      
24c0: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
24d0: 20 28 31 31 3c 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a   (11<<8))../*.**
24e0: 20 45 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62   Enable or disab
24f0: 6c 65 20 74 68 65 20 65 78 74 65 6e 64 65 64 20  le the extended 
2500: 72 65 73 75 6c 74 20 63 6f 64 65 73 2e 0a 2a 2f  result codes..*/
2510: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74  .int sqlite3_ext
2520: 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64  ended_result_cod
2530: 65 73 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74  es(sqlite3*, int
2540: 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a 2a 2a 20   onoff);../*.** 
2550: 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 61 6e  Each entry in an
2560: 20 53 51 4c 69 74 65 20 74 61 62 6c 65 20 68 61   SQLite table ha
2570: 73 20 61 20 75 6e 69 71 75 65 20 69 6e 74 65 67  s a unique integ
2580: 65 72 20 6b 65 79 2e 20 20 28 54 68 65 20 6b 65  er key.  (The ke
2590: 79 20 69 73 0a 2a 2a 20 74 68 65 20 76 61 6c 75  y is.** the valu
25a0: 65 20 6f 66 20 74 68 65 20 49 4e 54 45 47 45 52  e of the INTEGER
25b0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
25c0: 75 6d 6e 20 69 66 20 74 68 65 72 65 20 69 73 20  umn if there is 
25d0: 73 75 63 68 20 61 20 63 6f 6c 75 6d 6e 2c 0a 2a  such a column,.*
25e0: 2a 20 6f 74 68 65 72 77 69 73 65 20 74 68 65 20  * otherwise the 
25f0: 6b 65 79 20 69 73 20 67 65 6e 65 72 61 74 65 64  key is generated
2600: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20   automatically. 
2610: 20 54 68 65 20 75 6e 69 71 75 65 20 6b 65 79 20   The unique key 
2620: 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20 61 76 61  is always.** ava
2630: 69 6c 61 62 6c 65 20 61 73 20 74 68 65 20 52 4f  ilable as the RO
2640: 57 49 44 2c 20 4f 49 44 2c 20 6f 72 20 5f 52 4f  WID, OID, or _RO
2650: 57 49 44 5f 20 63 6f 6c 75 6d 6e 2e 29 20 20 54  WID_ column.)  T
2660: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75  he following rou
2670: 74 69 6e 65 0a 2a 2a 20 72 65 74 75 72 6e 73 20  tine.** returns 
2680: 74 68 65 20 69 6e 74 65 67 65 72 20 6b 65 79 20  the integer key 
2690: 6f 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  of the most rece
26a0: 6e 74 20 69 6e 73 65 72 74 20 69 6e 20 74 68 65  nt insert in the
26b0: 20 64 61 74 61 62 61 73 65 2e 0a 2a 2f 0a 73 71   database..*/.sq
26c0: 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c 69 74  lite_int64 sqlit
26d0: 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
26e0: 6f 77 69 64 28 73 71 6c 69 74 65 33 2a 29 3b 0a  owid(sqlite3*);.
26f0: 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63  ./*.** This func
2700: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
2710: 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62   number of datab
2720: 61 73 65 20 72 6f 77 73 20 74 68 61 74 20 77 65  ase rows that we
2730: 72 65 20 63 68 61 6e 67 65 64 0a 2a 2a 20 28 6f  re changed.** (o
2740: 72 20 69 6e 73 65 72 74 65 64 20 6f 72 20 64 65  r inserted or de
2750: 6c 65 74 65 64 29 20 62 79 20 74 68 65 20 6d 6f  leted) by the mo
2760: 73 74 20 72 65 63 65 6e 74 20 53 51 4c 20 73 74  st recent SQL st
2770: 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 6c 79 0a 2a  atement.  Only.*
2780: 2a 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 61  * changes that a
2790: 72 65 20 64 69 72 65 63 74 6c 79 20 73 70 65 63  re directly spec
27a0: 69 66 69 65 64 20 62 79 20 74 68 65 20 49 4e 53  ified by the INS
27b0: 45 52 54 2c 20 55 50 44 41 54 45 2c 20 6f 72 0a  ERT, UPDATE, or.
27c0: 2a 2a 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  ** DELETE statem
27d0: 65 6e 74 20 61 72 65 20 63 6f 75 6e 74 65 64 2e  ent are counted.
27e0: 20 20 41 75 78 69 6c 69 61 72 79 20 63 68 61 6e    Auxiliary chan
27f0: 67 65 73 20 63 61 75 73 65 64 20 62 79 0a 2a 2a  ges caused by.**
2800: 20 74 72 69 67 67 65 72 73 20 61 72 65 20 6e 6f   triggers are no
2810: 74 20 63 6f 75 6e 74 65 64 2e 20 20 20 57 69 74  t counted.   Wit
2820: 68 69 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20  hin the body of 
2830: 61 20 74 72 69 67 67 65 72 2c 20 68 6f 77 65 76  a trigger, howev
2840: 65 72 2c 0a 2a 2a 20 74 68 65 20 73 71 6c 69 74  er,.** the sqlit
2850: 65 33 5f 63 68 61 6e 67 65 73 28 29 20 41 50 49  e3_changes() API
2860: 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 74   can be called t
2870: 6f 20 66 69 6e 64 20 74 68 65 20 6e 75 6d 62 65  o find the numbe
2880: 72 20 6f 66 0a 2a 2a 20 63 68 61 6e 67 65 73 20  r of.** changes 
2890: 69 6e 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  in the most rece
28a0: 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49  ntly completed I
28b0: 4e 53 45 52 54 2c 20 55 50 44 41 54 45 2c 20 6f  NSERT, UPDATE, o
28c0: 72 20 44 45 4c 45 54 45 0a 2a 2a 20 73 74 61 74  r DELETE.** stat
28d0: 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 74 68 65  ement within the
28e0: 20 62 6f 64 79 20 6f 66 20 74 68 65 20 74 72 69   body of the tri
28f0: 67 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20  gger..**.** All 
2900: 63 68 61 6e 67 65 73 20 61 72 65 20 63 6f 75 6e  changes are coun
2910: 74 65 64 2c 20 65 76 65 6e 20 69 66 20 74 68 65  ted, even if the
2920: 79 20 77 65 72 65 20 6c 61 74 65 72 20 75 6e 64  y were later und
2930: 6f 6e 65 20 62 79 20 61 0a 2a 2a 20 52 4f 4c 4c  one by a.** ROLL
2940: 42 41 43 4b 20 6f 72 20 41 42 4f 52 54 2e 20 20  BACK or ABORT.  
2950: 45 78 63 65 70 74 2c 20 63 68 61 6e 67 65 73 20  Except, changes 
2960: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2970: 63 72 65 61 74 69 6e 67 20 61 6e 64 0a 2a 2a 20  creating and.** 
2980: 64 72 6f 70 70 69 6e 67 20 74 61 62 6c 65 73 20  dropping tables 
2990: 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e  are not counted.
29a0: 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 63 61 6c 6c  .**.** If a call
29b0: 62 61 63 6b 20 69 6e 76 6f 6b 65 73 20 73 71 6c  back invokes sql
29c0: 69 74 65 33 5f 65 78 65 63 28 29 20 6f 72 20 73  ite3_exec() or s
29d0: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 72 65  qlite3_step() re
29e0: 63 75 72 73 69 76 65 6c 79 2c 0a 2a 2a 20 74 68  cursively,.** th
29f0: 65 6e 20 74 68 65 20 63 68 61 6e 67 65 73 20 69  en the changes i
2a00: 6e 20 74 68 65 20 69 6e 6e 65 72 2c 20 72 65 63  n the inner, rec
2a10: 75 72 73 69 76 65 20 63 61 6c 6c 20 61 72 65 20  ursive call are 
2a20: 63 6f 75 6e 74 65 64 20 74 6f 67 65 74 68 65 72  counted together
2a30: 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 63 68 61  .** with the cha
2a40: 6e 67 65 73 20 69 6e 20 74 68 65 20 6f 75 74 65  nges in the oute
2a50: 72 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 53 51  r call..**.** SQ
2a60: 4c 69 74 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  Lite implements 
2a70: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 22 44 45 4c  the command "DEL
2a80: 45 54 45 20 46 52 4f 4d 20 74 61 62 6c 65 22 20  ETE FROM table" 
2a90: 77 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20  without a WHERE 
2aa0: 63 6c 61 75 73 65 0a 2a 2a 20 62 79 20 64 72 6f  clause.** by dro
2ab0: 70 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61  pping and recrea
2ac0: 74 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20  ting the table. 
2ad0: 20 28 54 68 69 73 20 69 73 20 6d 75 63 68 20 66   (This is much f
2ae0: 61 73 74 65 72 20 74 68 61 6e 20 67 6f 69 6e 67  aster than going
2af0: 0a 2a 2a 20 74 68 72 6f 75 67 68 20 61 6e 64 20  .** through and 
2b00: 64 65 6c 65 74 69 6e 67 20 69 6e 64 69 76 69 64  deleting individ
2b10: 75 61 6c 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72  ual elements for
2b20: 6d 20 74 68 65 20 74 61 62 6c 65 2e 29 20 20 42  m the table.)  B
2b30: 65 63 61 75 73 65 20 6f 66 0a 2a 2a 20 74 68 69  ecause of.** thi
2b40: 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2c 20  s optimization, 
2b50: 74 68 65 20 63 68 61 6e 67 65 20 63 6f 75 6e 74  the change count
2b60: 20 66 6f 72 20 22 44 45 4c 45 54 45 20 46 52 4f   for "DELETE FRO
2b70: 4d 20 74 61 62 6c 65 22 20 77 69 6c 6c 20 62 65  M table" will be
2b80: 0a 2a 2a 20 7a 65 72 6f 20 72 65 67 61 72 64 6c  .** zero regardl
2b90: 65 73 73 20 6f 66 20 74 68 65 20 6e 75 6d 62 65  ess of the numbe
2ba0: 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 74 68  r of elements th
2bb0: 61 74 20 77 65 72 65 20 6f 72 69 67 69 6e 61 6c  at were original
2bc0: 6c 79 20 69 6e 20 74 68 65 0a 2a 2a 20 74 61 62  ly in the.** tab
2bd0: 6c 65 2e 20 54 6f 20 67 65 74 20 61 6e 20 61 63  le. To get an ac
2be0: 63 75 72 61 74 65 20 63 6f 75 6e 74 20 6f 66 20  curate count of 
2bf0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
2c00: 77 73 20 64 65 6c 65 74 65 64 2c 20 75 73 65 0a  ws deleted, use.
2c10: 2a 2a 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20  ** "DELETE FROM 
2c20: 74 61 62 6c 65 20 57 48 45 52 45 20 31 22 20 69  table WHERE 1" i
2c30: 6e 73 74 65 61 64 2e 0a 2a 2f 0a 69 6e 74 20 73  nstead..*/.int s
2c40: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 73  qlite3_changes(s
2c50: 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
2c60: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72   This function r
2c70: 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
2c80: 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 72 6f  r of database ro
2c90: 77 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65  ws that have bee
2ca0: 6e 0a 2a 2a 20 6d 6f 64 69 66 69 65 64 20 62 79  n.** modified by
2cb0: 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20   INSERT, UPDATE 
2cc0: 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  or DELETE statem
2cd0: 65 6e 74 73 20 73 69 6e 63 65 20 74 68 65 20 64  ents since the d
2ce0: 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 0a 2a  atabase handle.*
2cf0: 2a 20 77 61 73 20 6f 70 65 6e 65 64 2e 20 54 68  * was opened. Th
2d00: 69 73 20 69 6e 63 6c 75 64 65 73 20 55 50 44 41  is includes UPDA
2d10: 54 45 2c 20 49 4e 53 45 52 54 20 61 6e 64 20 44  TE, INSERT and D
2d20: 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73  ELETE statements
2d30: 20 65 78 65 63 75 74 65 64 0a 2a 2a 20 61 73 20   executed.** as 
2d40: 70 61 72 74 20 6f 66 20 74 72 69 67 67 65 72 20  part of trigger 
2d50: 70 72 6f 67 72 61 6d 73 2e 20 41 6c 6c 20 63 68  programs. All ch
2d60: 61 6e 67 65 73 20 61 72 65 20 63 6f 75 6e 74 65  anges are counte
2d70: 64 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65  d as soon as the
2d80: 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 74 68  .** statement th
2d90: 61 74 20 6d 61 6b 65 73 20 74 68 65 6d 20 69 73  at makes them is
2da0: 20 63 6f 6d 70 6c 65 74 65 64 20 28 77 68 65 6e   completed (when
2db0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68   the statement h
2dc0: 61 6e 64 6c 65 20 69 73 0a 2a 2a 20 70 61 73 73  andle is.** pass
2dd0: 65 64 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65  ed to sqlite3_re
2de0: 73 65 74 28 29 20 6f 72 20 73 71 6c 69 74 65 5f  set() or sqlite_
2df0: 66 69 6e 61 6c 69 73 65 28 29 29 2e 0a 2a 2a 0a  finalise())..**.
2e00: 2a 2a 20 53 51 4c 69 74 65 20 69 6d 70 6c 65 6d  ** SQLite implem
2e10: 65 6e 74 73 20 74 68 65 20 63 6f 6d 6d 61 6e 64  ents the command
2e20: 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 61   "DELETE FROM ta
2e30: 62 6c 65 22 20 77 69 74 68 6f 75 74 20 61 20 57  ble" without a W
2e40: 48 45 52 45 20 63 6c 61 75 73 65 0a 2a 2a 20 62  HERE clause.** b
2e50: 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72  y dropping and r
2e60: 65 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61  ecreating the ta
2e70: 62 6c 65 2e 20 20 28 54 68 69 73 20 69 73 20 6d  ble.  (This is m
2e80: 75 63 68 20 66 61 73 74 65 72 20 74 68 61 6e 20  uch faster than 
2e90: 67 6f 69 6e 67 0a 2a 2a 20 74 68 72 6f 75 67 68  going.** through
2ea0: 20 61 6e 64 20 64 65 6c 65 74 69 6e 67 20 69 6e   and deleting in
2eb0: 64 69 76 69 64 75 61 6c 20 65 6c 65 6d 65 6e 74  dividual element
2ec0: 73 20 66 6f 72 6d 20 74 68 65 20 74 61 62 6c 65  s form the table
2ed0: 2e 29 20 20 42 65 63 61 75 73 65 20 6f 66 0a 2a  .)  Because of.*
2ee0: 2a 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74  * this optimizat
2ef0: 69 6f 6e 2c 20 74 68 65 20 63 68 61 6e 67 65 20  ion, the change 
2f00: 63 6f 75 6e 74 20 66 6f 72 20 22 44 45 4c 45 54  count for "DELET
2f10: 45 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 77 69  E FROM table" wi
2f20: 6c 6c 20 62 65 0a 2a 2a 20 7a 65 72 6f 20 72 65  ll be.** zero re
2f30: 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20  gardless of the 
2f40: 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e  number of elemen
2f50: 74 73 20 74 68 61 74 20 77 65 72 65 20 6f 72 69  ts that were ori
2f60: 67 69 6e 61 6c 6c 79 20 69 6e 20 74 68 65 0a 2a  ginally in the.*
2f70: 2a 20 74 61 62 6c 65 2e 20 54 6f 20 67 65 74 20  * table. To get 
2f80: 61 6e 20 61 63 63 75 72 61 74 65 20 63 6f 75 6e  an accurate coun
2f90: 74 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20  t of the number 
2fa0: 6f 66 20 72 6f 77 73 20 64 65 6c 65 74 65 64 2c  of rows deleted,
2fb0: 20 75 73 65 0a 2a 2a 20 22 44 45 4c 45 54 45 20   use.** "DELETE 
2fc0: 46 52 4f 4d 20 74 61 62 6c 65 20 57 48 45 52 45  FROM table WHERE
2fd0: 20 31 22 20 69 6e 73 74 65 61 64 2e 0a 2a 2f 0a   1" instead..*/.
2fe0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 6f 74 61  int sqlite3_tota
2ff0: 6c 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65  l_changes(sqlite
3000: 33 2a 29 3b 0a 0a 2f 2a 20 54 68 69 73 20 66 75  3*);../* This fu
3010: 6e 63 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e  nction causes an
3020: 79 20 70 65 6e 64 69 6e 67 20 64 61 74 61 62 61  y pending databa
3030: 73 65 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20  se operation to 
3040: 61 62 6f 72 74 20 61 6e 64 0a 2a 2a 20 72 65 74  abort and.** ret
3050: 75 72 6e 20 61 74 20 69 74 73 20 65 61 72 6c 69  urn at its earli
3060: 65 73 74 20 6f 70 70 6f 72 74 75 6e 69 74 79 2e  est opportunity.
3070: 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69    This routine i
3080: 73 20 74 79 70 69 63 61 6c 6c 79 0a 2a 2a 20 63  s typically.** c
3090: 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
30a0: 65 20 74 6f 20 61 20 75 73 65 72 20 61 63 74 69  e to a user acti
30b0: 6f 6e 20 73 75 63 68 20 61 73 20 70 72 65 73 73  on such as press
30c0: 69 6e 67 20 22 43 61 6e 63 65 6c 22 0a 2a 2a 20  ing "Cancel".** 
30d0: 6f 72 20 43 74 72 6c 2d 43 20 77 68 65 72 65 20  or Ctrl-C where 
30e0: 74 68 65 20 75 73 65 72 20 77 61 6e 74 73 20 61  the user wants a
30f0: 20 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70 65 72   long query oper
3100: 61 74 69 6f 6e 20 74 6f 20 68 61 6c 74 0a 2a 2a  ation to halt.**
3110: 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 2a 2a   immediately..**
3120: 0a 2a 2a 20 49 74 20 69 73 20 73 61 66 65 20 74  .** It is safe t
3130: 6f 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75 74  o call this rout
3140: 69 6e 65 20 66 72 6f 6d 20 61 20 64 69 66 66 65  ine from a diffe
3150: 72 65 6e 74 20 74 68 72 65 61 64 20 74 68 61 74  rent thread that
3160: 20 74 68 65 0a 2a 2a 20 74 68 72 65 61 64 20 74   the.** thread t
3170: 68 61 74 20 69 73 20 63 75 72 72 65 6e 74 6c 79  hat is currently
3180: 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 64 61 74   running the dat
3190: 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 2e  abase operation.
31a0: 20 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65   .*/.void sqlite
31b0: 33 5f 69 6e 74 65 72 72 75 70 74 28 73 71 6c 69  3_interrupt(sqli
31c0: 74 65 33 2a 29 3b 0a 0a 0a 2f 2a 20 54 68 65 73  te3*);.../* Thes
31d0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75  e functions retu
31e0: 72 6e 20 74 72 75 65 20 69 66 20 74 68 65 20 67  rn true if the g
31f0: 69 76 65 6e 20 69 6e 70 75 74 20 73 74 72 69 6e  iven input strin
3200: 67 20 63 6f 6d 70 72 69 73 65 73 0a 2a 2a 20 6f  g comprises.** o
3210: 6e 65 20 6f 72 20 6d 6f 72 65 20 63 6f 6d 70 6c  ne or more compl
3220: 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ete SQL statemen
3230: 74 73 2e 20 46 6f 72 20 74 68 65 20 73 71 6c 69  ts. For the sqli
3240: 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29 20 63  te3_complete() c
3250: 61 6c 6c 2c 0a 2a 2a 20 74 68 65 20 70 61 72 61  all,.** the para
3260: 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 61 20  meter must be a 
3270: 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  nul-terminated U
3280: 54 46 2d 38 20 73 74 72 69 6e 67 2e 20 46 6f 72  TF-8 string. For
3290: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  .** sqlite3_comp
32a0: 6c 65 74 65 31 36 28 29 2c 20 61 20 6e 75 6c 2d  lete16(), a nul-
32b0: 74 65 72 6d 69 6e 61 74 65 64 20 6d 61 63 68 69  terminated machi
32c0: 6e 65 20 62 79 74 65 20 6f 72 64 65 72 20 55 54  ne byte order UT
32d0: 46 2d 31 36 20 73 74 72 69 6e 67 0a 2a 2a 20 69  F-16 string.** i
32e0: 73 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a  s required..**.*
32f0: 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69  * This routine i
3300: 73 20 75 73 65 66 75 6c 20 66 6f 72 20 63 6f 6d  s useful for com
3310: 6d 61 6e 64 2d 6c 69 6e 65 20 69 6e 70 75 74 20  mand-line input 
3320: 74 6f 20 73 65 65 20 6f 66 20 74 68 65 20 75 73  to see of the us
3330: 65 72 20 68 61 73 0a 2a 2a 20 65 6e 74 65 72 65  er has.** entere
3340: 64 20 61 20 63 6f 6d 70 6c 65 74 65 20 73 74 61  d a complete sta
3350: 74 65 6d 65 6e 74 20 6f 66 20 53 51 4c 20 6f 72  tement of SQL or
3360: 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   if the current 
3370: 73 74 61 74 65 6d 65 6e 74 20 6e 65 65 64 73 0a  statement needs.
3380: 2a 2a 20 74 6f 20 62 65 20 63 6f 6e 74 69 6e 75  ** to be continu
3390: 65 64 20 6f 6e 20 74 68 65 20 6e 65 78 74 20 6c  ed on the next l
33a0: 69 6e 65 2e 20 20 54 68 65 20 61 6c 67 6f 72 69  ine.  The algori
33b0: 74 68 6d 20 69 73 20 73 69 6d 70 6c 65 2e 20 20  thm is simple.  
33c0: 49 66 20 74 68 65 20 0a 2a 2a 20 6c 61 73 74 20  If the .** last 
33d0: 74 6f 6b 65 6e 20 6f 74 68 65 72 20 74 68 61 6e  token other than
33e0: 20 73 70 61 63 65 73 20 61 6e 64 20 63 6f 6d 6d   spaces and comm
33f0: 65 6e 74 73 20 69 73 20 61 20 73 65 6d 69 63 6f  ents is a semico
3400: 6c 6f 6e 2c 20 74 68 65 6e 20 72 65 74 75 72 6e  lon, then return
3410: 20 0a 2a 2a 20 74 72 75 65 2e 20 20 41 63 74 75   .** true.  Actu
3420: 61 6c 6c 79 2c 20 74 68 65 20 61 6c 67 6f 72 69  ally, the algori
3430: 74 68 6d 20 69 73 20 61 20 6c 69 74 74 6c 65 20  thm is a little 
3440: 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 64  more complicated
3450: 20 74 68 61 6e 20 74 68 61 74 0a 2a 2a 20 69 6e   than that.** in
3460: 20 6f 72 64 65 72 20 74 6f 20 64 65 61 6c 20 77   order to deal w
3470: 69 74 68 20 74 72 69 67 67 65 72 73 2c 20 62 75  ith triggers, bu
3480: 74 20 74 68 65 20 62 61 73 69 63 20 69 64 65 61  t the basic idea
3490: 20 69 73 20 74 68 65 20 73 61 6d 65 3a 20 20 74   is the same:  t
34a0: 68 65 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20  he.** statement 
34b0: 69 73 20 6e 6f 74 20 63 6f 6d 70 6c 65 74 65 20  is not complete 
34c0: 75 6e 6c 65 73 73 20 69 74 20 65 6e 64 73 20 69  unless it ends i
34d0: 6e 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 2e 0a 2a  n a semicolon..*
34e0: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  /.int sqlite3_co
34f0: 6d 70 6c 65 74 65 28 63 6f 6e 73 74 20 63 68 61  mplete(const cha
3500: 72 20 2a 73 71 6c 29 3b 0a 69 6e 74 20 73 71 6c  r *sql);.int sql
3510: 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
3520: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 29  const void *sql)
3530: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f  ;../*.** This ro
3540: 75 74 69 6e 65 20 69 64 65 6e 74 69 66 69 65 73  utine identifies
3550: 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63   a callback func
3560: 74 69 6f 6e 20 74 68 61 74 20 69 73 20 69 6e 76  tion that is inv
3570: 6f 6b 65 64 0a 2a 2a 20 77 68 65 6e 65 76 65 72  oked.** whenever
3580: 20 61 6e 20 61 74 74 65 6d 70 74 20 69 73 20 6d   an attempt is m
3590: 61 64 65 20 74 6f 20 6f 70 65 6e 20 61 20 64 61  ade to open a da
35a0: 74 61 62 61 73 65 20 74 61 62 6c 65 20 74 68 61  tabase table tha
35b0: 74 20 69 73 0a 2a 2a 20 63 75 72 72 65 6e 74 6c  t is.** currentl
35c0: 79 20 6c 6f 63 6b 65 64 20 62 79 20 61 6e 6f 74  y locked by anot
35d0: 68 65 72 20 70 72 6f 63 65 73 73 20 6f 72 20 74  her process or t
35e0: 68 72 65 61 64 2e 20 20 49 66 20 74 68 65 20 62  hread.  If the b
35f0: 75 73 79 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  usy callback.** 
3600: 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 73 71  is NULL, then sq
3610: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 72 65 74  lite3_exec() ret
3620: 75 72 6e 73 20 53 51 4c 49 54 45 5f 42 55 53 59  urns SQLITE_BUSY
3630: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 69 66 0a   immediately if.
3640: 2a 2a 20 69 74 20 66 69 6e 64 73 20 61 20 6c 6f  ** it finds a lo
3650: 63 6b 65 64 20 74 61 62 6c 65 2e 20 20 49 66 20  cked table.  If 
3660: 74 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63  the busy callbac
3670: 6b 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74  k is not NULL, t
3680: 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65  hen.** sqlite3_e
3690: 78 65 63 28 29 20 69 6e 76 6f 6b 65 73 20 74 68  xec() invokes th
36a0: 65 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20  e callback with 
36b0: 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2e 20 20  two arguments.  
36c0: 54 68 65 0a 2a 2a 20 66 69 72 73 74 20 61 72 67  The.** first arg
36d0: 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 68 61 6e  ument to the han
36e0: 64 6c 65 72 20 69 73 20 61 20 63 6f 70 79 20 6f  dler is a copy o
36f0: 66 20 74 68 65 20 76 6f 69 64 2a 20 70 6f 69 6e  f the void* poin
3700: 74 65 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  ter which.** is 
3710: 74 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  the third argume
3720: 6e 74 20 74 6f 20 74 68 69 73 20 72 6f 75 74 69  nt to this routi
3730: 6e 65 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  ne.  The second 
3740: 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 74  argument to.** t
3750: 68 65 20 68 61 6e 64 6c 65 72 20 69 73 20 74 68  he handler is th
3760: 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65  e number of time
3770: 73 20 74 68 61 74 20 74 68 65 20 62 75 73 79 20  s that the busy 
3780: 68 61 6e 64 6c 65 72 20 68 61 73 0a 2a 2a 20 62  handler has.** b
3790: 65 65 6e 20 69 6e 76 6f 6b 65 64 20 66 6f 72 20  een invoked for 
37a0: 74 68 69 73 20 6c 6f 63 6b 69 6e 67 20 65 76 65  this locking eve
37b0: 6e 74 2e 20 20 49 66 20 74 68 65 0a 2a 2a 20 62  nt.  If the.** b
37c0: 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  usy callback ret
37d0: 75 72 6e 73 20 30 2c 20 74 68 65 6e 20 73 71 6c  urns 0, then sql
37e0: 69 74 65 33 5f 65 78 65 63 28 29 20 69 6d 6d 65  ite3_exec() imme
37f0: 64 69 61 74 65 6c 79 20 72 65 74 75 72 6e 73 0a  diately returns.
3800: 2a 2a 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 20  ** SQLITE_BUSY. 
3810: 20 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   If the callback
3820: 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   returns non-zer
3830: 6f 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  o, then sqlite3_
3840: 65 78 65 63 28 29 0a 2a 2a 20 74 72 69 65 73 20  exec().** tries 
3850: 74 6f 20 6f 70 65 6e 20 74 68 65 20 74 61 62 6c  to open the tabl
3860: 65 20 61 67 61 69 6e 20 61 6e 64 20 74 68 65 20  e again and the 
3870: 63 79 63 6c 65 20 72 65 70 65 61 74 73 2e 0a 2a  cycle repeats..*
3880: 2a 0a 2a 2a 20 54 68 65 20 70 72 65 73 65 6e 63  *.** The presenc
3890: 65 20 6f 66 20 61 20 62 75 73 79 20 68 61 6e 64  e of a busy hand
38a0: 6c 65 72 20 64 6f 65 73 20 6e 6f 74 20 67 75 61  ler does not gua
38b0: 72 61 6e 74 65 65 20 74 68 61 74 0a 2a 2a 20 69  rantee that.** i
38c0: 74 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65  t will be invoke
38d0: 64 20 77 68 65 6e 20 74 68 65 72 65 20 69 73 20  d when there is 
38e0: 6c 6f 63 6b 20 63 6f 6e 74 65 6e 74 69 6f 6e 2e  lock contention.
38f0: 0a 2a 2a 20 49 66 20 53 51 4c 69 74 65 20 64 65  .** If SQLite de
3900: 74 65 72 6d 69 6e 65 73 20 74 68 61 74 20 69 6e  termines that in
3910: 76 6f 6b 69 6e 67 20 74 68 65 20 62 75 73 79 20  voking the busy 
3920: 68 61 6e 64 6c 65 72 20 63 6f 75 6c 64 20 72 65  handler could re
3930: 73 75 6c 74 20 69 6e 0a 2a 2a 20 61 20 64 65 61  sult in.** a dea
3940: 64 6c 6f 63 6b 2c 20 69 74 20 77 69 6c 6c 20 72  dlock, it will r
3950: 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 42 55 53  eturn SQLITE_BUS
3960: 59 20 69 6e 73 74 65 61 64 2e 0a 2a 2a 20 43 6f  Y instead..** Co
3970: 6e 73 69 64 65 72 20 61 20 73 63 65 6e 61 72 69  nsider a scenari
3980: 6f 20 77 68 65 72 65 20 6f 6e 65 20 70 72 6f 63  o where one proc
3990: 65 73 73 20 69 73 20 68 6f 6c 64 69 6e 67 20 61  ess is holding a
39a0: 20 72 65 61 64 20 6c 6f 63 6b 20 74 68 61 74 0a   read lock that.
39b0: 2a 2a 20 69 74 20 69 73 20 74 72 79 69 6e 67 20  ** it is trying 
39c0: 74 6f 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 20  to promote to a 
39d0: 72 65 73 65 72 76 65 64 20 6c 6f 63 6b 20 61 6e  reserved lock an
39e0: 64 0a 2a 2a 20 61 20 73 65 63 6f 6e 64 20 70 72  d.** a second pr
39f0: 6f 63 65 73 73 20 69 73 20 68 6f 6c 64 69 6e 67  ocess is holding
3a00: 20 61 20 72 65 73 65 72 76 65 64 20 6c 6f 63 6b   a reserved lock
3a10: 20 74 68 61 74 20 69 74 20 69 73 20 74 72 79 69   that it is tryi
3a20: 6e 67 0a 2a 2a 20 74 6f 20 70 72 6f 6d 6f 74 65  ng.** to promote
3a30: 20 74 6f 20 61 6e 20 65 78 63 6c 75 73 69 76 65   to an exclusive
3a40: 20 6c 6f 63 6b 2e 20 20 54 68 65 20 66 69 72 73   lock.  The firs
3a50: 74 20 70 72 6f 63 65 73 73 20 63 61 6e 6e 6f 74  t process cannot
3a60: 20 70 72 6f 63 65 65 64 0a 2a 2a 20 62 65 63 61   proceed.** beca
3a70: 75 73 65 20 69 74 20 69 73 20 62 6c 6f 63 6b 65  use it is blocke
3a80: 64 20 62 79 20 74 68 65 20 73 65 63 6f 6e 64 20  d by the second 
3a90: 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 20 70  and the second p
3aa0: 72 6f 63 65 73 73 20 63 61 6e 6e 6f 74 0a 2a 2a  rocess cannot.**
3ab0: 20 70 72 6f 63 65 65 64 20 62 65 63 61 75 73 65   proceed because
3ac0: 20 69 74 20 69 73 20 62 6c 6f 63 6b 65 64 20 62   it is blocked b
3ad0: 79 20 74 68 65 20 66 69 72 73 74 2e 20 20 49 66  y the first.  If
3ae0: 20 62 6f 74 68 20 70 72 6f 63 65 73 73 65 73 0a   both processes.
3af0: 2a 2a 20 69 6e 76 6f 6b 65 20 74 68 65 20 62 75  ** invoke the bu
3b00: 73 79 20 68 61 6e 64 6c 65 72 73 2c 20 6e 65 69  sy handlers, nei
3b10: 74 68 65 72 20 77 69 6c 6c 20 6d 61 6b 65 20 61  ther will make a
3b20: 6e 79 20 70 72 6f 67 72 65 73 73 2e 20 20 54 68  ny progress.  Th
3b30: 65 72 65 66 6f 72 65 2c 0a 2a 2a 20 53 51 4c 69  erefore,.** SQLi
3b40: 74 65 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  te returns SQLIT
3b50: 45 5f 42 55 53 59 20 66 6f 72 20 74 68 65 20 66  E_BUSY for the f
3b60: 69 72 73 74 20 70 72 6f 63 65 73 73 2c 20 68 6f  irst process, ho
3b70: 70 69 6e 67 20 74 68 61 74 20 74 68 69 73 0a 2a  ping that this.*
3b80: 2a 20 77 69 6c 6c 20 69 6e 64 75 63 65 20 74 68  * will induce th
3b90: 65 20 66 69 72 73 74 20 70 72 6f 63 65 73 73 20  e first process 
3ba0: 74 6f 20 72 65 6c 65 61 73 65 20 69 74 73 20 72  to release its r
3bb0: 65 61 64 20 6c 6f 63 6b 20 61 6e 64 20 61 6c 6c  ead lock and all
3bc0: 6f 77 0a 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64  ow.** the second
3bd0: 20 70 72 6f 63 65 73 73 20 74 6f 20 70 72 6f 63   process to proc
3be0: 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 64  eed..**.** The d
3bf0: 65 66 61 75 6c 74 20 62 75 73 79 20 63 61 6c 6c  efault busy call
3c00: 62 61 63 6b 20 69 73 20 4e 55 4c 4c 2e 0a 2a 2a  back is NULL..**
3c10: 0a 2a 2a 20 53 71 6c 69 74 65 20 69 73 20 72 65  .** Sqlite is re
3c20: 2d 65 6e 74 72 61 6e 74 2c 20 73 6f 20 74 68 65  -entrant, so the
3c30: 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 6d 61   busy handler ma
3c40: 79 20 73 74 61 72 74 20 61 20 6e 65 77 20 71 75  y start a new qu
3c50: 65 72 79 2e 20 0a 2a 2a 20 28 49 74 20 69 73 20  ery. .** (It is 
3c60: 6e 6f 74 20 63 6c 65 61 72 20 77 68 79 20 61 6e  not clear why an
3c70: 79 6f 6e 65 20 77 6f 75 6c 64 20 65 76 65 72 20  yone would ever 
3c80: 77 61 6e 74 20 74 6f 20 64 6f 20 74 68 69 73 2c  want to do this,
3c90: 20 62 75 74 20 69 74 0a 2a 2a 20 69 73 20 61 6c   but it.** is al
3ca0: 6c 6f 77 65 64 2c 20 69 6e 20 74 68 65 6f 72 79  lowed, in theory
3cb0: 2e 29 20 20 42 75 74 20 74 68 65 20 62 75 73 79  .)  But the busy
3cc0: 20 68 61 6e 64 6c 65 72 20 6d 61 79 20 6e 6f 74   handler may not
3cd0: 20 63 6c 6f 73 65 20 74 68 65 0a 2a 2a 20 64 61   close the.** da
3ce0: 74 61 62 61 73 65 2e 20 20 43 6c 6f 73 69 6e 67  tabase.  Closing
3cf0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 72   the database fr
3d00: 6f 6d 20 61 20 62 75 73 79 20 68 61 6e 64 6c 65  om a busy handle
3d10: 72 20 77 69 6c 6c 20 64 65 6c 65 74 65 20 0a 2a  r will delete .*
3d20: 2a 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65  * data structure
3d30: 73 20 6f 75 74 20 66 72 6f 6d 20 75 6e 64 65 72  s out from under
3d40: 20 74 68 65 20 65 78 65 63 75 74 69 6e 67 20 71   the executing q
3d50: 75 65 72 79 20 61 6e 64 20 77 69 6c 6c 20 0a 2a  uery and will .*
3d60: 2a 20 70 72 6f 62 61 62 6c 79 20 72 65 73 75 6c  * probably resul
3d70: 74 20 69 6e 20 61 20 63 6f 72 65 64 75 6d 70 2e  t in a coredump.
3d80: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
3d90: 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 73 71 6c  busy_handler(sql
3da0: 69 74 65 33 2a 2c 20 69 6e 74 28 2a 29 28 76 6f  ite3*, int(*)(vo
3db0: 69 64 2a 2c 69 6e 74 29 2c 20 76 6f 69 64 2a 29  id*,int), void*)
3dc0: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f  ;../*.** This ro
3dd0: 75 74 69 6e 65 20 73 65 74 73 20 61 20 62 75 73  utine sets a bus
3de0: 79 20 68 61 6e 64 6c 65 72 20 74 68 61 74 20 73  y handler that s
3df0: 6c 65 65 70 73 20 66 6f 72 20 61 20 77 68 69 6c  leeps for a whil
3e00: 65 20 77 68 65 6e 20 61 0a 2a 2a 20 74 61 62 6c  e when a.** tabl
3e10: 65 20 69 73 20 6c 6f 63 6b 65 64 2e 20 20 54 68  e is locked.  Th
3e20: 65 20 68 61 6e 64 6c 65 72 20 77 69 6c 6c 20 73  e handler will s
3e30: 6c 65 65 70 20 6d 75 6c 74 69 70 6c 65 20 74 69  leep multiple ti
3e40: 6d 65 73 20 75 6e 74 69 6c 20 0a 2a 2a 20 61 74  mes until .** at
3e50: 20 6c 65 61 73 74 20 22 6d 73 22 20 6d 69 6c 6c   least "ms" mill
3e60: 65 73 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65  eseconds of slee
3e70: 70 69 6e 67 20 68 61 76 65 20 62 65 65 6e 20 64  ping have been d
3e80: 6f 6e 65 2e 20 20 41 66 74 65 72 0a 2a 2a 20 22  one.  After.** "
3e90: 6d 73 22 20 6d 69 6c 6c 65 73 65 63 6f 6e 64 73  ms" milleseconds
3ea0: 20 6f 66 20 73 6c 65 65 70 69 6e 67 2c 20 74 68   of sleeping, th
3eb0: 65 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e  e handler return
3ec0: 73 20 30 20 77 68 69 63 68 0a 2a 2a 20 63 61 75  s 0 which.** cau
3ed0: 73 65 73 20 73 71 6c 69 74 65 33 5f 65 78 65 63  ses sqlite3_exec
3ee0: 28 29 20 74 6f 20 72 65 74 75 72 6e 20 53 51 4c  () to return SQL
3ef0: 49 54 45 5f 42 55 53 59 2e 0a 2a 2a 0a 2a 2a 20  ITE_BUSY..**.** 
3f00: 43 61 6c 6c 69 6e 67 20 74 68 69 73 20 72 6f 75  Calling this rou
3f10: 74 69 6e 65 20 77 69 74 68 20 61 6e 20 61 72 67  tine with an arg
3f20: 75 6d 65 6e 74 20 6c 65 73 73 20 74 68 61 6e 20  ument less than 
3f30: 6f 72 20 65 71 75 61 6c 20 74 6f 20 7a 65 72 6f  or equal to zero
3f40: 0a 2a 2a 20 74 75 72 6e 73 20 6f 66 66 20 61 6c  .** turns off al
3f50: 6c 20 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2e  l busy handlers.
3f60: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
3f70: 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 73 71 6c  busy_timeout(sql
3f80: 69 74 65 33 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a  ite3*, int ms);.
3f90: 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 6e 65 78 74  ./*.** This next
3fa0: 20 72 6f 75 74 69 6e 65 20 69 73 20 72 65 61 6c   routine is real
3fb0: 6c 79 20 6a 75 73 74 20 61 20 77 72 61 70 70 65  ly just a wrappe
3fc0: 72 20 61 72 6f 75 6e 64 20 73 71 6c 69 74 65 33  r around sqlite3
3fd0: 5f 65 78 65 63 28 29 2e 0a 2a 2a 20 49 6e 73 74  _exec()..** Inst
3fe0: 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20  ead of invoking 
3ff0: 61 20 75 73 65 72 2d 73 75 70 70 6c 69 65 64 20  a user-supplied 
4000: 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 65 61 63  callback for eac
4010: 68 20 72 6f 77 20 6f 66 20 74 68 65 0a 2a 2a 20  h row of the.** 
4020: 72 65 73 75 6c 74 2c 20 74 68 69 73 20 72 6f 75  result, this rou
4030: 74 69 6e 65 20 72 65 6d 65 6d 62 65 72 73 20 65  tine remembers e
4040: 61 63 68 20 72 6f 77 20 6f 66 20 74 68 65 20 72  ach row of the r
4050: 65 73 75 6c 74 20 69 6e 20 6d 65 6d 6f 72 79 0a  esult in memory.
4060: 2a 2a 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ** obtained from
4070: 20 6d 61 6c 6c 6f 63 28 29 2c 20 74 68 65 6e 20   malloc(), then 
4080: 72 65 74 75 72 6e 73 20 61 6c 6c 20 6f 66 20 74  returns all of t
4090: 68 65 20 72 65 73 75 6c 74 20 61 66 74 65 72 20  he result after 
40a0: 74 68 65 0a 2a 2a 20 71 75 65 72 79 20 68 61 73  the.** query has
40b0: 20 66 69 6e 69 73 68 65 64 2e 20 0a 2a 2a 0a 2a   finished. .**.*
40c0: 2a 20 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c  * As an example,
40d0: 20 73 75 70 70 6f 73 65 20 74 68 65 20 71 75 65   suppose the que
40e0: 72 79 20 72 65 73 75 6c 74 20 77 68 65 72 65 20  ry result where 
40f0: 74 68 69 73 20 74 61 62 6c 65 3a 0a 2a 2a 0a 2a  this table:.**.*
4100: 2a 20 20 20 20 20 20 20 20 4e 61 6d 65 20 20 20  *        Name   
4110: 20 20 20 20 20 7c 20 41 67 65 0a 2a 2a 20 20 20       | Age.**   
4120: 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d       -----------
4130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20  ------------.** 
4140: 20 20 20 20 20 20 20 41 6c 69 63 65 20 20 20 20         Alice    
4150: 20 20 20 7c 20 34 33 0a 2a 2a 20 20 20 20 20 20     | 43.**      
4160: 20 20 42 6f 62 20 20 20 20 20 20 20 20 20 7c 20    Bob         | 
4170: 32 38 0a 2a 2a 20 20 20 20 20 20 20 20 43 69 6e  28.**        Cin
4180: 64 79 20 20 20 20 20 20 20 7c 20 32 31 0a 2a 2a  dy       | 21.**
4190: 0a 2a 2a 20 49 66 20 74 68 65 20 33 72 64 20 61  .** If the 3rd a
41a0: 72 67 75 6d 65 6e 74 20 77 65 72 65 20 26 61 7a  rgument were &az
41b0: 52 65 73 75 6c 74 20 74 68 65 6e 20 61 66 74 65  Result then afte
41c0: 72 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72  r the function r
41d0: 65 74 75 72 6e 73 0a 2a 2a 20 61 7a 52 65 73 75  eturns.** azResu
41e0: 6c 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20  lt will contain 
41f0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 61  the following da
4200: 74 61 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20  ta:.**.**       
4210: 20 61 7a 52 65 73 75 6c 74 5b 30 5d 20 3d 20 22   azResult[0] = "
4220: 4e 61 6d 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20  Name";.**       
4230: 20 61 7a 52 65 73 75 6c 74 5b 31 5d 20 3d 20 22   azResult[1] = "
4240: 41 67 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  Age";.**        
4250: 61 7a 52 65 73 75 6c 74 5b 32 5d 20 3d 20 22 41  azResult[2] = "A
4260: 6c 69 63 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20  lice";.**       
4270: 20 61 7a 52 65 73 75 6c 74 5b 33 5d 20 3d 20 22   azResult[3] = "
4280: 34 33 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61  43";.**        a
4290: 7a 52 65 73 75 6c 74 5b 34 5d 20 3d 20 22 42 6f  zResult[4] = "Bo
42a0: 62 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  b";.**        az
42b0: 52 65 73 75 6c 74 5b 35 5d 20 3d 20 22 32 38 22  Result[5] = "28"
42c0: 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
42d0: 73 75 6c 74 5b 36 5d 20 3d 20 22 43 69 6e 64 79  sult[6] = "Cindy
42e0: 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  ";.**        azR
42f0: 65 73 75 6c 74 5b 37 5d 20 3d 20 22 32 31 22 3b  esult[7] = "21";
4300: 0a 2a 2a 0a 2a 2a 20 4e 6f 74 69 63 65 20 74 68  .**.** Notice th
4310: 61 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 65  at there is an e
4320: 78 74 72 61 20 72 6f 77 20 6f 66 20 64 61 74 61  xtra row of data
4330: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
4340: 63 6f 6c 75 6d 6e 0a 2a 2a 20 68 65 61 64 65 72  column.** header
4350: 73 2e 20 20 42 75 74 20 74 68 65 20 2a 6e 72 6f  s.  But the *nro
4360: 77 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  w return value i
4370: 73 20 73 74 69 6c 6c 20 33 2e 20 20 2a 6e 63 6f  s still 3.  *nco
4380: 6c 75 6d 6e 20 69 73 0a 2a 2a 20 73 65 74 20 74  lumn is.** set t
4390: 6f 20 32 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c  o 2.  In general
43a0: 2c 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  , the number of 
43b0: 76 61 6c 75 65 73 20 69 6e 73 65 72 74 65 64 20  values inserted 
43c0: 69 6e 74 6f 20 61 7a 52 65 73 75 6c 74 0a 2a 2a  into azResult.**
43d0: 20 77 69 6c 6c 20 62 65 20 28 28 2a 6e 72 6f 77   will be ((*nrow
43e0: 29 20 2b 20 31 29 2a 28 2a 6e 63 6f 6c 75 6d 6e  ) + 1)*(*ncolumn
43f0: 29 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 74  )..**.** After t
4400: 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74  he calling funct
4410: 69 6f 6e 20 68 61 73 20 66 69 6e 69 73 68 65 64  ion has finished
4420: 20 75 73 69 6e 67 20 74 68 65 20 72 65 73 75 6c   using the resul
4430: 74 2c 20 69 74 20 73 68 6f 75 6c 64 20 0a 2a 2a  t, it should .**
4440: 20 70 61 73 73 20 74 68 65 20 72 65 73 75 6c 74   pass the result
4450: 20 64 61 74 61 20 70 6f 69 6e 74 65 72 20 74 6f   data pointer to
4460: 20 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61   sqlite3_free_ta
4470: 62 6c 65 28 29 20 69 6e 20 6f 72 64 65 72 20 74  ble() in order t
4480: 6f 20 0a 2a 2a 20 72 65 6c 65 61 73 65 20 74 68  o .** release th
4490: 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 61  e memory that wa
44a0: 73 20 6d 61 6c 6c 6f 63 2d 65 64 2e 20 20 42 65  s malloc-ed.  Be
44b0: 63 61 75 73 65 20 6f 66 20 74 68 65 20 77 61 79  cause of the way
44c0: 20 74 68 65 20 0a 2a 2a 20 6d 61 6c 6c 6f 63 28   the .** malloc(
44d0: 29 20 68 61 70 70 65 6e 73 2c 20 74 68 65 20 63  ) happens, the c
44e0: 61 6c 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  alling function 
44f0: 6d 75 73 74 20 6e 6f 74 20 74 72 79 20 74 6f 20  must not try to 
4500: 63 61 6c 6c 20 0a 2a 2a 20 66 72 65 65 28 29 20  call .** free() 
4510: 64 69 72 65 63 74 6c 79 2e 20 20 4f 6e 6c 79 20  directly.  Only 
4520: 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
4530: 6c 65 28 29 20 69 73 20 61 62 6c 65 20 74 6f 20  le() is able to 
4540: 72 65 6c 65 61 73 65 20 0a 2a 2a 20 74 68 65 20  release .** the 
4550: 6d 65 6d 6f 72 79 20 70 72 6f 70 65 72 6c 79 20  memory properly 
4560: 61 6e 64 20 73 61 66 65 6c 79 2e 0a 2a 2a 0a 2a  and safely..**.*
4570: 2a 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  * The return val
4580: 75 65 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69  ue of this routi
4590: 6e 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  ne is the same a
45a0: 73 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 65  s from sqlite3_e
45b0: 78 65 63 28 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71  xec()..*/.int sq
45c0: 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
45d0: 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 20 20 20  .  sqlite3*,    
45e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41 6e             /* An
45f0: 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 2a   open database *
4600: 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
4610: 73 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  sql,       /* SQ
4620: 4c 20 74 6f 20 62 65 20 65 78 65 63 75 74 65 64  L to be executed
4630: 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 2a 72 65   */.  char ***re
4640: 73 75 6c 74 70 2c 20 20 20 20 20 20 20 2f 2a 20  sultp,       /* 
4650: 52 65 73 75 6c 74 20 77 72 69 74 74 65 6e 20 74  Result written t
4660: 6f 20 61 20 63 68 61 72 20 2a 5b 5d 20 20 74 68  o a char *[]  th
4670: 61 74 20 74 68 69 73 20 70 6f 69 6e 74 73 20 74  at this points t
4680: 6f 20 2a 2f 0a 20 20 69 6e 74 20 2a 6e 72 6f 77  o */.  int *nrow
4690: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ,             /*
46a0: 20 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c   Number of resul
46b0: 74 20 72 6f 77 73 20 77 72 69 74 74 65 6e 20 68  t rows written h
46c0: 65 72 65 20 2a 2f 0a 20 20 69 6e 74 20 2a 6e 63  ere */.  int *nc
46d0: 6f 6c 75 6d 6e 2c 20 20 20 20 20 20 20 20 20 20  olumn,          
46e0: 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65 73  /* Number of res
46f0: 75 6c 74 20 63 6f 6c 75 6d 6e 73 20 77 72 69 74  ult columns writ
4700: 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20 63 68  ten here */.  ch
4710: 61 72 20 2a 2a 65 72 72 6d 73 67 20 20 20 20 20  ar **errmsg     
4720: 20 20 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73       /* Error ms
4730: 67 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a  g written here *
4740: 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 61 6c 6c  /.);../*.** Call
4750: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 74 6f   this routine to
4760: 20 66 72 65 65 20 74 68 65 20 6d 65 6d 6f 72 79   free the memory
4770: 20 74 68 61 74 20 73 71 6c 69 74 65 33 5f 67 65   that sqlite3_ge
4780: 74 5f 74 61 62 6c 65 28 29 20 61 6c 6c 6f 63 61  t_table() alloca
4790: 74 65 64 2e 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c  ted..*/.void sql
47a0: 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28  ite3_free_table(
47b0: 63 68 61 72 20 2a 2a 72 65 73 75 6c 74 29 3b 0a  char **result);.
47c0: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f  ./*.** The follo
47d0: 77 69 6e 67 20 72 6f 75 74 69 6e 65 73 20 61 72  wing routines ar
47e0: 65 20 76 61 72 69 61 6e 74 73 20 6f 66 20 74 68  e variants of th
47f0: 65 20 22 73 70 72 69 6e 74 66 28 29 22 20 66 72  e "sprintf()" fr
4800: 6f 6d 20 74 68 65 0a 2a 2a 20 73 74 61 6e 64 61  om the.** standa
4810: 72 64 20 43 20 6c 69 62 72 61 72 79 2e 20 20 54  rd C library.  T
4820: 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72  he resulting str
4830: 69 6e 67 20 69 73 20 77 72 69 74 74 65 6e 20 69  ing is written i
4840: 6e 74 6f 20 6d 65 6d 6f 72 79 0a 2a 2a 20 6f 62  nto memory.** ob
4850: 74 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c  tained from mall
4860: 6f 63 28 29 20 73 6f 20 74 68 61 74 20 74 68 65  oc() so that the
4870: 72 65 20 69 73 20 6e 65 76 65 72 20 61 20 70 6f  re is never a po
4880: 73 73 69 62 6c 69 74 79 20 6f 66 20 62 75 66 66  ssiblity of buff
4890: 65 72 0a 2a 2a 20 6f 76 65 72 66 6c 6f 77 2e 20  er.** overflow. 
48a0: 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20   These routines 
48b0: 61 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 73  also implement s
48c0: 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 66  ome additional f
48d0: 6f 72 6d 61 74 74 69 6e 67 0a 2a 2a 20 6f 70 74  ormatting.** opt
48e0: 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73  ions that are us
48f0: 65 66 75 6c 20 66 6f 72 20 63 6f 6e 73 74 72 75  eful for constru
4900: 63 74 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  cting SQL statem
4910: 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ents..**.** The 
4920: 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
4930: 20 62 79 20 74 68 65 73 65 20 72 6f 75 74 69 6e   by these routin
4940: 65 73 20 73 68 6f 75 6c 64 20 62 65 20 66 72 65  es should be fre
4950: 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 0a 2a 2a  ed by calling.**
4960: 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 2e   sqlite3_free().
4970: 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20 6f 66 20 74 68  .**.** All of th
4980: 65 20 75 73 75 61 6c 20 70 72 69 6e 74 66 20 66  e usual printf f
4990: 6f 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e  ormatting option
49a0: 73 20 61 70 70 6c 79 2e 20 20 49 6e 20 61 64 64  s apply.  In add
49b0: 69 74 69 6f 6e 2c 20 74 68 65 72 65 0a 2a 2a 20  ition, there.** 
49c0: 69 73 20 61 20 22 25 71 22 20 6f 70 74 69 6f 6e  is a "%q" option
49d0: 2e 20 20 25 71 20 77 6f 72 6b 73 20 6c 69 6b 65  .  %q works like
49e0: 20 25 73 20 69 6e 20 74 68 61 74 20 69 74 20 73   %s in that it s
49f0: 75 62 73 74 69 74 75 74 65 73 20 61 20 6e 75 6c  ubstitutes a nul
4a00: 6c 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20  l-terminated.** 
4a10: 73 74 72 69 6e 67 20 66 72 6f 6d 20 74 68 65 20  string from the 
4a20: 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2e 20 20  argument list.  
4a30: 42 75 74 20 25 71 20 61 6c 73 6f 20 64 6f 75 62  But %q also doub
4a40: 6c 65 73 20 65 76 65 72 79 20 27 5c 27 27 20 63  les every '\'' c
4a50: 68 61 72 61 63 74 65 72 2e 0a 2a 2a 20 25 71 20  haracter..** %q 
4a60: 69 73 20 64 65 73 69 67 6e 65 64 20 66 6f 72 20  is designed for 
4a70: 75 73 65 20 69 6e 73 69 64 65 20 61 20 73 74 72  use inside a str
4a80: 69 6e 67 20 6c 69 74 65 72 61 6c 2e 20 20 42 79  ing literal.  By
4a90: 20 64 6f 75 62 6c 69 6e 67 20 65 61 63 68 20 27   doubling each '
4aa0: 5c 27 27 0a 2a 2a 20 63 68 61 72 61 63 74 65 72  \''.** character
4ab0: 20 69 74 20 65 73 63 61 70 65 73 20 74 68 61 74   it escapes that
4ac0: 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 61   character and a
4ad0: 6c 6c 6f 77 73 20 69 74 20 74 6f 20 62 65 20 69  llows it to be i
4ae0: 6e 73 65 72 74 65 64 20 69 6e 74 6f 0a 2a 2a 20  nserted into.** 
4af0: 74 68 65 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a  the string..**.*
4b00: 2a 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 73  * For example, s
4b10: 6f 20 73 6f 6d 65 20 73 74 72 69 6e 67 20 76 61  o some string va
4b20: 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73 20  riable contains 
4b30: 74 65 78 74 20 61 73 20 66 6f 6c 6c 6f 77 73 3a  text as follows:
4b40: 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 63 68 61 72  .**.**      char
4b50: 20 2a 7a 54 65 78 74 20 3d 20 22 49 74 27 73 20   *zText = "It's 
4b60: 61 20 68 61 70 70 79 20 64 61 79 21 22 3b 0a 2a  a happy day!";.*
4b70: 2a 0a 2a 2a 20 57 65 20 63 61 6e 20 75 73 65 20  *.** We can use 
4b80: 74 68 69 73 20 74 65 78 74 20 69 6e 20 61 6e 20  this text in an 
4b90: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 73  SQL statement as
4ba0: 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20   follows:.**.** 
4bb0: 20 20 20 20 20 63 68 61 72 20 2a 7a 20 3d 20 73       char *z = s
4bc0: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 22  qlite3_mprintf("
4bd0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 54 41 42 4c  INSERT INTO TABL
4be0: 45 53 28 27 25 71 27 29 22 2c 20 7a 54 65 78 74  ES('%q')", zText
4bf0: 29 3b 0a 2a 2a 20 20 20 20 20 20 73 71 6c 69 74  );.**      sqlit
4c00: 65 33 5f 65 78 65 63 28 64 62 2c 20 7a 2c 20 63  e3_exec(db, z, c
4c10: 61 6c 6c 62 61 63 6b 31 2c 20 30 2c 20 30 29 3b  allback1, 0, 0);
4c20: 0a 2a 2a 20 20 20 20 20 20 73 71 6c 69 74 65 33  .**      sqlite3
4c30: 5f 66 72 65 65 28 7a 29 3b 0a 2a 2a 0a 2a 2a 20  _free(z);.**.** 
4c40: 42 65 63 61 75 73 65 20 74 68 65 20 25 71 20 66  Because the %q f
4c50: 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 69 73 20  ormat string is 
4c60: 75 73 65 64 2c 20 74 68 65 20 27 5c 27 27 20 63  used, the '\'' c
4c70: 68 61 72 61 63 74 65 72 20 69 6e 20 7a 54 65 78  haracter in zTex
4c80: 74 0a 2a 2a 20 69 73 20 65 73 63 61 70 65 64 20  t.** is escaped 
4c90: 61 6e 64 20 74 68 65 20 53 51 4c 20 67 65 6e 65  and the SQL gene
4ca0: 72 61 74 65 64 20 69 73 20 61 73 20 66 6f 6c 6c  rated is as foll
4cb0: 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20  ows:.**.**      
4cc0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c  INSERT INTO tabl
4cd0: 65 31 20 56 41 4c 55 45 53 28 27 49 74 27 27 73  e1 VALUES('It''s
4ce0: 20 61 20 68 61 70 70 79 20 64 61 79 21 27 29 0a   a happy day!').
4cf0: 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 73 20 63 6f  **.** This is co
4d00: 72 72 65 63 74 2e 20 20 48 61 64 20 77 65 20 75  rrect.  Had we u
4d10: 73 65 64 20 25 73 20 69 6e 73 74 65 61 64 20 6f  sed %s instead o
4d20: 66 20 25 71 2c 20 74 68 65 20 67 65 6e 65 72 61  f %q, the genera
4d30: 74 65 64 20 53 51 4c 0a 2a 2a 20 77 6f 75 6c 64  ted SQL.** would
4d40: 20 68 61 76 65 20 6c 6f 6f 6b 65 64 20 6c 69 6b   have looked lik
4d50: 65 20 74 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 20 20  e this:.**.**   
4d60: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
4d70: 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27 49 74  able1 VALUES('It
4d80: 27 73 20 61 20 68 61 70 70 79 20 64 61 79 21 27  's a happy day!'
4d90: 29 3b 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 73 65  );.**.** This se
4da0: 63 6f 6e 64 20 65 78 61 6d 70 6c 65 20 69 73 20  cond example is 
4db0: 61 6e 20 53 51 4c 20 73 79 6e 74 61 78 20 65 72  an SQL syntax er
4dc0: 72 6f 72 2e 20 20 41 73 20 61 20 67 65 6e 65 72  ror.  As a gener
4dd0: 61 6c 20 72 75 6c 65 20 79 6f 75 0a 2a 2a 20 73  al rule you.** s
4de0: 68 6f 75 6c 64 20 61 6c 77 61 79 73 20 75 73 65  hould always use
4df0: 20 25 71 20 69 6e 73 74 65 61 64 20 6f 66 20 25   %q instead of %
4e00: 73 20 77 68 65 6e 20 69 6e 73 65 72 74 69 6e 67  s when inserting
4e10: 20 74 65 78 74 20 69 6e 74 6f 20 61 20 73 74 72   text into a str
4e20: 69 6e 67 20 0a 2a 2a 20 6c 69 74 65 72 61 6c 2e  ing .** literal.
4e30: 0a 2a 2f 0a 63 68 61 72 20 2a 73 71 6c 69 74 65  .*/.char *sqlite
4e40: 33 5f 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20  3_mprintf(const 
4e50: 63 68 61 72 2a 2c 2e 2e 2e 29 3b 0a 63 68 61 72  char*,...);.char
4e60: 20 2a 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e   *sqlite3_vmprin
4e70: 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20  tf(const char*, 
4e80: 76 61 5f 6c 69 73 74 29 3b 0a 63 68 61 72 20 2a  va_list);.char *
4e90: 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
4ea0: 28 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74  (int,char*,const
4eb0: 20 63 68 61 72 2a 2c 20 2e 2e 2e 29 3b 0a 0a 2f   char*, ...);../
4ec0: 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73  *.** SQLite uses
4ed0: 20 69 74 73 20 6f 77 6e 20 6d 65 6d 6f 72 79 20   its own memory 
4ee0: 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 4f 6e 20 6d  allocator.  On m
4ef0: 61 6e 79 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e  any installation
4f00: 73 2c 20 74 68 69 73 0a 2a 2a 20 6d 65 6d 6f 72  s, this.** memor
4f10: 79 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  y allocator is i
4f20: 64 65 6e 74 69 63 61 6c 20 74 6f 20 74 68 65 20  dentical to the 
4f30: 73 74 61 6e 64 61 72 64 20 6d 61 6c 6c 6f 63 28  standard malloc(
4f40: 29 2f 72 65 61 6c 6c 6f 63 28 29 2f 66 72 65 65  )/realloc()/free
4f50: 28 29 0a 2a 2a 20 61 6e 64 20 63 61 6e 20 62 65  ().** and can be
4f60: 20 75 73 65 64 20 69 6e 74 65 72 63 68 61 6e 67   used interchang
4f70: 61 62 6c 65 2e 20 20 4f 6e 20 6f 74 68 65 72 73  able.  On others
4f80: 2c 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  , the implementa
4f90: 74 69 6f 6e 73 20 61 72 65 0a 2a 2a 20 64 69 66  tions are.** dif
4fa0: 66 65 72 65 6e 74 2e 20 20 46 6f 72 20 6d 61 78  ferent.  For max
4fb0: 69 6d 75 6d 20 70 6f 72 74 61 62 69 6c 69 74 79  imum portability
4fc0: 2c 20 69 74 20 69 73 20 62 65 73 74 20 6e 6f 74  , it is best not
4fd0: 20 74 6f 20 6d 69 78 20 63 61 6c 6c 73 0a 2a 2a   to mix calls.**
4fe0: 20 74 6f 20 74 68 65 20 73 74 61 6e 64 61 72 64   to the standard
4ff0: 20 6d 61 6c 6c 6f 63 2f 72 65 61 6c 6c 6f 63 2f   malloc/realloc/
5000: 66 72 65 65 20 77 69 74 68 20 74 68 65 20 73 71  free with the sq
5010: 6c 69 74 65 20 76 65 72 73 69 6f 6e 73 2e 0a 2a  lite versions..*
5020: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
5030: 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b 0a 76 6f 69  malloc(int);.voi
5040: 64 20 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  d *sqlite3_reall
5050: 6f 63 28 76 6f 69 64 2a 2c 20 69 6e 74 29 3b 0a  oc(void*, int);.
5060: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
5070: 65 28 76 6f 69 64 2a 29 3b 0a 0a 23 69 66 6e 64  e(void*);..#ifnd
5080: 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  ef SQLITE_OMIT_A
5090: 55 54 48 4f 52 49 5a 41 54 49 4f 4e 0a 2f 2a 0a  UTHORIZATION./*.
50a0: 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20  ** This routine 
50b0: 72 65 67 69 73 74 65 72 73 20 61 20 63 61 6c 6c  registers a call
50c0: 62 61 63 6b 20 77 69 74 68 20 74 68 65 20 53 51  back with the SQ
50d0: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 54  Lite library.  T
50e0: 68 65 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69  he.** callback i
50f0: 73 20 69 6e 76 6f 6b 65 64 20 28 61 74 20 63 6f  s invoked (at co
5100: 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 6e 6f 74 20  mpile-time, not 
5110: 61 74 20 72 75 6e 2d 74 69 6d 65 29 20 66 6f 72  at run-time) for
5120: 20 65 61 63 68 0a 2a 2a 20 61 74 74 65 6d 70 74   each.** attempt
5130: 20 74 6f 20 61 63 63 65 73 73 20 61 20 63 6f 6c   to access a col
5140: 75 6d 6e 20 6f 66 20 61 20 74 61 62 6c 65 20 69  umn of a table i
5150: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  n the database. 
5160: 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a   The callback.**
5170: 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f   returns SQLITE_
5180: 4f 4b 20 69 66 20 61 63 63 65 73 73 20 69 73 20  OK if access is 
5190: 61 6c 6c 6f 77 65 64 2c 20 53 51 4c 49 54 45 5f  allowed, SQLITE_
51a0: 44 45 4e 59 20 69 66 20 74 68 65 20 65 6e 74 69  DENY if the enti
51b0: 72 65 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d  re.** SQL statem
51c0: 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 62  ent should be ab
51d0: 6f 72 74 65 64 20 77 69 74 68 20 61 6e 20 65 72  orted with an er
51e0: 72 6f 72 20 61 6e 64 20 53 51 4c 49 54 45 5f 49  ror and SQLITE_I
51f0: 47 4e 4f 52 45 0a 2a 2a 20 69 66 20 74 68 65 20  GNORE.** if the 
5200: 63 6f 6c 75 6d 6e 20 73 68 6f 75 6c 64 20 62 65  column should be
5210: 20 74 72 65 61 74 65 64 20 61 73 20 61 20 4e 55   treated as a NU
5220: 4c 4c 20 76 61 6c 75 65 2e 0a 2a 2f 0a 69 6e 74  LL value..*/.int
5230: 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74   sqlite3_set_aut
5240: 68 6f 72 69 7a 65 72 28 0a 20 20 73 71 6c 69 74  horizer(.  sqlit
5250: 65 33 2a 2c 0a 20 20 69 6e 74 20 28 2a 78 41 75  e3*,.  int (*xAu
5260: 74 68 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f  th)(void*,int,co
5270: 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20  nst char*,const 
5280: 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72  char*,const char
5290: 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 0a  *,const char*),.
52a0: 20 20 76 6f 69 64 20 2a 70 55 73 65 72 44 61 74    void *pUserDat
52b0: 61 0a 29 3b 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  a.);.#endif../*.
52c0: 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  ** The second pa
52d0: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61  rameter to the a
52e0: 63 63 65 73 73 20 61 75 74 68 6f 72 69 7a 61 74  ccess authorizat
52f0: 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 61 62 6f  ion function abo
5300: 76 65 20 77 69 6c 6c 0a 2a 2a 20 62 65 20 6f 6e  ve will.** be on
5310: 65 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20  e of the values 
5320: 62 65 6c 6f 77 2e 20 20 54 68 65 73 65 20 76 61  below.  These va
5330: 6c 75 65 73 20 73 69 67 6e 69 66 79 20 77 68 61  lues signify wha
5340: 74 20 6b 69 6e 64 20 6f 66 20 6f 70 65 72 61 74  t kind of operat
5350: 69 6f 6e 0a 2a 2a 20 69 73 20 74 6f 20 62 65 20  ion.** is to be 
5360: 61 75 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65  authorized.  The
5370: 20 33 72 64 20 61 6e 64 20 34 74 68 20 70 61 72   3rd and 4th par
5380: 61 6d 65 74 65 72 73 20 74 6f 20 74 68 65 20 61  ameters to the a
5390: 75 74 68 6f 72 69 7a 61 74 69 6f 6e 0a 2a 2a 20  uthorization.** 
53a0: 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
53b0: 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20 4e   parameters or N
53c0: 55 4c 4c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ULL depending on
53d0: 20 77 68 69 63 68 20 6f 66 20 74 68 65 20 66 6f   which of the fo
53e0: 6c 6c 6f 77 69 6e 67 0a 2a 2a 20 63 6f 64 65 73  llowing.** codes
53f0: 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20   is used as the 
5400: 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
5410: 2e 20 20 54 68 65 20 35 74 68 20 70 61 72 61 6d  .  The 5th param
5420: 65 74 65 72 20 69 73 20 74 68 65 20 6e 61 6d 65  eter is the name
5430: 0a 2a 2a 20 6f 66 20 74 68 65 20 64 61 74 61 62  .** of the datab
5440: 61 73 65 20 28 22 6d 61 69 6e 22 2c 20 22 74 65  ase ("main", "te
5450: 6d 70 22 2c 20 65 74 63 2e 29 20 69 66 20 61 70  mp", etc.) if ap
5460: 70 6c 69 63 61 62 6c 65 2e 20 20 54 68 65 20 36  plicable.  The 6
5470: 74 68 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20  th parameter.** 
5480: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
5490: 68 65 20 69 6e 6e 65 72 2d 6d 6f 73 74 20 74 72  he inner-most tr
54a0: 69 67 67 65 72 20 6f 72 20 76 69 65 77 20 74 68  igger or view th
54b0: 61 74 20 69 73 20 72 65 73 70 6f 6e 73 69 62 6c  at is responsibl
54c0: 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 61 63 63  e for.** the acc
54d0: 65 73 73 20 61 74 74 65 6d 70 74 20 6f 72 20 4e  ess attempt or N
54e0: 55 4c 4c 20 69 66 20 74 68 69 73 20 61 63 63 65  ULL if this acce
54f0: 73 73 20 61 74 74 65 6d 70 74 20 69 73 20 64 69  ss attempt is di
5500: 72 65 63 74 6c 79 20 66 72 6f 6d 20 0a 2a 2a 20  rectly from .** 
5510: 69 6e 70 75 74 20 53 51 4c 20 63 6f 64 65 2e 0a  input SQL code..
5520: 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20  **.**           
5530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
5550: 72 67 2d 33 20 20 20 20 20 20 20 20 20 20 20 41  rg-3           A
5560: 72 67 2d 34 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  rg-4.*/.#define 
5570: 53 51 4c 49 54 45 5f 43 4f 50 59 20 20 20 20 20  SQLITE_COPY     
5580: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 20               0  
5590: 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
55a0: 20 20 20 20 46 69 6c 65 20 4e 61 6d 65 20 20 20      File Name   
55b0: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
55c0: 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 49 4e 44  QLITE_CREATE_IND
55d0: 45 58 20 20 20 20 20 20 20 20 20 20 31 20 20 20  EX          1   
55e0: 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20  /* Index Name   
55f0: 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
5600: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
5610: 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 41 42 4c  LITE_CREATE_TABL
5620: 45 20 20 20 20 20 20 20 20 20 20 32 20 20 20 2f  E          2   /
5630: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
5640: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
5650: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
5660: 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f  ITE_CREATE_TEMP_
5670: 49 4e 44 45 58 20 20 20 20 20 33 20 20 20 2f 2a  INDEX     3   /*
5680: 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20   Index Name     
5690: 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
56a0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
56b0: 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 54  TE_CREATE_TEMP_T
56c0: 41 42 4c 45 20 20 20 20 20 34 20 20 20 2f 2a 20  ABLE     4   /* 
56d0: 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
56e0: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
56f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
5700: 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 54 52  E_CREATE_TEMP_TR
5710: 49 47 47 45 52 20 20 20 35 20 20 20 2f 2a 20 54  IGGER   5   /* T
5720: 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54  rigger Name    T
5730: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
5740: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
5750: 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 56 49 45  _CREATE_TEMP_VIE
5760: 57 20 20 20 20 20 20 36 20 20 20 2f 2a 20 56 69  W      6   /* Vi
5770: 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55  ew Name       NU
5780: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
5790: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
57a0: 43 52 45 41 54 45 5f 54 52 49 47 47 45 52 20 20  CREATE_TRIGGER  
57b0: 20 20 20 20 20 20 37 20 20 20 2f 2a 20 54 72 69        7   /* Tri
57c0: 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62  gger Name    Tab
57d0: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a  le Name      */.
57e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
57f0: 52 45 41 54 45 5f 56 49 45 57 20 20 20 20 20 20  REATE_VIEW      
5800: 20 20 20 20 20 38 20 20 20 2f 2a 20 56 69 65 77       8   /* View
5810: 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c   Name       NULL
5820: 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
5830: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 45  define SQLITE_DE
5840: 4c 45 54 45 20 20 20 20 20 20 20 20 20 20 20 20  LETE            
5850: 20 20 20 20 39 20 20 20 2f 2a 20 54 61 62 6c 65      9   /* Table
5860: 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
5870: 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
5880: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
5890: 50 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20  P_INDEX         
58a0: 20 20 31 30 20 20 20 2f 2a 20 49 6e 64 65 78 20    10   /* Index 
58b0: 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20  Name      Table 
58c0: 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
58d0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
58e0: 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20  _TABLE          
58f0: 20 31 31 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e   11   /* Table N
5900: 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  ame      NULL   
5910: 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
5920: 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
5930: 54 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 20  TEMP_INDEX      
5940: 31 32 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61  12   /* Index Na
5950: 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61  me      Table Na
5960: 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
5970: 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54  ne SQLITE_DROP_T
5980: 45 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 20 31  EMP_TABLE      1
5990: 33 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  3   /* Table Nam
59a0: 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
59b0: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
59c0: 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45  e SQLITE_DROP_TE
59d0: 4d 50 5f 54 52 49 47 47 45 52 20 20 20 20 31 34  MP_TRIGGER    14
59e0: 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61     /* Trigger Na
59f0: 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65  me    Table Name
5a00: 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
5a10: 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d   SQLITE_DROP_TEM
5a20: 50 5f 56 49 45 57 20 20 20 20 20 20 20 31 35 20  P_VIEW       15 
5a30: 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20    /* View Name  
5a40: 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
5a50: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
5a60: 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 52 49 47  SQLITE_DROP_TRIG
5a70: 47 45 52 20 20 20 20 20 20 20 20 20 31 36 20 20  GER         16  
5a80: 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65   /* Trigger Name
5a90: 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20      Table Name  
5aa0: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
5ab0: 51 4c 49 54 45 5f 44 52 4f 50 5f 56 49 45 57 20  QLITE_DROP_VIEW 
5ac0: 20 20 20 20 20 20 20 20 20 20 20 31 37 20 20 20             17   
5ad0: 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20  /* View Name    
5ae0: 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
5af0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
5b00: 4c 49 54 45 5f 49 4e 53 45 52 54 20 20 20 20 20  LITE_INSERT     
5b10: 20 20 20 20 20 20 20 20 20 20 31 38 20 20 20 2f            18   /
5b20: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
5b30: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
5b40: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
5b50: 49 54 45 5f 50 52 41 47 4d 41 20 20 20 20 20 20  ITE_PRAGMA      
5b60: 20 20 20 20 20 20 20 20 20 31 39 20 20 20 2f 2a           19   /*
5b70: 20 50 72 61 67 6d 61 20 4e 61 6d 65 20 20 20 20   Pragma Name    
5b80: 20 31 73 74 20 61 72 67 20 6f 72 20 4e 55 4c 4c   1st arg or NULL
5b90: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
5ba0: 54 45 5f 52 45 41 44 20 20 20 20 20 20 20 20 20  TE_READ         
5bb0: 20 20 20 20 20 20 20 20 32 30 20 20 20 2f 2a 20          20   /* 
5bc0: 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
5bd0: 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20 20 20  Column Name     
5be0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
5bf0: 45 5f 53 45 4c 45 43 54 20 20 20 20 20 20 20 20  E_SELECT        
5c00: 20 20 20 20 20 20 20 32 31 20 20 20 2f 2a 20 4e         21   /* N
5c10: 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 4e  ULL            N
5c20: 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
5c30: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
5c40: 5f 54 52 41 4e 53 41 43 54 49 4f 4e 20 20 20 20  _TRANSACTION    
5c50: 20 20 20 20 20 20 32 32 20 20 20 2f 2a 20 4e 55        22   /* NU
5c60: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 4e 55  LL            NU
5c70: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
5c80: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5c90: 55 50 44 41 54 45 20 20 20 20 20 20 20 20 20 20  UPDATE          
5ca0: 20 20 20 20 20 32 33 20 20 20 2f 2a 20 54 61 62       23   /* Tab
5cb0: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c  le Name      Col
5cc0: 75 6d 6e 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a  umn Name     */.
5cd0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41  #define SQLITE_A
5ce0: 54 54 41 43 48 20 20 20 20 20 20 20 20 20 20 20  TTACH           
5cf0: 20 20 20 20 32 34 20 20 20 2f 2a 20 46 69 6c 65      24   /* File
5d00: 6e 61 6d 65 20 20 20 20 20 20 20 20 4e 55 4c 4c  name        NULL
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
5d20: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 45  define SQLITE_DE
5d30: 54 41 43 48 20 20 20 20 20 20 20 20 20 20 20 20  TACH            
5d40: 20 20 20 32 35 20 20 20 2f 2a 20 44 61 74 61 62     25   /* Datab
5d50: 61 73 65 20 4e 61 6d 65 20 20 20 4e 55 4c 4c 20  ase Name   NULL 
5d60: 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
5d70: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 4c 54  efine SQLITE_ALT
5d80: 45 52 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20  ER_TABLE        
5d90: 20 20 32 36 20 20 20 2f 2a 20 44 61 74 61 62 61    26   /* Databa
5da0: 73 65 20 4e 61 6d 65 20 20 20 54 61 62 6c 65 20  se Name   Table 
5db0: 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
5dc0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 49 4e  fine SQLITE_REIN
5dd0: 44 45 58 20 20 20 20 20 20 20 20 20 20 20 20 20  DEX             
5de0: 20 32 37 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e   27   /* Index N
5df0: 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  ame      NULL   
5e00: 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
5e10: 69 6e 65 20 53 51 4c 49 54 45 5f 41 4e 41 4c 59  ine SQLITE_ANALY
5e20: 5a 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ZE              
5e30: 32 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  28   /* Table Na
5e40: 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
5e50: 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
5e60: 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
5e70: 5f 56 54 41 42 4c 45 20 20 20 20 20 20 20 20 32  _VTABLE        2
5e80: 39 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  9   /* Table Nam
5e90: 65 20 20 20 20 20 20 4d 6f 64 75 6c 65 20 4e 61  e      Module Na
5ea0: 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  me     */.#defin
5eb0: 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 56 54  e SQLITE_DROP_VT
5ec0: 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 33 30  ABLE          30
5ed0: 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
5ee0: 20 20 20 20 20 20 4d 6f 64 75 6c 65 20 4e 61 6d        Module Nam
5ef0: 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65  e     */.#define
5f00: 20 53 51 4c 49 54 45 5f 46 55 4e 43 54 49 4f 4e   SQLITE_FUNCTION
5f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 33 31 20               31 
5f20: 20 20 2f 2a 20 46 75 6e 63 74 69 6f 6e 20 4e 61    /* Function Na
5f30: 6d 65 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20  me   NULL       
5f40: 20 20 20 20 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54       */../*.** T
5f50: 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
5f60: 6f 66 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61  of the authoriza
5f70: 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 73 68  tion function sh
5f80: 6f 75 6c 64 20 62 65 20 6f 6e 65 20 6f 66 20 74  ould be one of t
5f90: 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  he.** following 
5fa0: 63 6f 6e 73 74 61 6e 74 73 3a 0a 2a 2f 0a 2f 2a  constants:.*/./*
5fb0: 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f   #define SQLITE_
5fc0: 4f 4b 20 20 30 20 20 20 2f 2f 20 41 6c 6c 6f 77  OK  0   // Allow
5fd0: 20 61 63 63 65 73 73 20 28 54 68 69 73 20 69 73   access (This is
5fe0: 20 61 63 74 75 61 6c 6c 79 20 64 65 66 69 6e 65   actually define
5ff0: 64 20 61 62 6f 76 65 29 20 2a 2f 0a 23 64 65 66  d above) */.#def
6000: 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 4e 59 20  ine SQLITE_DENY 
6010: 20 20 31 20 20 20 2f 2a 20 41 62 6f 72 74 20 74    1   /* Abort t
6020: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
6030: 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 2a   with an error *
6040: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
6050: 5f 49 47 4e 4f 52 45 20 32 20 20 20 2f 2a 20 44  _IGNORE 2   /* D
6060: 6f 6e 27 74 20 61 6c 6c 6f 77 20 61 63 63 65 73  on't allow acces
6070: 73 2c 20 62 75 74 20 64 6f 6e 27 74 20 67 65 6e  s, but don't gen
6080: 65 72 61 74 65 20 61 6e 20 65 72 72 6f 72 20 2a  erate an error *
6090: 2f 0a 0a 2f 2a 0a 2a 2a 20 52 65 67 69 73 74 65  /../*.** Registe
60a0: 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72  r a function for
60b0: 20 74 72 61 63 69 6e 67 20 53 51 4c 20 63 6f 6d   tracing SQL com
60c0: 6d 61 6e 64 20 65 76 61 6c 75 61 74 69 6f 6e 2e  mand evaluation.
60d0: 20 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 0a 2a    The function.*
60e0: 2a 20 72 65 67 69 73 74 65 72 65 64 20 62 79 20  * registered by 
60f0: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20  sqlite3_trace() 
6100: 69 73 20 69 6e 76 6f 6b 65 64 20 61 74 20 74 68  is invoked at th
6110: 65 20 66 69 72 73 74 20 73 71 6c 69 74 65 33 5f  e first sqlite3_
6120: 73 74 65 70 28 29 0a 2a 2a 20 66 6f 72 20 74 68  step().** for th
6130: 65 20 65 76 61 6c 75 61 74 69 6f 6e 20 6f 66 20  e evaluation of 
6140: 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  an SQL statement
6150: 2e 20 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20  .  The function 
6160: 72 65 67 69 73 74 65 72 65 64 20 62 79 0a 2a 2a  registered by.**
6170: 20 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65   sqlite3_profile
6180: 28 29 20 72 75 6e 73 20 61 74 20 74 68 65 20 65  () runs at the e
6190: 6e 64 20 6f 66 20 65 61 63 68 20 53 51 4c 20 73  nd of each SQL s
61a0: 74 61 74 65 6d 65 6e 74 20 61 6e 64 20 69 6e 63  tatement and inc
61b0: 6c 75 64 65 73 0a 2a 2a 20 69 6e 66 6f 72 6d 61  ludes.** informa
61c0: 74 69 6f 6e 20 6f 6e 20 68 6f 77 20 6c 6f 6e 67  tion on how long
61d0: 20 74 68 61 74 20 73 74 61 74 65 6d 65 6e 74 20   that statement 
61e0: 72 61 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ran..**.** The s
61f0: 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
6200: 20 41 50 49 20 69 73 20 63 75 72 72 65 6e 74 6c   API is currentl
6210: 79 20 63 6f 6e 73 69 64 65 72 65 64 20 65 78 70  y considered exp
6220: 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 0a 2a 2a  erimental and.**
6230: 20 69 73 20 73 75 62 6a 65 63 74 20 74 6f 20 63   is subject to c
6240: 68 61 6e 67 65 2e 0a 2a 2f 0a 76 6f 69 64 20 2a  hange..*/.void *
6250: 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 73 71  sqlite3_trace(sq
6260: 6c 69 74 65 33 2a 2c 20 76 6f 69 64 28 2a 78 54  lite3*, void(*xT
6270: 72 61 63 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73  race)(void*,cons
6280: 74 20 63 68 61 72 2a 29 2c 20 76 6f 69 64 2a 29  t char*), void*)
6290: 3b 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  ;.void *sqlite3_
62a0: 70 72 6f 66 69 6c 65 28 73 71 6c 69 74 65 33 2a  profile(sqlite3*
62b0: 2c 0a 20 20 20 76 6f 69 64 28 2a 78 50 72 6f 66  ,.   void(*xProf
62c0: 69 6c 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74  ile)(void*,const
62d0: 20 63 68 61 72 2a 2c 73 71 6c 69 74 65 5f 75 69   char*,sqlite_ui
62e0: 6e 74 36 34 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a  nt64), void*);..
62f0: 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69  /*.** This routi
6300: 6e 65 20 63 6f 6e 66 69 67 75 72 65 73 20 61 20  ne configures a 
6310: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
6320: 6e 20 2d 20 74 68 65 20 70 72 6f 67 72 65 73 73  n - the progress
6330: 20 63 61 6c 6c 62 61 63 6b 20 2d 20 74 68 61 74   callback - that
6340: 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65 64 20 70  .** is invoked p
6350: 65 72 69 6f 64 69 63 61 6c 6c 79 20 64 75 72 69  eriodically duri
6360: 6e 67 20 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20  ng long running 
6370: 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
6380: 5f 65 78 65 63 28 29 2c 0a 2a 2a 20 73 71 6c 69  _exec(),.** sqli
6390: 74 65 33 5f 73 74 65 70 28 29 20 61 6e 64 20 73  te3_step() and s
63a0: 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
63b0: 28 29 2e 20 41 6e 20 65 78 61 6d 70 6c 65 20 75  (). An example u
63c0: 73 65 20 66 6f 72 20 74 68 69 73 20 41 50 49 20  se for this API 
63d0: 69 73 20 74 6f 20 0a 2a 2a 20 6b 65 65 70 20 61  is to .** keep a
63e0: 20 47 55 49 20 75 70 64 61 74 65 64 20 64 75 72   GUI updated dur
63f0: 69 6e 67 20 61 20 6c 61 72 67 65 20 71 75 65 72  ing a large quer
6400: 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 6f  y..**.** The pro
6410: 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 69  gress callback i
6420: 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66  s invoked once f
6430: 6f 72 20 65 76 65 72 79 20 4e 20 76 69 72 74 75  or every N virtu
6440: 61 6c 20 6d 61 63 68 69 6e 65 20 6f 70 63 6f 64  al machine opcod
6450: 65 73 2c 0a 2a 2a 20 77 68 65 72 65 20 4e 20 69  es,.** where N i
6460: 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  s the second arg
6470: 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 66 75  ument to this fu
6480: 6e 63 74 69 6f 6e 2e 20 54 68 65 20 70 72 6f 67  nction. The prog
6490: 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  ress callback.**
64a0: 20 69 74 73 65 6c 66 20 69 73 20 69 64 65 6e 74   itself is ident
64b0: 69 66 69 65 64 20 62 79 20 74 68 65 20 74 68 69  ified by the thi
64c0: 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  rd argument to t
64d0: 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68  his function. Th
64e0: 65 20 66 6f 75 72 74 68 0a 2a 2a 20 61 72 67 75  e fourth.** argu
64f0: 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 66 75 6e  ment to this fun
6500: 63 74 69 6f 6e 20 69 73 20 61 20 76 6f 69 64 20  ction is a void 
6510: 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20 74  pointer passed t
6520: 6f 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 63  o the progress c
6530: 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74  allback.** funct
6540: 69 6f 6e 20 65 61 63 68 20 74 69 6d 65 20 69 74  ion each time it
6550: 20 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a   is invoked..**.
6560: 2a 2a 20 49 66 20 61 20 63 61 6c 6c 20 74 6f 20  ** If a call to 
6570: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 2c 20  sqlite3_exec(), 
6580: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 6f  sqlite3_step() o
6590: 72 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61  r sqlite3_get_ta
65a0: 62 6c 65 28 29 20 72 65 73 75 6c 74 73 20 0a 2a  ble() results .*
65b0: 2a 20 69 6e 20 6c 65 73 73 20 74 68 61 6e 20 4e  * in less than N
65c0: 20 6f 70 63 6f 64 65 73 20 62 65 69 6e 67 20 65   opcodes being e
65d0: 78 65 63 75 74 65 64 2c 20 74 68 65 6e 20 74 68  xecuted, then th
65e0: 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62  e progress callb
65f0: 61 63 6b 20 69 73 20 6e 6f 74 0a 2a 2a 20 69 6e  ack is not.** in
6600: 76 6f 6b 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 54 6f  voked..** .** To
6610: 20 72 65 6d 6f 76 65 20 74 68 65 20 70 72 6f 67   remove the prog
6620: 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 61 6c  ress callback al
6630: 74 6f 67 65 74 68 65 72 2c 20 70 61 73 73 20 4e  together, pass N
6640: 55 4c 4c 20 61 73 20 74 68 65 20 74 68 69 72 64  ULL as the third
6650: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  .** argument to 
6660: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a  this function..*
6670: 2a 0a 2a 2a 20 49 66 20 74 68 65 20 70 72 6f 67  *.** If the prog
6680: 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 72 65  ress callback re
6690: 74 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 6f  turns a result o
66a0: 74 68 65 72 20 74 68 61 6e 20 30 2c 20 74 68 65  ther than 0, the
66b0: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 0a 2a  n the current .*
66c0: 2a 20 71 75 65 72 79 20 69 73 20 69 6d 6d 65 64  * query is immed
66d0: 69 61 74 65 6c 79 20 74 65 72 6d 69 6e 61 74 65  iately terminate
66e0: 64 20 61 6e 64 20 61 6e 79 20 64 61 74 61 62 61  d and any databa
66f0: 73 65 20 63 68 61 6e 67 65 73 20 72 6f 6c 6c 65  se changes rolle
6700: 64 20 62 61 63 6b 2e 20 49 66 20 74 68 65 0a 2a  d back. If the.*
6710: 2a 20 71 75 65 72 79 20 77 61 73 20 70 61 72 74  * query was part
6720: 20 6f 66 20 61 20 6c 61 72 67 65 72 20 74 72 61   of a larger tra
6730: 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 6e 20 74  nsaction, then t
6740: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  he transaction i
6750: 73 20 6e 6f 74 20 72 6f 6c 6c 65 64 0a 2a 2a 20  s not rolled.** 
6760: 62 61 63 6b 20 61 6e 64 20 72 65 6d 61 69 6e 73  back and remains
6770: 20 61 63 74 69 76 65 2e 20 54 68 65 20 73 71 6c   active. The sql
6780: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
6790: 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f   returns SQLITE_
67a0: 41 42 4f 52 54 2e 20 0a 2a 2a 0a 2a 2a 2a 2a 2a  ABORT. .**.*****
67b0: 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45 58  ** THIS IS AN EX
67c0: 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41  PERIMENTAL API A
67d0: 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f  ND IS SUBJECT TO
67e0: 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a   CHANGE ******.*
67f0: 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70  /.void sqlite3_p
6800: 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
6810: 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 2c 20 69  sqlite3*, int, i
6820: 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76 6f  nt(*)(void*), vo
6830: 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 67  id*);../*.** Reg
6840: 69 73 74 65 72 20 61 20 63 61 6c 6c 62 61 63 6b  ister a callback
6850: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
6860: 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76 65 72  invoked whenever
6870: 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69   a new transacti
6880: 6f 6e 0a 2a 2a 20 69 73 20 63 6f 6d 6d 69 74 74  on.** is committ
6890: 65 64 2e 20 20 54 68 65 20 70 41 72 67 20 61 72  ed.  The pArg ar
68a0: 67 75 6d 65 6e 74 20 69 73 20 70 61 73 73 65 64  gument is passed
68b0: 20 74 68 72 6f 75 67 68 20 74 6f 20 74 68 65 20   through to the 
68c0: 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 63 61 6c  callback..** cal
68d0: 6c 62 61 63 6b 2e 20 20 49 66 20 74 68 65 20 63  lback.  If the c
68e0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
68f0: 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   returns non-zer
6900: 6f 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d  o, then the comm
6910: 69 74 0a 2a 2a 20 69 73 20 63 6f 6e 76 65 72 74  it.** is convert
6920: 65 64 20 69 6e 74 6f 20 61 20 72 6f 6c 6c 62 61  ed into a rollba
6930: 63 6b 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 6f  ck..**.** If ano
6940: 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 20 77 61  ther function wa
6950: 73 20 70 72 65 76 69 6f 75 73 6c 79 20 72 65 67  s previously reg
6960: 69 73 74 65 72 65 64 2c 20 69 74 73 20 70 41 72  istered, its pAr
6970: 67 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  g value is retur
6980: 6e 65 64 2e 0a 2a 2a 20 4f 74 68 65 72 77 69 73  ned..** Otherwis
6990: 65 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e  e NULL is return
69a0: 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74  ed..**.** Regist
69b0: 65 72 69 6e 67 20 61 20 4e 55 4c 4c 20 66 75 6e  ering a NULL fun
69c0: 63 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ction disables t
69d0: 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a  he callback..**.
69e0: 2a 2a 2a 2a 2a 2a 2a 20 54 48 49 53 20 49 53 20  ******* THIS IS 
69f0: 41 4e 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20  AN EXPERIMENTAL 
6a00: 41 50 49 20 41 4e 44 20 49 53 20 53 55 42 4a 45  API AND IS SUBJE
6a10: 43 54 20 54 4f 20 43 48 41 4e 47 45 20 2a 2a 2a  CT TO CHANGE ***
6a20: 2a 2a 2a 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  ***.*/.void *sql
6a30: 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b  ite3_commit_hook
6a40: 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 28 2a  (sqlite3*, int(*
6a50: 29 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29  )(void*), void*)
6a60: 3b 0a 0a 2f 2a 0a 2a 2a 20 4f 70 65 6e 20 74 68  ;../*.** Open th
6a70: 65 20 73 71 6c 69 74 65 20 64 61 74 61 62 61 73  e sqlite databas
6a80: 65 20 66 69 6c 65 20 22 66 69 6c 65 6e 61 6d 65  e file "filename
6a90: 22 2e 20 20 54 68 65 20 22 66 69 6c 65 6e 61 6d  ".  The "filenam
6aa0: 65 22 20 69 73 20 55 54 46 2d 38 0a 2a 2a 20 65  e" is UTF-8.** e
6ab0: 6e 63 6f 64 65 64 20 66 6f 72 20 73 71 6c 69 74  ncoded for sqlit
6ac0: 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 55 54  e3_open() and UT
6ad0: 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 69 6e 20  F-16 encoded in 
6ae0: 74 68 65 20 6e 61 74 69 76 65 20 62 79 74 65 20  the native byte 
6af0: 6f 72 64 65 72 0a 2a 2a 20 66 6f 72 20 73 71 6c  order.** for sql
6b00: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 20 20  ite3_open16().  
6b10: 41 6e 20 73 71 6c 69 74 65 33 2a 20 68 61 6e 64  An sqlite3* hand
6b20: 6c 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  le is returned i
6b30: 6e 20 2a 70 70 44 62 2c 20 65 76 65 6e 0a 2a 2a  n *ppDb, even.**
6b40: 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63   if an error occ
6b50: 75 72 73 2e 20 49 66 20 74 68 65 20 64 61 74 61  urs. If the data
6b60: 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 28  base is opened (
6b70: 6f 72 20 63 72 65 61 74 65 64 29 20 73 75 63 63  or created) succ
6b80: 65 73 73 66 75 6c 6c 79 2c 0a 2a 2a 20 74 68 65  essfully,.** the
6b90: 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 73 20 72  n SQLITE_OK is r
6ba0: 65 74 75 72 6e 65 64 2e 20 4f 74 68 65 72 77 69  eturned. Otherwi
6bb0: 73 65 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65  se an error code
6bc0: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68   is returned. Th
6bd0: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 72 72  e.** sqlite3_err
6be0: 6d 73 67 28 29 20 6f 72 20 73 71 6c 69 74 65 33  msg() or sqlite3
6bf0: 5f 65 72 72 6d 73 67 31 36 28 29 20 20 72 6f 75  _errmsg16()  rou
6c00: 74 69 6e 65 73 20 63 61 6e 20 62 65 20 75 73 65  tines can be use
6c10: 64 20 74 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61  d to obtain.** a
6c20: 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61  n English langua
6c30: 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f  ge description o
6c40: 66 20 74 68 65 20 65 72 72 6f 72 2e 0a 2a 2a 0a  f the error..**.
6c50: 2a 2a 20 49 66 20 74 68 65 20 64 61 74 61 62 61  ** If the databa
6c60: 73 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74  se file does not
6c70: 20 65 78 69 73 74 2c 20 74 68 65 6e 20 61 20 6e   exist, then a n
6c80: 65 77 20 64 61 74 61 62 61 73 65 20 69 73 20 63  ew database is c
6c90: 72 65 61 74 65 64 2e 0a 2a 2a 20 54 68 65 20 65  reated..** The e
6ca0: 6e 63 6f 64 69 6e 67 20 66 6f 72 20 74 68 65 20  ncoding for the 
6cb0: 64 61 74 61 62 61 73 65 20 69 73 20 55 54 46 2d  database is UTF-
6cc0: 38 20 69 66 20 73 71 6c 69 74 65 33 5f 6f 70 65  8 if sqlite3_ope
6cd0: 6e 28 29 20 69 73 20 63 61 6c 6c 65 64 20 61 6e  n() is called an
6ce0: 64 0a 2a 2a 20 55 54 46 2d 31 36 20 69 66 20 73  d.** UTF-16 if s
6cf0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 20 69 73  qlite3_open16 is
6d00: 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 57 68 65   used..**.** Whe
6d10: 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 65  ther or not an e
6d20: 72 72 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e  rror occurs when
6d30: 20 69 74 20 69 73 20 6f 70 65 6e 65 64 2c 20 72   it is opened, r
6d40: 65 73 6f 75 72 63 65 73 20 61 73 73 6f 63 69 61  esources associa
6d50: 74 65 64 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ted.** with the 
6d60: 73 71 6c 69 74 65 33 2a 20 68 61 6e 64 6c 65 20  sqlite3* handle 
6d70: 73 68 6f 75 6c 64 20 62 65 20 72 65 6c 65 61 73  should be releas
6d80: 65 64 20 62 79 20 70 61 73 73 69 6e 67 20 69 74  ed by passing it
6d90: 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63   to.** sqlite3_c
6da0: 6c 6f 73 65 28 29 20 77 68 65 6e 20 69 74 20 69  lose() when it i
6db0: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75  s no longer requ
6dc0: 69 72 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  ired..*/.int sql
6dd0: 69 74 65 33 5f 6f 70 65 6e 28 0a 20 20 63 6f 6e  ite3_open(.  con
6de0: 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d  st char *filenam
6df0: 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  e,   /* Database
6e00: 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38   filename (UTF-8
6e10: 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a  ) */.  sqlite3 *
6e20: 2a 70 70 44 62 20 20 20 20 20 20 20 20 20 20 2f  *ppDb          /
6e30: 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62  * OUT: SQLite db
6e40: 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 69 6e   handle */.);.in
6e50: 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  t sqlite3_open16
6e60: 28 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  (.  const void *
6e70: 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44  filename,   /* D
6e80: 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65  atabase filename
6e90: 20 28 55 54 46 2d 31 36 29 20 2a 2f 0a 20 20 73   (UTF-16) */.  s
6ea0: 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 20 20 20  qlite3 **ppDb   
6eb0: 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53         /* OUT: S
6ec0: 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c 65 20  QLite db handle 
6ed0: 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  */.);../*.** Ret
6ee0: 75 72 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  urn the error co
6ef0: 64 65 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20  de for the most 
6f00: 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a  recent sqlite3_*
6f10: 20 41 50 49 20 63 61 6c 6c 20 61 73 73 6f 63 69   API call associ
6f20: 61 74 65 64 0a 2a 2a 20 77 69 74 68 20 73 71 6c  ated.** with sql
6f30: 69 74 65 33 20 68 61 6e 64 6c 65 20 27 64 62 27  ite3 handle 'db'
6f40: 2e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 73 20 72  . SQLITE_OK is r
6f50: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 6d  eturned if the m
6f60: 6f 73 74 20 72 65 63 65 6e 74 20 0a 2a 2a 20 41  ost recent .** A
6f70: 50 49 20 63 61 6c 6c 20 77 61 73 20 73 75 63 63  PI call was succ
6f80: 65 73 73 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 43 61  essful..**.** Ca
6f90: 6c 6c 73 20 74 6f 20 6d 61 6e 79 20 73 71 6c 69  lls to many sqli
6fa0: 74 65 33 5f 2a 20 66 75 6e 63 74 69 6f 6e 73 20  te3_* functions 
6fb0: 73 65 74 20 74 68 65 20 65 72 72 6f 72 20 63 6f  set the error co
6fc0: 64 65 20 61 6e 64 20 73 74 72 69 6e 67 20 72 65  de and string re
6fd0: 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20 73 71 6c  turned.** by sql
6fe0: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 2c 20  ite3_errcode(), 
6ff0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29  sqlite3_errmsg()
7000: 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65 72 72   and sqlite3_err
7010: 6d 73 67 31 36 28 29 0a 2a 2a 20 28 6f 76 65 72  msg16().** (over
7020: 77 72 69 74 69 6e 67 20 74 68 65 20 70 72 65 76  writing the prev
7030: 69 6f 75 73 20 76 61 6c 75 65 73 29 2e 20 4e 6f  ious values). No
7040: 74 65 20 74 68 61 74 20 63 61 6c 6c 73 20 74 6f  te that calls to
7050: 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
7060: 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65  (),.** sqlite3_e
7070: 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71 6c 69  rrmsg() and sqli
7080: 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 20 74  te3_errmsg16() t
7090: 68 65 6d 73 65 6c 76 65 73 20 64 6f 20 6e 6f 74  hemselves do not
70a0: 20 61 66 66 65 63 74 20 74 68 65 0a 2a 2a 20 72   affect the.** r
70b0: 65 73 75 6c 74 73 20 6f 66 20 66 75 74 75 72 65  esults of future
70c0: 20 69 6e 76 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a   invocations..**
70d0: 0a 2a 2a 20 41 73 73 75 6d 69 6e 67 20 6e 6f 20  .** Assuming no 
70e0: 6f 74 68 65 72 20 69 6e 74 65 72 76 65 6e 69 6e  other intervenin
70f0: 67 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49 20  g sqlite3_* API 
7100: 63 61 6c 6c 73 20 61 72 65 20 6d 61 64 65 2c 20  calls are made, 
7110: 74 68 65 20 65 72 72 6f 72 0a 2a 2a 20 63 6f 64  the error.** cod
7120: 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
7130: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  is function is a
7140: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
7150: 68 65 20 73 61 6d 65 20 65 72 72 6f 72 20 61 73  he same error as
7160: 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 73 20  .** the strings 
7170: 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c   returned by sql
7180: 69 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e  ite3_errmsg() an
7190: 64 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  d sqlite3_errmsg
71a0: 31 36 28 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  16()..*/.int sql
71b0: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 73 71 6c  ite3_errcode(sql
71c0: 69 74 65 33 20 2a 64 62 29 3b 0a 0a 2f 2a 0a 2a  ite3 *db);../*.*
71d0: 2a 20 52 65 74 75 72 6e 20 61 20 70 6f 69 6e 74  * Return a point
71e0: 65 72 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e  er to a UTF-8 en
71f0: 63 6f 64 65 64 20 73 74 72 69 6e 67 20 64 65 73  coded string des
7200: 63 72 69 62 69 6e 67 20 69 6e 20 65 6e 67 6c 69  cribing in engli
7210: 73 68 20 74 68 65 0a 2a 2a 20 65 72 72 6f 72 20  sh the.** error 
7220: 63 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20 74 68  condition for th
7230: 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 73 71  e most recent sq
7240: 6c 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c  lite3_* API call
7250: 2e 20 54 68 65 20 72 65 74 75 72 6e 65 64 0a 2a  . The returned.*
7260: 2a 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77 61  * string is alwa
7270: 79 73 20 74 65 72 6d 69 6e 61 74 65 64 20 62 79  ys terminated by
7280: 20 61 6e 20 30 78 30 30 20 62 79 74 65 2e 0a 2a   an 0x00 byte..*
7290: 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67 20  *.** The string 
72a0: 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 20 69  "not an error" i
72b0: 73 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20  s returned when 
72c0: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
72d0: 41 50 49 20 63 61 6c 6c 20 77 61 73 0a 2a 2a 20  API call was.** 
72e0: 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a 63  successful..*/.c
72f0: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
7300: 65 33 5f 65 72 72 6d 73 67 28 73 71 6c 69 74 65  e3_errmsg(sqlite
7310: 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  3*);../*.** Retu
7320: 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  rn a pointer to 
7330: 61 20 55 54 46 2d 31 36 20 6e 61 74 69 76 65 20  a UTF-16 native 
7340: 62 79 74 65 20 6f 72 64 65 72 20 65 6e 63 6f 64  byte order encod
7350: 65 64 20 73 74 72 69 6e 67 20 64 65 73 63 72 69  ed string descri
7360: 62 69 6e 67 0a 2a 2a 20 69 6e 20 65 6e 67 6c 69  bing.** in engli
7370: 73 68 20 74 68 65 20 65 72 72 6f 72 20 63 6f 6e  sh the error con
7380: 64 69 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6d  dition for the m
7390: 6f 73 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74  ost recent sqlit
73a0: 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c 2e 0a 2a  e3_* API call..*
73b0: 2a 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73  * The returned s
73c0: 74 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20  tring is always 
73d0: 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 61 20  terminated by a 
73e0: 70 61 69 72 20 6f 66 20 30 78 30 30 20 62 79 74  pair of 0x00 byt
73f0: 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 74  es..**.** The st
7400: 72 69 6e 67 20 22 6e 6f 74 20 61 6e 20 65 72 72  ring "not an err
7410: 6f 72 22 20 69 73 20 72 65 74 75 72 6e 65 64 20  or" is returned 
7420: 77 68 65 6e 20 74 68 65 20 6d 6f 73 74 20 72 65  when the most re
7430: 63 65 6e 74 20 41 50 49 20 63 61 6c 6c 20 77 61  cent API call wa
7440: 73 0a 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 2e  s.** successful.
7450: 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a  .*/.const void *
7460: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
7470: 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a  (sqlite3*);../*.
7480: 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ** An instance o
7490: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
74a0: 6f 70 61 71 75 65 20 73 74 72 75 63 74 75 72 65  opaque structure
74b0: 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 70 72   is used to repr
74c0: 65 73 65 6e 74 0a 2a 2a 20 61 20 63 6f 6d 70 69  esent.** a compi
74d0: 6c 65 64 20 53 51 4c 20 73 74 61 74 6d 65 6e 74  led SQL statment
74e0: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
74f0: 75 63 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  uct sqlite3_stmt
7500: 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 3b 0a 0a   sqlite3_stmt;..
7510: 2f 2a 0a 2a 2a 20 54 6f 20 65 78 65 63 75 74 65  /*.** To execute
7520: 20 61 6e 20 53 51 4c 20 71 75 65 72 79 2c 20 69   an SQL query, i
7530: 74 20 6d 75 73 74 20 66 69 72 73 74 20 62 65 20  t must first be 
7540: 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 61 20  compiled into a 
7550: 62 79 74 65 2d 63 6f 64 65 0a 2a 2a 20 70 72 6f  byte-code.** pro
7560: 67 72 61 6d 20 75 73 69 6e 67 20 6f 6e 65 20 6f  gram using one o
7570: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
7580: 72 6f 75 74 69 6e 65 73 2e 20 54 68 65 20 6f 6e  routines. The on
7590: 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  ly difference be
75a0: 74 77 65 65 6e 0a 2a 2a 20 74 68 65 6d 20 69 73  tween.** them is
75b0: 20 74 68 61 74 20 74 68 65 20 73 65 63 6f 6e 64   that the second
75c0: 20 61 72 67 75 6d 65 6e 74 2c 20 73 70 65 63 69   argument, speci
75d0: 66 79 69 6e 67 20 74 68 65 20 53 51 4c 20 73 74  fying the SQL st
75e0: 61 74 65 6d 65 6e 74 20 74 6f 0a 2a 2a 20 63 6f  atement to.** co
75f0: 6d 70 69 6c 65 2c 20 69 73 20 61 73 73 75 6d 65  mpile, is assume
7600: 64 20 74 6f 20 62 65 20 65 6e 63 6f 64 65 64 20  d to be encoded 
7610: 69 6e 20 55 54 46 2d 38 20 66 6f 72 20 74 68 65  in UTF-8 for the
7620: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
7630: 28 29 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 61  ().** function a
7640: 6e 64 20 55 54 46 2d 31 36 20 66 6f 72 20 73 71  nd UTF-16 for sq
7650: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
7660: 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72  )..**.** The fir
7670: 73 74 20 70 61 72 61 6d 65 74 65 72 20 22 64 62  st parameter "db
7680: 22 20 69 73 20 61 6e 20 53 51 4c 69 74 65 20 64  " is an SQLite d
7690: 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 2e 20  atabase handle. 
76a0: 54 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 70 61  The second.** pa
76b0: 72 61 6d 65 74 65 72 20 22 7a 53 71 6c 22 20 69  rameter "zSql" i
76c0: 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  s the statement 
76d0: 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 2c 20  to be compiled, 
76e0: 65 6e 63 6f 64 65 64 20 61 73 20 65 69 74 68 65  encoded as eithe
76f0: 72 0a 2a 2a 20 55 54 46 2d 38 20 6f 72 20 55 54  r.** UTF-8 or UT
7700: 46 2d 31 36 20 28 73 65 65 20 61 62 6f 76 65 29  F-16 (see above)
7710: 2e 20 49 66 20 74 68 65 20 6e 65 78 74 20 70 61  . If the next pa
7720: 72 61 6d 65 74 65 72 2c 20 22 6e 42 79 74 65 73  rameter, "nBytes
7730: 22 2c 20 69 73 20 6c 65 73 73 0a 2a 2a 20 74 68  ", is less.** th
7740: 61 6e 20 7a 65 72 6f 2c 20 74 68 65 6e 20 7a 53  an zero, then zS
7750: 71 6c 20 69 73 20 72 65 61 64 20 75 70 20 74 6f  ql is read up to
7760: 20 74 68 65 20 66 69 72 73 74 20 6e 75 6c 20 74   the first nul t
7770: 65 72 6d 69 6e 61 74 6f 72 2e 20 20 49 66 0a 2a  erminator.  If.*
7780: 2a 20 22 6e 42 79 74 65 73 22 20 69 73 20 6e 6f  * "nBytes" is no
7790: 74 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f  t less than zero
77a0: 2c 20 74 68 65 6e 20 69 74 20 69 73 20 74 68 65  , then it is the
77b0: 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 73   length of the s
77c0: 74 72 69 6e 67 20 7a 53 71 6c 0a 2a 2a 20 69 6e  tring zSql.** in
77d0: 20 62 79 74 65 73 20 28 6e 6f 74 20 63 68 61 72   bytes (not char
77e0: 61 63 74 65 72 73 29 2e 0a 2a 2a 0a 2a 2a 20 2a  acters)..**.** *
77f0: 70 7a 54 61 69 6c 20 69 73 20 6d 61 64 65 20 74  pzTail is made t
7800: 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 66  o point to the f
7810: 69 72 73 74 20 62 79 74 65 20 70 61 73 74 20 74  irst byte past t
7820: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 66 69  he end of the fi
7830: 72 73 74 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  rst.** SQL state
7840: 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2e 20 20 54  ment in zSql.  T
7850: 68 69 73 20 72 6f 75 74 69 6e 65 20 6f 6e 6c 79  his routine only
7860: 20 63 6f 6d 70 69 6c 65 73 20 74 68 65 20 66 69   compiles the fi
7870: 72 73 74 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  rst statement.**
7880: 20 69 6e 20 7a 53 71 6c 2c 20 73 6f 20 2a 70 7a   in zSql, so *pz
7890: 54 61 69 6c 20 69 73 20 6c 65 66 74 20 70 6f 69  Tail is left poi
78a0: 6e 74 69 6e 67 20 74 6f 20 77 68 61 74 20 72 65  nting to what re
78b0: 6d 61 69 6e 73 20 75 6e 63 6f 6d 70 69 6c 65 64  mains uncompiled
78c0: 2e 0a 2a 2a 0a 2a 2a 20 2a 70 70 53 74 6d 74 20  ..**.** *ppStmt 
78d0: 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67  is left pointing
78e0: 20 74 6f 20 61 20 63 6f 6d 70 69 6c 65 64 20 53   to a compiled S
78f0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  QL statement tha
7900: 74 20 63 61 6e 20 62 65 0a 2a 2a 20 65 78 65 63  t can be.** exec
7910: 75 74 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74  uted using sqlit
7920: 65 33 5f 73 74 65 70 28 29 2e 20 20 4f 72 20 69  e3_step().  Or i
7930: 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 65 72  f there is an er
7940: 72 6f 72 2c 20 2a 70 70 53 74 6d 74 20 6d 61 79  ror, *ppStmt may
7950: 20 62 65 0a 2a 2a 20 73 65 74 20 74 6f 20 4e 55   be.** set to NU
7960: 4c 4c 2e 20 20 49 66 20 74 68 65 20 69 6e 70 75  LL.  If the inpu
7970: 74 20 74 65 78 74 20 63 6f 6e 74 61 69 6e 65 64  t text contained
7980: 20 6e 6f 20 53 51 4c 20 28 69 66 20 74 68 65 20   no SQL (if the 
7990: 69 6e 70 75 74 20 69 73 20 61 6e 64 0a 2a 2a 20  input is and.** 
79a0: 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20  empty string or 
79b0: 61 20 63 6f 6d 6d 65 6e 74 29 20 74 68 65 6e 20  a comment) then 
79c0: 2a 70 70 53 74 6d 74 20 69 73 20 73 65 74 20 74  *ppStmt is set t
79d0: 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 4f 6e  o NULL..**.** On
79e0: 20 73 75 63 63 65 73 73 2c 20 53 51 4c 49 54 45   success, SQLITE
79f0: 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e 65 64 2e  _OK is returned.
7a00: 20 20 4f 74 68 65 72 77 69 73 65 20 61 6e 20 65    Otherwise an e
7a10: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72 65 74  rror code is ret
7a20: 75 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71  urned..*/.int sq
7a30: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 0a 20  lite3_prepare(. 
7a40: 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
7a50: 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
7a60: 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
7a70: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71   const char *zSq
7a80: 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
7a90: 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38  statement, UTF-8
7aa0: 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e   encoded */.  in
7ab0: 74 20 6e 42 79 74 65 73 2c 20 20 20 20 20 20 20  t nBytes,       
7ac0: 20 20 20 20 20 20 2f 2a 20 4c 65 6e 67 74 68 20        /* Length 
7ad0: 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
7ae0: 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  . */.  sqlite3_s
7af0: 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
7b00: 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
7b10: 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
7b20: 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c  st char **pzTail
7b30: 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
7b40: 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
7b50: 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
7b60: 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  /.);.int sqlite3
7b70: 5f 70 72 65 70 61 72 65 31 36 28 0a 20 20 73 71  _prepare16(.  sq
7b80: 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
7b90: 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73        /* Databas
7ba0: 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  e handle */.  co
7bb0: 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20  nst void *zSql, 
7bc0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61        /* SQL sta
7bd0: 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65  tement, UTF-16 e
7be0: 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20  ncoded */.  int 
7bf0: 6e 42 79 74 65 73 2c 20 20 20 20 20 20 20 20 20  nBytes,         
7c00: 20 20 20 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66      /* Length of
7c10: 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20   zSql in bytes. 
7c20: 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
7c30: 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
7c40: 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
7c50: 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
7c60: 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20   void **pzTail  
7c70: 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
7c80: 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
7c90: 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
7ca0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 4e 65 77 65 72 20  );../*.** Newer 
7cb0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
7cc0: 70 72 65 70 61 72 65 20 41 50 49 20 77 6f 72 6b  prepare API work
7cd0: 20 6a 75 73 74 20 6c 69 6b 65 20 74 68 65 20 6c   just like the l
7ce0: 65 67 61 63 79 20 76 65 72 73 69 6f 6e 73 0a 2a  egacy versions.*
7cf0: 2a 20 62 75 74 20 77 69 74 68 20 6f 6e 65 20 65  * but with one e
7d00: 78 63 65 70 74 69 6f 6e 3a 20 20 54 68 65 20 61  xception:  The a
7d10: 20 63 6f 70 79 20 6f 66 20 74 68 65 20 53 51 4c   copy of the SQL
7d20: 20 74 65 78 74 20 69 73 20 73 61 76 65 64 20 69   text is saved i
7d30: 6e 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33  n the.** sqlite3
7d40: 5f 73 74 6d 74 20 73 74 72 75 63 74 75 72 65 20  _stmt structure 
7d50: 74 68 61 74 20 69 73 20 72 65 74 75 72 6e 65 64  that is returned
7d60: 2e 20 20 49 66 20 74 68 69 73 20 63 6f 70 79 20  .  If this copy 
7d70: 65 78 69 73 74 73 2c 20 69 74 0a 2a 2a 20 6d 6f  exists, it.** mo
7d80: 64 69 66 69 65 64 73 20 74 68 65 20 62 65 68 61  difieds the beha
7d90: 76 69 6f 72 20 6f 66 20 73 71 6c 69 74 65 33 5f  vior of sqlite3_
7da0: 73 74 65 70 28 29 20 73 6c 69 67 68 74 6c 79 2e  step() slightly.
7db0: 20 20 46 69 72 73 74 2c 20 73 71 6c 69 74 65 33    First, sqlite3
7dc0: 5f 73 74 65 70 28 29 0a 2a 2a 20 77 69 6c 6c 20  _step().** will 
7dd0: 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 74 75 72 6e  no longer return
7de0: 20 61 6e 20 53 51 4c 49 54 45 5f 53 43 48 45 4d   an SQLITE_SCHEM
7df0: 41 20 65 72 72 6f 72 20 62 75 74 20 77 69 6c 6c  A error but will
7e00: 20 69 6e 73 74 65 61 64 20 61 75 74 6f 6d 61 74   instead automat
7e10: 69 63 61 6c 6c 79 0a 2a 2a 20 72 65 72 75 6e 20  ically.** rerun 
7e20: 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 74 6f 20  the compiler to 
7e30: 72 65 62 75 69 6c 64 20 74 68 65 20 70 72 65 70  rebuild the prep
7e40: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e 20  ared statement. 
7e50: 20 53 65 63 6f 6e 64 6c 79 2c 20 0a 2a 2a 20 73   Secondly, .** s
7e60: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 6e 6f  qlite3_step() no
7e70: 77 20 74 75 72 6e 73 20 61 20 66 75 6c 6c 20 72  w turns a full r
7e80: 65 73 75 6c 74 20 63 6f 64 65 20 2d 20 74 68 65  esult code - the
7e90: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 74 68 61   result code tha
7ea0: 74 0a 2a 2a 20 75 73 65 20 75 73 65 64 20 74 6f  t.** use used to
7eb0: 20 68 61 76 65 20 74 6f 20 63 61 6c 6c 20 73 71   have to call sq
7ec0: 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20 74 6f  lite3_reset() to
7ed0: 20 67 65 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c   get..*/.int sql
7ee0: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
7ef0: 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
7f00: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
7f10: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
7f20: 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
7f30: 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
7f40: 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
7f50: 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20  -8 encoded */.  
7f60: 69 6e 74 20 6e 42 79 74 65 73 2c 20 20 20 20 20  int nBytes,     
7f70: 20 20 20 20 20 20 20 20 2f 2a 20 4c 65 6e 67 74          /* Lengt
7f80: 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74  h of zSql in byt
7f90: 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  es. */.  sqlite3
7fa0: 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20  _stmt **ppStmt, 
7fb0: 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65   /* OUT: Stateme
7fc0: 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  nt handle */.  c
7fd0: 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61  onst char **pzTa
7fe0: 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50  il     /* OUT: P
7ff0: 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64  ointer to unused
8000: 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c   portion of zSql
8010: 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74   */.);.int sqlit
8020: 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28  e3_prepare16_v2(
8030: 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
8040: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
8050: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
8060: 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a  .  const void *z
8070: 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
8080: 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
8090: 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  -16 encoded */. 
80a0: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 20 20 20   int nBytes,    
80b0: 20 20 20 20 20 20 20 20 20 2f 2a 20 4c 65 6e 67           /* Leng
80c0: 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79  th of zSql in by
80d0: 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65  tes. */.  sqlite
80e0: 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
80f0: 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
8100: 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
8110: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54  const void **pzT
8120: 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
8130: 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
8140: 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
8150: 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 50  l */.);../*.** P
8160: 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65 20 66  ointers to the f
8170: 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 6f 70 61  ollowing two opa
8180: 71 75 65 20 73 74 72 75 63 74 75 72 65 73 20 61  que structures a
8190: 72 65 20 75 73 65 64 20 74 6f 20 63 6f 6d 6d 75  re used to commu
81a0: 6e 69 63 61 74 65 0a 2a 2a 20 77 69 74 68 20 74  nicate.** with t
81b0: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
81c0: 6e 73 20 6f 66 20 75 73 65 72 2d 64 65 66 69 6e  ns of user-defin
81d0: 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 2a 2f  ed functions..*/
81e0: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
81f0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
8200: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 3b  sqlite3_context;
8210: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
8220: 4d 65 6d 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Mem sqlite3_valu
8230: 65 3b 0a 0a 2f 2a 0a 2a 2a 20 49 6e 20 74 68 65  e;../*.** In the
8240: 20 53 51 4c 20 73 74 72 69 6e 67 73 20 69 6e 70   SQL strings inp
8250: 75 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 70 72  ut to sqlite3_pr
8260: 65 70 61 72 65 28 29 20 61 6e 64 20 73 71 6c 69  epare() and sqli
8270: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c  te3_prepare16(),
8280: 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  .** one or more 
8290: 6c 69 74 65 72 61 6c 73 20 63 61 6e 20 62 65 20  literals can be 
82a0: 72 65 70 6c 61 63 65 20 62 79 20 70 61 72 61 6d  replace by param
82b0: 65 74 65 72 73 20 22 3f 22 20 6f 72 20 22 3f 4e  eters "?" or "?N
82c0: 4e 4e 22 20 6f 72 20 0a 2a 2a 20 22 3a 41 41 41  NN" or .** ":AAA
82d0: 22 20 6f 72 20 22 40 41 41 41 22 20 6f 72 20 22  " or "@AAA" or "
82e0: 24 56 56 56 22 20 77 68 65 72 65 20 4e 4e 4e 20  $VVV" where NNN 
82f0: 69 73 20 61 20 69 6e 74 65 67 65 72 2c 20 41 41  is a integer, AA
8300: 41 20 69 73 20 61 6e 20 69 64 65 6e 74 69 66 65  A is an identife
8310: 72 2c 0a 2a 2a 20 61 6e 64 20 56 56 56 20 69 73  r,.** and VVV is
8320: 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65   a variable name
8330: 20 61 63 63 6f 72 64 69 6e 67 20 20 74 6f 20 74   according  to t
8340: 68 65 20 73 79 6e 74 61 78 20 72 75 6c 65 73 20  he syntax rules 
8350: 6f 66 20 74 68 65 0a 2a 2a 20 54 43 4c 20 70 72  of the.** TCL pr
8360: 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61  ogramming langua
8370: 67 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f  ge.  The value o
8380: 66 20 74 68 65 73 65 20 70 61 72 61 6d 65 74 65  f these paramete
8390: 72 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64 0a  rs (also called.
83a0: 2a 2a 20 22 68 6f 73 74 20 70 61 72 61 6d 65 74  ** "host paramet
83b0: 65 72 20 6e 61 6d 65 73 22 29 20 63 61 6e 20 62  er names") can b
83c0: 65 20 73 65 74 20 75 73 69 6e 67 20 74 68 65 20  e set using the 
83d0: 72 6f 75 74 69 6e 65 73 20 6c 69 73 74 65 64 20  routines listed 
83e0: 62 65 6c 6f 77 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20  below..**.** In 
83f0: 65 76 65 72 79 20 63 61 73 65 2c 20 74 68 65 20  every case, the 
8400: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
8410: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
8420: 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a  he sqlite3_stmt.
8430: 2a 2a 20 73 74 72 75 63 74 75 72 65 20 72 65 74  ** structure ret
8440: 75 72 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  urned from sqlit
8450: 65 33 5f 70 72 65 70 61 72 65 28 29 2e 20 20 54  e3_prepare().  T
8460: 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
8470: 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20 69 6e 64  nt is the.** ind
8480: 65 78 20 6f 66 20 74 68 65 20 68 6f 73 74 20 70  ex of the host p
8490: 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 2e 20 20  arameter name.  
84a0: 54 68 65 20 66 69 72 73 74 20 68 6f 73 74 20 70  The first host p
84b0: 61 72 61 6d 65 74 65 72 20 61 73 20 61 6e 20 69  arameter as an i
84c0: 6e 64 65 78 20 0a 2a 2a 20 6f 66 20 31 2e 20 20  ndex .** of 1.  
84d0: 46 6f 72 20 6e 61 6d 65 64 20 68 6f 73 74 20 70  For named host p
84e0: 61 72 61 6d 65 74 65 72 73 20 28 22 3a 41 41 41  arameters (":AAA
84f0: 22 20 6f 72 20 22 24 56 56 56 22 29 20 79 6f 75  " or "$VVV") you
8500: 20 63 61 6e 20 75 73 65 20 0a 2a 2a 20 73 71 6c   can use .** sql
8510: 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
8520: 74 65 72 5f 69 6e 64 65 78 28 29 20 74 6f 20 67  ter_index() to g
8530: 65 74 20 74 68 65 20 63 6f 72 72 65 63 74 20 69  et the correct i
8540: 6e 64 65 78 20 76 61 6c 75 65 20 67 69 76 65 6e  ndex value given
8550: 0a 2a 2a 20 74 68 65 20 70 61 72 61 6d 65 74 65  .** the paramete
8560: 72 20 6e 61 6d 65 2e 20 20 49 66 20 74 68 65 20  r name.  If the 
8570: 73 61 6d 65 20 6e 61 6d 65 64 20 70 61 72 61 6d  same named param
8580: 65 74 65 72 20 6f 63 63 75 72 73 20 6d 6f 72 65  eter occurs more
8590: 20 74 68 61 6e 0a 2a 2a 20 6f 6e 63 65 2c 20 69   than.** once, i
85a0: 74 20 69 73 20 61 73 73 69 67 6e 65 64 20 74 68  t is assigned th
85b0: 65 20 73 61 6d 65 20 69 6e 64 65 78 20 65 61 63  e same index eac
85c0: 68 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  h time..**.** Th
85d0: 65 20 66 69 66 74 68 20 61 72 67 75 6d 65 6e 74  e fifth argument
85e0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
85f0: 5f 62 6c 6f 62 28 29 2c 20 73 71 6c 69 74 65 33  _blob(), sqlite3
8600: 5f 62 69 6e 64 5f 74 65 78 74 28 29 2c 20 61 6e  _bind_text(), an
8610: 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 62 69 6e  d.** sqlite3_bin
8620: 64 5f 74 65 78 74 31 36 28 29 20 69 73 20 61 20  d_text16() is a 
8630: 64 65 73 74 72 75 63 74 6f 72 20 75 73 65 64 20  destructor used 
8640: 74 6f 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68  to dispose of th
8650: 65 20 42 4c 4f 42 20 6f 72 0a 2a 2a 20 74 65 78  e BLOB or.** tex
8660: 74 20 61 66 74 65 72 20 53 51 4c 69 74 65 20 68  t after SQLite h
8670: 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68  as finished with
8680: 20 69 74 2e 20 20 49 66 20 74 68 65 20 66 69 66   it.  If the fif
8690: 74 68 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  th argument is t
86a0: 68 65 0a 2a 2a 20 73 70 65 63 69 61 6c 20 76 61  he.** special va
86b0: 6c 75 65 20 53 51 4c 49 54 45 5f 53 54 41 54 49  lue SQLITE_STATI
86c0: 43 2c 20 74 68 65 6e 20 74 68 65 20 6c 69 62 72  C, then the libr
86d0: 61 72 79 20 61 73 73 75 6d 65 73 20 74 68 61 74  ary assumes that
86e0: 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   the information
86f0: 0a 2a 2a 20 69 73 20 69 6e 20 73 74 61 74 69 63  .** is in static
8700: 2c 20 75 6e 6d 61 6e 61 67 65 64 20 73 70 61 63  , unmanaged spac
8710: 65 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6e  e and does not n
8720: 65 65 64 20 74 6f 20 62 65 20 66 72 65 65 64 2e  eed to be freed.
8730: 20 20 49 66 20 74 68 65 0a 2a 2a 20 66 69 66 74    If the.** fift
8740: 68 20 61 72 67 75 6d 65 6e 74 20 68 61 73 20 74  h argument has t
8750: 68 65 20 76 61 6c 75 65 20 53 51 4c 49 54 45 5f  he value SQLITE_
8760: 54 52 41 4e 53 49 45 4e 54 2c 20 74 68 65 6e 20  TRANSIENT, then 
8770: 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 69 74 73  SQLite makes its
8780: 0a 2a 2a 20 6f 77 6e 20 70 72 69 76 61 74 65 20  .** own private 
8790: 63 6f 70 79 20 6f 66 20 74 68 65 20 64 61 74 61  copy of the data
87a0: 20 62 65 66 6f 72 65 20 74 68 65 20 73 71 6c 69   before the sqli
87b0: 74 65 33 5f 62 69 6e 64 5f 2a 20 72 6f 75 74 69  te3_bind_* routi
87c0: 6e 65 20 72 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a  ne returns..**.*
87d0: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69  * The sqlite3_bi
87e0: 6e 64 5f 2a 20 72 6f 75 74 69 6e 65 20 6d 75 73  nd_* routine mus
87f0: 74 20 62 65 20 63 61 6c 6c 65 64 20 62 65 66 6f  t be called befo
8800: 72 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  re sqlite3_step(
8810: 29 20 61 6e 64 20 61 66 74 65 72 0a 2a 2a 20 61  ) and after.** a
8820: 6e 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  n sqlite3_prepar
8830: 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 72  e() or sqlite3_r
8840: 65 73 65 74 28 29 2e 20 20 42 69 6e 64 69 6e 67  eset().  Binding
8850: 73 20 70 65 72 73 69 73 74 20 61 63 72 6f 73 73  s persist across
8860: 0a 2a 2a 20 6d 75 6c 74 69 70 6c 65 20 63 61 6c  .** multiple cal
8870: 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65  ls to sqlite3_re
8880: 73 65 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65  set() and sqlite
8890: 33 5f 73 74 65 70 28 29 2e 20 20 55 6e 62 6f 75  3_step().  Unbou
88a0: 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 0a 2a  nd parameters .*
88b0: 2a 20 61 72 65 20 69 6e 74 65 72 70 72 65 74 65  * are interprete
88c0: 64 20 61 73 20 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e  d as NULL..*/.in
88d0: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62  t sqlite3_bind_b
88e0: 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  lob(sqlite3_stmt
88f0: 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f  *, int, const vo
8900: 69 64 2a 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64  id*, int n, void
8910: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 69 6e 74  (*)(void*));.int
8920: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
8930: 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  uble(sqlite3_stm
8940: 74 2a 2c 20 69 6e 74 2c 20 64 6f 75 62 6c 65 29  t*, int, double)
8950: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  ;.int sqlite3_bi
8960: 6e 64 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 73  nd_int(sqlite3_s
8970: 74 6d 74 2a 2c 20 69 6e 74 2c 20 69 6e 74 29 3b  tmt*, int, int);
8980: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e  .int sqlite3_bin
8990: 64 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33 5f  d_int64(sqlite3_
89a0: 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 73 71 6c 69  stmt*, int, sqli
89b0: 74 65 5f 69 6e 74 36 34 29 3b 0a 69 6e 74 20 73  te_int64);.int s
89c0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
89d0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
89e0: 69 6e 74 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  int);.int sqlite
89f0: 33 5f 62 69 6e 64 5f 74 65 78 74 28 73 71 6c 69  3_bind_text(sqli
8a00: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20  te3_stmt*, int, 
8a10: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74  const char*, int
8a20: 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64   n, void(*)(void
8a30: 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  *));.int sqlite3
8a40: 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 73 71 6c  _bind_text16(sql
8a50: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
8a60: 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e   const void*, in
8a70: 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  t, void(*)(void*
8a80: 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  ));.int sqlite3_
8a90: 62 69 6e 64 5f 76 61 6c 75 65 28 73 71 6c 69 74  bind_value(sqlit
8aa0: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63  e3_stmt*, int, c
8ab0: 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  onst sqlite3_val
8ac0: 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  ue*);.int sqlite
8ad0: 33 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 28  3_bind_zeroblob(
8ae0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
8af0: 6e 74 2c 20 69 6e 74 20 6e 29 3b 0a 0a 2f 2a 0a  nt, int n);../*.
8b00: 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75  ** Return the nu
8b10: 6d 62 65 72 20 6f 66 20 68 6f 73 74 20 70 61 72  mber of host par
8b20: 61 6d 65 74 65 72 73 20 69 6e 20 61 20 63 6f 6d  ameters in a com
8b30: 70 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d  piled SQL statem
8b40: 65 6e 74 2e 20 20 54 68 69 73 0a 2a 2a 20 72 6f  ent.  This.** ro
8b50: 75 74 69 6e 65 20 77 61 73 20 61 64 64 65 64 20  utine was added 
8b60: 74 6f 20 73 75 70 70 6f 72 74 20 44 42 44 3a 3a  to support DBD::
8b70: 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73  SQLite..*/.int s
8b80: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
8b90: 6d 65 74 65 72 5f 63 6f 75 6e 74 28 73 71 6c 69  meter_count(sqli
8ba0: 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
8bb0: 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 61  ** Return the na
8bc0: 6d 65 20 6f 66 20 74 68 65 20 69 2d 74 68 20 6e  me of the i-th n
8bd0: 61 6d 65 20 70 61 72 61 6d 65 74 65 72 2e 20 20  ame parameter.  
8be0: 4f 72 64 69 6e 61 72 79 20 70 61 72 61 6d 65 74  Ordinary paramet
8bf0: 65 72 73 20 22 3f 22 20 61 72 65 0a 2a 2a 20 6e  ers "?" are.** n
8c00: 61 6d 65 6c 65 73 73 20 61 6e 64 20 61 20 4e 55  ameless and a NU
8c10: 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20  LL is returned. 
8c20: 20 46 6f 72 20 70 61 72 61 6d 65 74 65 72 73 20   For parameters 
8c30: 6f 66 20 74 68 65 20 66 6f 72 6d 20 3a 41 41 41  of the form :AAA
8c40: 20 6f 72 0a 2a 2a 20 24 56 56 56 20 74 68 65 20   or.** $VVV the 
8c50: 63 6f 6d 70 6c 65 74 65 20 74 65 78 74 20 6f 66  complete text of
8c60: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6e   the parameter n
8c70: 61 6d 65 20 69 73 20 72 65 74 75 72 6e 65 64 2c  ame is returned,
8c80: 20 69 6e 63 6c 75 64 69 6e 67 0a 2a 2a 20 74 68   including.** th
8c90: 65 20 69 6e 69 74 69 61 6c 20 22 3a 22 20 6f 72  e initial ":" or
8ca0: 20 22 24 22 2e 20 20 4e 55 4c 4c 20 69 73 20 72   "$".  NULL is r
8cb0: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 69  eturned if the i
8cc0: 6e 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72  ndex is out of r
8cd0: 61 6e 67 65 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63  ange..*/.const c
8ce0: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 62 69 6e  har *sqlite3_bin
8cf0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
8d00: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
8d10: 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  int);../*.** Ret
8d20: 75 72 6e 20 74 68 65 20 69 6e 64 65 78 20 6f 66  urn the index of
8d30: 20 61 20 70 61 72 61 6d 65 74 65 72 20 77 69 74   a parameter wit
8d40: 68 20 74 68 65 20 67 69 76 65 6e 20 6e 61 6d 65  h the given name
8d50: 2e 20 20 54 68 65 20 6e 61 6d 65 0a 2a 2a 20 6d  .  The name.** m
8d60: 75 73 74 20 6d 61 74 63 68 20 65 78 61 63 74 6c  ust match exactl
8d70: 79 2e 20 20 49 66 20 6e 6f 20 70 61 72 61 6d 65  y.  If no parame
8d80: 74 65 72 20 77 69 74 68 20 74 68 65 20 67 69 76  ter with the giv
8d90: 65 6e 20 6e 61 6d 65 20 69 73 20 66 6f 75 6e 64  en name is found
8da0: 2c 0a 2a 2a 20 72 65 74 75 72 6e 20 30 2e 0a 2a  ,.** return 0..*
8db0: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  /.int sqlite3_bi
8dc0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
8dd0: 65 78 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  ex(sqlite3_stmt*
8de0: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
8df0: 61 6d 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 65 74  ame);../*.** Set
8e00: 20 61 6c 6c 20 74 68 65 20 70 61 72 61 6d 65 74   all the paramet
8e10: 65 72 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 69  ers in the compi
8e20: 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  led SQL statemen
8e30: 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e  t to NULL..*/.in
8e40: 74 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  t sqlite3_clear_
8e50: 62 69 6e 64 69 6e 67 73 28 73 71 6c 69 74 65 33  bindings(sqlite3
8e60: 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  _stmt*);../*.** 
8e70: 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65  Return the numbe
8e80: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
8e90: 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 72  the result set r
8ea0: 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 63  eturned by the c
8eb0: 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51 4c 20 73  ompiled.** SQL s
8ec0: 74 61 74 65 6d 65 6e 74 2e 20 54 68 69 73 20 72  tatement. This r
8ed0: 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 30  outine returns 0
8ee0: 20 69 66 20 70 53 74 6d 74 20 69 73 20 61 6e 20   if pStmt is an 
8ef0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  SQL statement.**
8f00: 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 72   that does not r
8f10: 65 74 75 72 6e 20 64 61 74 61 20 28 66 6f 72 20  eturn data (for 
8f20: 65 78 61 6d 70 6c 65 20 61 6e 20 55 50 44 41 54  example an UPDAT
8f30: 45 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  E)..*/.int sqlit
8f40: 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
8f50: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
8f60: 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  tmt);../*.** The
8f70: 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
8f80: 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53   is a compiled S
8f90: 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68  QL statement. Th
8fa0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  is function retu
8fb0: 72 6e 73 0a 2a 2a 20 74 68 65 20 63 6f 6c 75 6d  rns.** the colum
8fc0: 6e 20 68 65 61 64 69 6e 67 20 66 6f 72 20 74 68  n heading for th
8fd0: 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20  e Nth column of 
8fe0: 74 68 61 74 20 73 74 61 74 65 6d 65 6e 74 2c 20  that statement, 
8ff0: 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 0a 2a  where N is the.*
9000: 2a 20 73 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f  * second functio
9010: 6e 20 70 61 72 61 6d 65 74 65 72 2e 20 20 54 68  n parameter.  Th
9020: 65 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65  e string returne
9030: 64 20 69 73 20 55 54 46 2d 38 20 66 6f 72 0a 2a  d is UTF-8 for.*
9040: 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  * sqlite3_column
9050: 5f 6e 61 6d 65 28 29 20 61 6e 64 20 55 54 46 2d  _name() and UTF-
9060: 31 36 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 63  16 for sqlite3_c
9070: 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 29 2e 0a  olumn_name16()..
9080: 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  */.const char *s
9090: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
90a0: 6d 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  me(sqlite3_stmt*
90b0: 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f 69  ,int);.const voi
90c0: 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
90d0: 6e 5f 6e 61 6d 65 31 36 28 73 71 6c 69 74 65 33  n_name16(sqlite3
90e0: 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a  _stmt*,int);../*
90f0: 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
9100: 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 66 6f  gument to the fo
9110: 6c 6c 6f 77 69 6e 67 20 63 61 6c 6c 73 20 69 73  llowing calls is
9120: 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20   a compiled SQL 
9130: 73 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a 20 54 68  statement..** Th
9140: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65  ese functions re
9150: 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  turn information
9160: 20 61 62 6f 75 74 20 74 68 65 20 4e 74 68 20 63   about the Nth c
9170: 6f 6c 75 6d 6e 20 72 65 74 75 72 6e 65 64 20 62  olumn returned b
9180: 79 20 0a 2a 2a 20 74 68 65 20 73 74 61 74 65 6d  y .** the statem
9190: 65 6e 74 2c 20 77 68 65 72 65 20 4e 20 69 73 20  ent, where N is 
91a0: 74 68 65 20 73 65 63 6f 6e 64 20 66 75 6e 63 74  the second funct
91b0: 69 6f 6e 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a  ion argument..**
91c0: 0a 2a 2a 20 49 66 20 74 68 65 20 4e 74 68 20 63  .** If the Nth c
91d0: 6f 6c 75 6d 6e 20 72 65 74 75 72 6e 65 64 20 62  olumn returned b
91e0: 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  y the statement 
91f0: 69 73 20 6e 6f 74 20 61 20 63 6f 6c 75 6d 6e 20  is not a column 
9200: 76 61 6c 75 65 2c 0a 2a 2a 20 74 68 65 6e 20 61  value,.** then a
9210: 6c 6c 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69  ll of the functi
9220: 6f 6e 73 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e  ons return NULL.
9230: 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20   Otherwise, the 
9240: 72 65 74 75 72 6e 20 74 68 65 20 0a 2a 2a 20 6e  return the .** n
9250: 61 6d 65 20 6f 66 20 74 68 65 20 61 74 74 61 63  ame of the attac
9260: 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 74 61  hed database, ta
9270: 62 6c 65 20 61 6e 64 20 63 6f 6c 75 6d 6e 20 74  ble and column t
9280: 68 61 74 20 74 68 65 20 65 78 70 72 65 73 73 69  hat the expressi
9290: 6f 6e 0a 2a 2a 20 65 78 74 72 61 63 74 73 20 61  on.** extracts a
92a0: 20 76 61 6c 75 65 20 66 72 6f 6d 2e 0a 2a 2a 0a   value from..**.
92b0: 2a 2a 20 41 73 20 77 69 74 68 20 61 6c 6c 20 6f  ** As with all o
92c0: 74 68 65 72 20 53 51 4c 69 74 65 20 41 50 49 73  ther SQLite APIs
92d0: 2c 20 74 68 6f 73 65 20 70 6f 73 74 66 69 78 65  , those postfixe
92e0: 64 20 77 69 74 68 20 22 31 36 22 20 72 65 74 75  d with "16" retu
92f0: 72 6e 20 55 54 46 2d 31 36 0a 2a 2a 20 65 6e 63  rn UTF-16.** enc
9300: 6f 64 65 64 20 73 74 72 69 6e 67 73 2c 20 74 68  oded strings, th
9310: 65 20 6f 74 68 65 72 20 66 75 6e 63 74 69 6f 6e  e other function
9320: 73 20 72 65 74 75 72 6e 20 55 54 46 2d 38 2e 20  s return UTF-8. 
9330: 54 68 65 20 6d 65 6d 6f 72 79 20 63 6f 6e 74 61  The memory conta
9340: 69 6e 69 6e 67 0a 2a 2a 20 74 68 65 20 72 65 74  ining.** the ret
9350: 75 72 6e 65 64 20 73 74 72 69 6e 67 73 20 69 73  urned strings is
9360: 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 74 68 65   valid until the
9370: 20 73 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   statement handl
9380: 65 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 28 29  e is finalized()
9390: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 41 50  ..**.** These AP
93a0: 49 73 20 61 72 65 20 6f 6e 6c 79 20 61 76 61 69  Is are only avai
93b0: 6c 61 62 6c 65 20 69 66 20 74 68 65 20 6c 69 62  lable if the lib
93c0: 72 61 72 79 20 77 61 73 20 63 6f 6d 70 69 6c 65  rary was compile
93d0: 64 20 77 69 74 68 20 74 68 65 20 0a 2a 2a 20 53  d with the .** S
93e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c  QLITE_ENABLE_COL
93f0: 55 4d 4e 5f 4d 45 54 41 44 41 54 41 20 70 72 65  UMN_METADATA pre
9400: 70 72 6f 63 65 73 73 6f 72 20 73 79 6d 62 6f 6c  processor symbol
9410: 20 64 65 66 69 6e 65 64 2e 0a 2a 2f 0a 63 6f 6e   defined..*/.con
9420: 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
9430: 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
9440: 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74  _name(sqlite3_st
9450: 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20  mt*,int);.const 
9460: 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f  void *sqlite3_co
9470: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
9480: 6d 65 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d  me16(sqlite3_stm
9490: 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20 63  t*,int);.const c
94a0: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  har *sqlite3_col
94b0: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 73  umn_table_name(s
94c0: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74  qlite3_stmt*,int
94d0: 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73  );.const void *s
94e0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
94f0: 62 6c 65 5f 6e 61 6d 65 31 36 28 73 71 6c 69 74  ble_name16(sqlit
9500: 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 63  e3_stmt*,int);.c
9510: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
9520: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
9530: 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74  _name(sqlite3_st
9540: 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20  mt*,int);.const 
9550: 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f  void *sqlite3_co
9560: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
9570: 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  16(sqlite3_stmt*
9580: 2c 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  ,int);../*.** Th
9590: 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
95a0: 72 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 64 20  r is a compiled 
95b0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 49  SQL statement. I
95c0: 66 20 74 68 69 73 20 73 74 61 74 65 6d 65 6e 74  f this statement
95d0: 0a 2a 2a 20 69 73 20 61 20 53 45 4c 45 43 54 20  .** is a SELECT 
95e0: 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 65 20 4e  statement, the N
95f0: 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65  th column of the
9600: 20 72 65 74 75 72 6e 65 64 20 72 65 73 75 6c 74   returned result
9610: 20 73 65 74 20 0a 2a 2a 20 6f 66 20 74 68 65 20   set .** of the 
9620: 53 45 4c 45 43 54 20 69 73 20 61 20 74 61 62 6c  SELECT is a tabl
9630: 65 20 63 6f 6c 75 6d 6e 20 74 68 65 6e 20 74 68  e column then th
9640: 65 20 64 65 63 6c 61 72 65 64 20 74 79 70 65 20  e declared type 
9650: 6f 66 20 74 68 65 20 74 61 62 6c 65 0a 2a 2a 20  of the table.** 
9660: 63 6f 6c 75 6d 6e 20 69 73 20 72 65 74 75 72 6e  column is return
9670: 65 64 2e 20 49 66 20 74 68 65 20 4e 74 68 20 63  ed. If the Nth c
9680: 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65 73  olumn of the res
9690: 75 6c 74 20 73 65 74 20 69 73 20 6e 6f 74 20 61  ult set is not a
96a0: 74 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d  t table.** colum
96b0: 6e 2c 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70  n, then a NULL p
96c0: 6f 69 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e  ointer is return
96d0: 65 64 2e 20 54 68 65 20 72 65 74 75 72 6e 65 64  ed. The returned
96e0: 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77 61 79   string is alway
96f0: 73 0a 2a 2a 20 55 54 46 2d 38 20 65 6e 63 6f 64  s.** UTF-8 encod
9700: 65 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  ed. For example,
9710: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
9720: 20 73 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43   schema:.**.** C
9730: 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 63  REATE TABLE t1(c
9740: 31 20 56 41 52 49 41 4e 54 29 3b 0a 2a 2a 0a 2a  1 VARIANT);.**.*
9750: 2a 20 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77  * And the follow
9760: 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f  ing statement co
9770: 6d 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45  mpiled:.**.** SE
9780: 4c 45 43 54 20 63 31 20 2b 20 31 2c 20 63 31 20  LECT c1 + 1, c1 
9790: 46 52 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54  FROM t1;.**.** T
97a0: 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65  hen this routine
97b0: 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68   would return th
97c0: 65 20 73 74 72 69 6e 67 20 22 56 41 52 49 41 4e  e string "VARIAN
97d0: 54 22 20 66 6f 72 20 74 68 65 20 73 65 63 6f 6e  T" for the secon
97e0: 64 0a 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c 75  d.** result colu
97f0: 6d 6e 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20 61  mn (i==1), and a
9800: 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f   NULL pointer fo
9810: 72 20 74 68 65 20 66 69 72 73 74 20 72 65 73 75  r the first resu
9820: 6c 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d  lt column.** (i=
9830: 3d 30 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68  =0)..*/.const ch
9840: 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ar *sqlite3_colu
9850: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 73 71 6c 69  mn_decltype(sqli
9860: 74 65 33 5f 73 74 6d 74 20 2a 2c 20 69 6e 74 20  te3_stmt *, int 
9870: 69 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66  i);../*.** The f
9880: 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
9890: 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  s a compiled SQL
98a0: 20 73 74 61 74 65 6d 65 6e 74 2e 20 49 66 20 74   statement. If t
98b0: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  his statement.**
98c0: 20 69 73 20 61 20 53 45 4c 45 43 54 20 73 74 61   is a SELECT sta
98d0: 74 65 6d 65 6e 74 2c 20 74 68 65 20 4e 74 68 20  tement, the Nth 
98e0: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65  column of the re
98f0: 74 75 72 6e 65 64 20 72 65 73 75 6c 74 20 73 65  turned result se
9900: 74 20 0a 2a 2a 20 6f 66 20 74 68 65 20 53 45 4c  t .** of the SEL
9910: 45 43 54 20 69 73 20 61 20 74 61 62 6c 65 20 63  ECT is a table c
9920: 6f 6c 75 6d 6e 20 74 68 65 6e 20 74 68 65 20 64  olumn then the d
9930: 65 63 6c 61 72 65 64 20 74 79 70 65 20 6f 66 20  eclared type of 
9940: 74 68 65 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c  the table.** col
9950: 75 6d 6e 20 69 73 20 72 65 74 75 72 6e 65 64 2e  umn is returned.
9960: 20 49 66 20 74 68 65 20 4e 74 68 20 63 6f 6c 75   If the Nth colu
9970: 6d 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  mn of the result
9980: 20 73 65 74 20 69 73 20 6e 6f 74 20 61 74 20 74   set is not at t
9990: 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c 20  able.** column, 
99a0: 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  then a NULL poin
99b0: 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ter is returned.
99c0: 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73 74   The returned st
99d0: 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 0a 2a  ring is always.*
99e0: 2a 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64  * UTF-16 encoded
99f0: 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  . For example, i
9a00: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  n the database s
9a10: 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43 52 45  chema:.**.** CRE
9a20: 41 54 45 20 54 41 42 4c 45 20 74 31 28 63 31 20  ATE TABLE t1(c1 
9a30: 49 4e 54 45 47 45 52 29 3b 0a 2a 2a 0a 2a 2a 20  INTEGER);.**.** 
9a40: 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  And the followin
9a50: 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70  g statement comp
9a60: 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c 45  iled:.**.** SELE
9a70: 43 54 20 63 31 20 2b 20 31 2c 20 63 31 20 46 52  CT c1 + 1, c1 FR
9a80: 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54 68 65  OM t1;.**.** The
9a90: 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  n this routine w
9aa0: 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20  ould return the 
9ab0: 73 74 72 69 6e 67 20 22 49 4e 54 45 47 45 52 22  string "INTEGER"
9ac0: 20 66 6f 72 20 74 68 65 20 73 65 63 6f 6e 64 0a   for the second.
9ad0: 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e  ** result column
9ae0: 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20 61 20 4e   (i==1), and a N
9af0: 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72 20  ULL pointer for 
9b00: 74 68 65 20 66 69 72 73 74 20 72 65 73 75 6c 74  the first result
9b10: 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d 3d 30   column.** (i==0
9b20: 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69 64  )..*/.const void
9b30: 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   *sqlite3_column
9b40: 5f 64 65 63 6c 74 79 70 65 31 36 28 73 71 6c 69  _decltype16(sqli
9b50: 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a  te3_stmt*,int);.
9b60: 0a 2f 2a 20 0a 2a 2a 20 41 66 74 65 72 20 61 6e  ./* .** After an
9b70: 20 53 51 4c 20 71 75 65 72 79 20 68 61 73 20 62   SQL query has b
9b80: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
9b90: 68 20 61 20 63 61 6c 6c 20 74 6f 20 65 69 74 68  h a call to eith
9ba0: 65 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72  er.** sqlite3_pr
9bb0: 65 70 61 72 65 28 29 20 6f 72 20 73 71 6c 69 74  epare() or sqlit
9bc0: 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c 20  e3_prepare16(), 
9bd0: 74 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74 69  then this functi
9be0: 6f 6e 20 6d 75 73 74 20 62 65 0a 2a 2a 20 63 61  on must be.** ca
9bf0: 6c 6c 65 64 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  lled one or more
9c00: 20 74 69 6d 65 73 20 74 6f 20 65 78 65 63 75 74   times to execut
9c10: 65 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2e  e the statement.
9c20: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75 72  .**.** The retur
9c30: 6e 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  n value will be 
9c40: 65 69 74 68 65 72 20 53 51 4c 49 54 45 5f 42 55  either SQLITE_BU
9c50: 53 59 2c 20 53 51 4c 49 54 45 5f 44 4f 4e 45 2c  SY, SQLITE_DONE,
9c60: 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 52 4f 57 2c   .** SQLITE_ROW,
9c70: 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 2c 20 6f   SQLITE_ERROR, o
9c80: 72 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2e  r SQLITE_MISUSE.
9c90: 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 42 55  .**.** SQLITE_BU
9ca0: 53 59 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  SY means that th
9cb0: 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
9cc0: 65 20 61 74 74 65 6d 70 74 65 64 20 74 6f 20 6f  e attempted to o
9cd0: 70 65 6e 0a 2a 2a 20 61 20 6c 6f 63 6b 65 64 20  pen.** a locked 
9ce0: 64 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65  database and the
9cf0: 72 65 20 69 73 20 6e 6f 20 62 75 73 79 20 63 61  re is no busy ca
9d00: 6c 6c 62 61 63 6b 20 72 65 67 69 73 74 65 72 65  llback registere
9d10: 64 2e 0a 2a 2a 20 43 61 6c 6c 20 73 71 6c 69 74  d..** Call sqlit
9d20: 65 33 5f 73 74 65 70 28 29 20 61 67 61 69 6e 20  e3_step() again 
9d30: 74 6f 20 72 65 74 72 79 20 74 68 65 20 6f 70 65  to retry the ope
9d40: 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f  n..**.** SQLITE_
9d50: 44 4f 4e 45 20 6d 65 61 6e 73 20 74 68 61 74 20  DONE means that 
9d60: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68 61  the statement ha
9d70: 73 20 66 69 6e 69 73 68 65 64 20 65 78 65 63 75  s finished execu
9d80: 74 69 6e 67 0a 2a 2a 20 73 75 63 63 65 73 73 66  ting.** successf
9d90: 75 6c 6c 79 2e 20 20 73 71 6c 69 74 65 33 5f 73  ully.  sqlite3_s
9da0: 74 65 70 28 29 20 73 68 6f 75 6c 64 20 6e 6f 74  tep() should not
9db0: 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e   be called again
9dc0: 20 6f 6e 20 74 68 69 73 20 76 69 72 74 75 61 6c   on this virtual
9dd0: 0a 2a 2a 20 6d 61 63 68 69 6e 65 2e 0a 2a 2a 0a  .** machine..**.
9de0: 2a 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73 74  ** If the SQL st
9df0: 61 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 78  atement being ex
9e00: 65 63 75 74 65 64 20 72 65 74 75 72 6e 73 20 61  ecuted returns a
9e10: 6e 79 20 64 61 74 61 2c 20 74 68 65 6e 20 0a 2a  ny data, then .*
9e20: 2a 20 53 51 4c 49 54 45 5f 52 4f 57 20 69 73 20  * SQLITE_ROW is 
9e30: 72 65 74 75 72 6e 65 64 20 65 61 63 68 20 74 69  returned each ti
9e40: 6d 65 20 61 20 6e 65 77 20 72 6f 77 20 6f 66 20  me a new row of 
9e50: 64 61 74 61 20 69 73 20 72 65 61 64 79 0a 2a 2a  data is ready.**
9e60: 20 66 6f 72 20 70 72 6f 63 65 73 73 69 6e 67 20   for processing 
9e70: 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 20 54  by the caller. T
9e80: 68 65 20 76 61 6c 75 65 73 20 6d 61 79 20 62 65  he values may be
9e90: 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 0a   accessed using.
9ea0: 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  ** the sqlite3_c
9eb0: 6f 6c 75 6d 6e 5f 2a 28 29 20 66 75 6e 63 74 69  olumn_*() functi
9ec0: 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20 62 65  ons described be
9ed0: 6c 6f 77 2e 20 73 71 6c 69 74 65 33 5f 73 74 65  low. sqlite3_ste
9ee0: 70 28 29 0a 2a 2a 20 69 73 20 63 61 6c 6c 65 64  p().** is called
9ef0: 20 61 67 61 69 6e 20 74 6f 20 72 65 74 72 69 65   again to retrie
9f00: 76 65 20 74 68 65 20 6e 65 78 74 20 72 6f 77 20  ve the next row 
9f10: 6f 66 20 64 61 74 61 2e 0a 2a 2a 20 0a 2a 2a 20  of data..** .** 
9f20: 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 6d 65 61  SQLITE_ERROR mea
9f30: 6e 73 20 74 68 61 74 20 61 20 72 75 6e 2d 74 69  ns that a run-ti
9f40: 6d 65 20 65 72 72 6f 72 20 28 73 75 63 68 20 61  me error (such a
9f50: 73 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a  s a constraint.*
9f60: 2a 20 76 69 6f 6c 61 74 69 6f 6e 29 20 68 61 73  * violation) has
9f70: 20 6f 63 63 75 72 72 65 64 2e 20 20 73 71 6c 69   occurred.  sqli
9f80: 74 65 33 5f 73 74 65 70 28 29 20 73 68 6f 75 6c  te3_step() shoul
9f90: 64 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65 64 20  d not be called 
9fa0: 61 67 61 69 6e 20 6f 6e 0a 2a 2a 20 74 68 65 20  again on.** the 
9fb0: 56 4d 2e 20 4d 6f 72 65 20 69 6e 66 6f 72 6d 61  VM. More informa
9fc0: 74 69 6f 6e 20 6d 61 79 20 62 65 20 66 6f 75 6e  tion may be foun
9fd0: 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71 6c  d by calling sql
9fe0: 69 74 65 33 5f 65 72 72 6d 73 67 28 29 2e 0a 2a  ite3_errmsg()..*
9ff0: 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 4d 49 53 55  *.** SQLITE_MISU
a000: 53 45 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  SE means that th
a010: 65 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  e this routine w
a020: 61 73 20 63 61 6c 6c 65 64 20 69 6e 61 70 70 72  as called inappr
a030: 6f 70 72 69 61 74 65 6c 79 2e 0a 2a 2a 20 50 65  opriately..** Pe
a040: 72 68 61 70 73 20 69 74 20 77 61 73 20 63 61 6c  rhaps it was cal
a050: 6c 65 64 20 6f 6e 20 61 20 76 69 72 74 75 61 6c  led on a virtual
a060: 20 6d 61 63 68 69 6e 65 20 74 68 61 74 20 68 61   machine that ha
a070: 64 20 61 6c 72 65 61 64 79 20 62 65 65 6e 0a 2a  d already been.*
a080: 2a 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 20 6f  * finalized or o
a090: 6e 20 6f 6e 65 20 74 68 61 74 20 68 61 64 20 70  n one that had p
a0a0: 72 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72 6e  reviously return
a0b0: 65 64 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20  ed SQLITE_ERROR 
a0c0: 6f 72 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 4f 4e  or.** SQLITE_DON
a0d0: 45 2e 20 20 4f 72 20 69 74 20 63 6f 75 6c 64 20  E.  Or it could 
a0e0: 62 65 20 74 68 65 20 63 61 73 65 20 74 68 65 20  be the case the 
a0f0: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
a100: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20  e connection.** 
a110: 69 73 20 62 65 69 6e 67 20 75 73 65 64 20 73 69  is being used si
a120: 6d 75 6c 61 74 61 6e 65 6f 75 73 6c 79 20 62 79  mulataneously by
a130: 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74 68 72   two or more thr
a140: 65 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  eads..*/.int sql
a150: 69 74 65 33 5f 73 74 65 70 28 73 71 6c 69 74 65  ite3_step(sqlite
a160: 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  3_stmt*);../*.**
a170: 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62   Return the numb
a180: 65 72 20 6f 66 20 76 61 6c 75 65 73 20 69 6e 20  er of values in 
a190: 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20  the current row 
a1a0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
a1b0: 74 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 61  t..**.** After a
a1c0: 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
a1d0: 5f 73 74 65 70 28 29 20 74 68 61 74 20 72 65 74  _step() that ret
a1e0: 75 72 6e 73 20 53 51 4c 49 54 45 5f 52 4f 57 2c  urns SQLITE_ROW,
a1f0: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 0a 2a 2a   this routine.**
a200: 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65   will return the
a210: 20 73 61 6d 65 20 76 61 6c 75 65 20 61 73 20 74   same value as t
a220: 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  he sqlite3_colum
a230: 6e 5f 63 6f 75 6e 74 28 29 20 66 75 6e 63 74 69  n_count() functi
a240: 6f 6e 2e 0a 2a 2a 20 41 66 74 65 72 20 73 71 6c  on..** After sql
a250: 69 74 65 33 5f 73 74 65 70 28 29 20 68 61 73 20  ite3_step() has 
a260: 72 65 74 75 72 6e 65 64 20 61 6e 20 53 51 4c 49  returned an SQLI
a270: 54 45 5f 44 4f 4e 45 2c 20 53 51 4c 49 54 45 5f  TE_DONE, SQLITE_
a280: 42 55 53 59 20 6f 72 0a 2a 2a 20 65 72 72 6f 72  BUSY or.** error
a290: 20 63 6f 64 65 2c 20 6f 72 20 62 65 66 6f 72 65   code, or before
a2a0: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
a2b0: 68 61 73 20 62 65 65 6e 20 63 61 6c 6c 65 64 20  has been called 
a2c0: 6f 6e 20 61 20 0a 2a 2a 20 63 6f 6d 70 69 6c 65  on a .** compile
a2d0: 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c  d SQL statement,
a2e0: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   this routine re
a2f0: 74 75 72 6e 73 20 7a 65 72 6f 2e 0a 2a 2f 0a 69  turns zero..*/.i
a300: 6e 74 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f  nt sqlite3_data_
a310: 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 73 74  count(sqlite3_st
a320: 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a  mt *pStmt);../*.
a330: 2a 2a 20 56 61 6c 75 65 73 20 61 72 65 20 73 74  ** Values are st
a340: 6f 72 65 64 20 69 6e 20 74 68 65 20 64 61 74 61  ored in the data
a350: 62 61 73 65 20 69 6e 20 6f 6e 65 20 6f 66 20 74  base in one of t
a360: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e  he following fun
a370: 64 61 6d 65 6e 74 61 6c 0a 2a 2a 20 74 79 70 65  damental.** type
a380: 73 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s..*/.#define SQ
a390: 4c 49 54 45 5f 49 4e 54 45 47 45 52 20 20 31 0a  LITE_INTEGER  1.
a3a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
a3b0: 4c 4f 41 54 20 20 20 20 32 0a 2f 2a 20 23 64 65  LOAT    2./* #de
a3c0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 45 58 54  fine SQLITE_TEXT
a3d0: 20 20 33 20 20 2f 2f 20 53 65 65 20 62 65 6c 6f    3  // See belo
a3e0: 77 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  w */.#define SQL
a3f0: 49 54 45 5f 42 4c 4f 42 20 20 20 20 20 34 0a 23  ITE_BLOB     4.#
a400: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 55  define SQLITE_NU
a410: 4c 4c 20 20 20 20 20 35 0a 0a 2f 2a 0a 2a 2a 20  LL     5../*.** 
a420: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32  SQLite version 2
a430: 20 64 65 66 69 6e 65 73 20 53 51 4c 49 54 45 5f   defines SQLITE_
a440: 54 45 58 54 20 64 69 66 66 65 72 65 6e 74 6c 79  TEXT differently
a450: 2e 20 20 54 6f 20 61 6c 6c 6f 77 20 62 6f 74 68  .  To allow both
a460: 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 32 20 61 6e  .** version 2 an
a470: 64 20 76 65 72 73 69 6f 6e 20 33 20 74 6f 20 62  d version 3 to b
a480: 65 20 69 6e 63 6c 75 64 65 64 2c 20 75 6e 64 65  e included, unde
a490: 66 69 6e 65 20 74 68 65 6d 20 62 6f 74 68 20 69  fine them both i
a4a0: 66 20 61 0a 2a 2a 20 63 6f 6e 66 6c 69 63 74 20  f a.** conflict 
a4b0: 69 73 20 73 65 65 6e 2e 20 20 44 65 66 69 6e 65  is seen.  Define
a4c0: 20 53 51 4c 49 54 45 33 5f 54 45 58 54 20 74 6f   SQLITE3_TEXT to
a4d0: 20 62 65 20 74 68 65 20 76 65 72 73 69 6f 6e 20   be the version 
a4e0: 33 20 76 61 6c 75 65 2e 0a 2a 2f 0a 23 69 66 64  3 value..*/.#ifd
a4f0: 65 66 20 53 51 4c 49 54 45 5f 54 45 58 54 0a 23  ef SQLITE_TEXT.#
a500: 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 54 45   undef SQLITE_TE
a510: 58 54 0a 23 65 6c 73 65 0a 23 20 64 65 66 69 6e  XT.#else.# defin
a520: 65 20 53 51 4c 49 54 45 5f 54 45 58 54 20 20 20  e SQLITE_TEXT   
a530: 20 20 33 0a 23 65 6e 64 69 66 0a 23 64 65 66 69    3.#endif.#defi
a540: 6e 65 20 53 51 4c 49 54 45 33 5f 54 45 58 54 20  ne SQLITE3_TEXT 
a550: 20 20 20 20 33 0a 0a 2f 2a 0a 2a 2a 20 54 68 65      3../*.** The
a560: 20 6e 65 78 74 20 67 72 6f 75 70 20 6f 66 20 72   next group of r
a570: 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73 20  outines returns 
a580: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
a590: 74 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f  t the informatio
a5a0: 6e 0a 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c 65  n.** in a single
a5b0: 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 63   column of the c
a5c0: 75 72 72 65 6e 74 20 72 65 73 75 6c 74 20 72 6f  urrent result ro
a5d0: 77 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 49  w of a query.  I
a5e0: 6e 20 65 76 65 72 79 0a 2a 2a 20 63 61 73 65 20  n every.** case 
a5f0: 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  the first parame
a600: 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ter is a pointer
a610: 20 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61 74   to the SQL stat
a620: 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 62 65  ement that is be
a630: 69 6e 67 0a 2a 2a 20 65 78 65 63 75 74 65 64 20  ing.** executed 
a640: 28 74 68 65 20 73 71 6c 69 74 65 5f 73 74 6d 74  (the sqlite_stmt
a650: 2a 20 74 68 61 74 20 77 61 73 20 72 65 74 75 72  * that was retur
a660: 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
a670: 5f 70 72 65 70 61 72 65 28 29 29 20 61 6e 64 0a  _prepare()) and.
a680: 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  ** the second ar
a690: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 69 6e  gument is the in
a6a0: 64 65 78 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  dex of the colum
a6b0: 6e 20 66 6f 72 20 77 68 69 63 68 20 69 6e 66 6f  n for which info
a6c0: 72 6d 61 74 69 6f 6e 20 0a 2a 2a 20 73 68 6f 75  rmation .** shou
a6d0: 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20  ld be returned. 
a6e0: 20 69 43 6f 6c 20 69 73 20 7a 65 72 6f 2d 69 6e   iCol is zero-in
a6f0: 64 65 78 65 64 2e 20 20 54 68 65 20 6c 65 66 74  dexed.  The left
a700: 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 61 73 20  -most column as 
a710: 61 6e 0a 2a 2a 20 69 6e 64 65 78 20 6f 66 20 30  an.** index of 0
a720: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 53  ..**.** If the S
a730: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  QL statement is 
a740: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 70 6f  not currently po
a750: 69 6e 74 20 74 6f 20 61 20 76 61 6c 69 64 20 72  int to a valid r
a760: 6f 77 2c 20 6f 72 20 69 66 20 74 68 65 0a 2a 2a  ow, or if the.**
a770: 20 74 68 65 20 63 6f 6c 75 6c 6d 6e 20 69 6e 64   the colulmn ind
a780: 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e  ex is out of ran
a790: 67 65 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69  ge, the result i
a7a0: 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a  s undefined..**.
a7b0: 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65  ** These routine
a7c0: 73 20 61 74 74 65 6d 70 74 20 74 6f 20 63 6f 6e  s attempt to con
a7d0: 76 65 72 74 20 74 68 65 20 76 61 6c 75 65 20 77  vert the value w
a7e0: 68 65 72 65 20 61 70 70 72 6f 70 72 69 61 74 65  here appropriate
a7f0: 2e 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70 6c  .  For.** exampl
a800: 65 2c 20 69 66 20 74 68 65 20 69 6e 74 65 72 6e  e, if the intern
a810: 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  al representatio
a820: 6e 20 69 73 20 46 4c 4f 41 54 20 61 6e 64 20 61  n is FLOAT and a
a830: 20 74 65 78 74 20 72 65 73 75 6c 74 0a 2a 2a 20   text result.** 
a840: 69 73 20 72 65 71 75 65 73 74 65 64 2c 20 73 70  is requested, sp
a850: 72 69 6e 74 66 28 29 20 69 73 20 75 73 65 64 20  rintf() is used 
a860: 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 6f  internally to do
a870: 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 0a   the conversion.
a880: 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ** automatically
a890: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
a8a0: 20 74 61 62 6c 65 20 64 65 74 61 69 6c 73 20 74   table details t
a8b0: 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 74  he conversions t
a8c0: 68 61 74 0a 2a 2a 20 61 72 65 20 61 70 70 6c 69  hat.** are appli
a8d0: 65 64 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 49 6e 74  ed:.**.**    Int
a8e0: 65 72 6e 61 6c 20 54 79 70 65 20 20 20 20 52 65  ernal Type    Re
a8f0: 71 75 65 73 74 65 64 20 54 79 70 65 20 20 20 20  quested Type    
a900: 20 43 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a 20 20   Conversion.**  
a910: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20    ------------- 
a920: 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     -------------
a930: 2d 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  -    -----------
a940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
a950: 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  **       NULL   
a960: 20 20 20 20 20 20 20 20 20 20 49 4e 54 45 47 45            INTEGE
a970: 52 20 20 20 20 20 20 20 20 20 52 65 73 75 6c 74  R         Result
a980: 20 69 73 20 30 0a 2a 2a 20 20 20 20 20 20 20 4e   is 0.**       N
a990: 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 20  ULL             
a9a0: 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20 20  FLOAT           
a9b0: 52 65 73 75 6c 74 20 69 73 20 30 2e 30 0a 2a 2a  Result is 0.0.**
a9c0: 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
a9d0: 20 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20          TEXT    
a9e0: 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 69          Result i
a9f0: 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  s an empty strin
aa00: 67 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20  g.**       NULL 
aa10: 20 20 20 20 20 20 20 20 20 20 20 20 42 4c 4f 42              BLOB
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 73 75              Resu
aa30: 6c 74 20 69 73 20 61 20 7a 65 72 6f 2d 6c 65 6e  lt is a zero-len
aa40: 67 74 68 20 42 4c 4f 42 0a 2a 2a 20 20 20 20 20  gth BLOB.**     
aa50: 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20    INTEGER       
aa60: 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20     FLOAT        
aa70: 20 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20     Convert from 
aa80: 69 6e 74 65 67 65 72 20 74 6f 20 66 6c 6f 61 74  integer to float
aa90: 0a 2a 2a 20 20 20 20 20 20 20 49 4e 54 45 47 45  .**       INTEGE
aaa0: 52 20 20 20 20 20 20 20 20 20 20 54 45 58 54 20  R          TEXT 
aab0: 20 20 20 20 20 20 20 20 20 20 20 41 53 43 49 49             ASCII
aac0: 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68   rendering of th
aad0: 65 20 69 6e 74 65 67 65 72 0a 2a 2a 20 20 20 20  e integer.**    
aae0: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
aaf0: 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20      BLOB        
ab00: 20 20 20 20 53 61 6d 65 20 61 73 20 66 6f 72 20      Same as for 
ab10: 49 4e 54 45 47 45 52 2d 3e 54 45 58 54 0a 2a 2a  INTEGER->TEXT.**
ab20: 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20         FLOAT    
ab30: 20 20 20 20 20 20 20 20 49 4e 54 45 47 45 52 20          INTEGER 
ab40: 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 20          Convert 
ab50: 66 72 6f 6d 20 66 6c 6f 61 74 20 74 6f 20 69 6e  from float to in
ab60: 74 65 67 65 72 0a 2a 2a 20 20 20 20 20 20 20 46  teger.**       F
ab70: 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 20  LOAT            
ab80: 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20  TEXT            
ab90: 41 53 43 49 49 20 72 65 6e 64 65 72 69 6e 67 20  ASCII rendering 
aba0: 6f 66 20 74 68 65 20 66 6c 6f 61 74 0a 2a 2a 20  of the float.** 
abb0: 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20        FLOAT     
abc0: 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20         BLOB     
abd0: 20 20 20 20 20 20 20 53 61 6d 65 20 61 73 20 46         Same as F
abe0: 4c 4f 41 54 2d 3e 54 45 58 54 0a 2a 2a 20 20 20  LOAT->TEXT.**   
abf0: 20 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20      TEXT        
ac00: 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20       INTEGER    
ac10: 20 20 20 20 20 55 73 65 20 61 74 6f 69 28 29 0a       Use atoi().
ac20: 2a 2a 20 20 20 20 20 20 20 54 45 58 54 20 20 20  **       TEXT   
ac30: 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54 20            FLOAT 
ac40: 20 20 20 20 20 20 20 20 20 20 55 73 65 20 61 74            Use at
ac50: 6f 66 28 29 0a 2a 2a 20 20 20 20 20 20 20 54 45  of().**       TE
ac60: 58 54 20 20 20 20 20 20 20 20 20 20 20 20 20 42  XT             B
ac70: 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 4e  LOB            N
ac80: 6f 20 63 68 61 6e 67 65 0a 2a 2a 20 20 20 20 20  o change.**     
ac90: 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20    BLOB          
aca0: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
acb0: 20 20 20 43 6f 6e 76 65 72 74 20 74 6f 20 54 45     Convert to TE
acc0: 58 54 20 74 68 65 6e 20 75 73 65 20 61 74 6f 69  XT then use atoi
acd0: 28 29 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f 42  ().**       BLOB
ace0: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 4c 4f               FLO
acf0: 41 54 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e  AT           Con
ad00: 76 65 72 74 20 74 6f 20 54 45 58 54 20 74 68 65  vert to TEXT the
ad10: 6e 20 75 73 65 20 61 74 6f 66 28 29 0a 2a 2a 20  n use atof().** 
ad20: 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20        BLOB      
ad30: 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20         TEXT     
ad40: 20 20 20 20 20 20 20 41 64 64 20 61 20 5c 30 30         Add a \00
ad50: 30 20 74 65 72 6d 69 6e 61 74 6f 72 20 69 66 20  0 terminator if 
ad60: 6e 65 65 64 65 64 0a 2a 2a 0a 2a 2a 20 54 68 65  needed.**.** The
ad70: 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 63 63 65 73   following acces
ad80: 73 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 70  s routines are p
ad90: 72 6f 76 69 64 65 64 3a 0a 2a 2a 0a 2a 2a 20 5f  rovided:.**.** _
ada0: 74 79 70 65 28 29 20 20 20 20 20 52 65 74 75 72  type()     Retur
adb0: 6e 20 74 68 65 20 64 61 74 61 74 79 70 65 20 6f  n the datatype o
adc0: 66 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  f the result.  T
add0: 68 69 73 20 69 73 20 6f 6e 65 20 6f 66 0a 2a 2a  his is one of.**
ade0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
adf0: 49 54 45 5f 49 4e 54 45 47 45 52 2c 20 53 51 4c  ITE_INTEGER, SQL
ae00: 49 54 45 5f 46 4c 4f 41 54 2c 20 53 51 4c 49 54  ITE_FLOAT, SQLIT
ae10: 45 5f 54 45 58 54 2c 20 53 51 4c 49 54 45 5f 42  E_TEXT, SQLITE_B
ae20: 4c 4f 42 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20  LOB,.**         
ae30: 20 20 20 20 6f 72 20 53 51 4c 49 54 45 5f 4e 55      or SQLITE_NU
ae40: 4c 4c 2e 0a 2a 2a 20 5f 62 6c 6f 62 28 29 20 20  LL..** _blob()  
ae50: 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 76 61     Return the va
ae60: 6c 75 65 20 6f 66 20 61 20 42 4c 4f 42 2e 0a 2a  lue of a BLOB..*
ae70: 2a 20 5f 62 79 74 65 73 28 29 20 20 20 20 52 65  * _bytes()    Re
ae80: 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  turn the number 
ae90: 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 42 4c  of bytes in a BL
aea0: 4f 42 20 76 61 6c 75 65 20 6f 72 20 74 68 65 20  OB value or the 
aeb0: 6e 75 6d 62 65 72 0a 2a 2a 20 20 20 20 20 20 20  number.**       
aec0: 20 20 20 20 20 20 6f 66 20 62 79 74 65 73 20 69        of bytes i
aed0: 6e 20 61 20 54 45 58 54 20 76 61 6c 75 65 20 72  n a TEXT value r
aee0: 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 55 54  epresented as UT
aef0: 46 2d 38 2e 20 20 54 68 65 20 5c 30 30 30 0a 2a  F-8.  The \000.*
af00: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65  *             te
af10: 72 6d 69 6e 61 74 6f 72 20 69 73 20 69 6e 63 6c  rminator is incl
af20: 75 64 65 64 20 69 6e 20 74 68 65 20 62 79 74 65  uded in the byte
af30: 20 63 6f 75 6e 74 20 66 6f 72 20 54 45 58 54 20   count for TEXT 
af40: 76 61 6c 75 65 73 2e 0a 2a 2a 20 5f 62 79 74 65  values..** _byte
af50: 73 31 36 28 29 20 20 52 65 74 75 72 6e 20 74 68  s16()  Return th
af60: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
af70: 73 20 69 6e 20 61 20 42 4c 4f 42 20 76 61 6c 75  s in a BLOB valu
af80: 65 20 6f 72 20 74 68 65 20 6e 75 6d 62 65 72 0a  e or the number.
af90: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 6f  **             o
afa0: 66 20 62 79 74 65 73 20 69 6e 20 61 20 54 45 58  f bytes in a TEX
afb0: 54 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  T value represen
afc0: 74 65 64 20 61 73 20 55 54 46 2d 31 36 2e 20 20  ted as UTF-16.  
afd0: 54 68 65 20 5c 75 30 30 30 30 0a 2a 2a 20 20 20  The \u0000.**   
afe0: 20 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e            termin
aff0: 61 74 6f 72 20 69 73 20 69 6e 63 6c 75 64 65 64  ator is included
b000: 20 69 6e 20 74 68 65 20 62 79 74 65 20 63 6f 75   in the byte cou
b010: 6e 74 20 66 6f 72 20 54 45 58 54 20 76 61 6c 75  nt for TEXT valu
b020: 65 73 2e 0a 2a 2a 20 5f 64 6f 75 62 6c 65 28 29  es..** _double()
b030: 20 20 20 52 65 74 75 72 6e 20 61 20 46 4c 4f 41     Return a FLOA
b040: 54 20 76 61 6c 75 65 2e 0a 2a 2a 20 5f 69 6e 74  T value..** _int
b050: 28 29 20 20 20 20 20 20 52 65 74 75 72 6e 20 61  ()      Return a
b060: 6e 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65 20  n INTEGER value 
b070: 69 6e 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70  in the host comp
b080: 75 74 65 72 27 73 20 6e 61 74 69 76 65 0a 2a 2a  uter's native.**
b090: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
b0a0: 65 67 65 72 20 72 65 70 72 65 73 65 6e 74 61 74  eger representat
b0b0: 69 6f 6e 2e 20 20 54 68 69 73 20 6d 69 67 68 74  ion.  This might
b0c0: 20 62 65 20 65 69 74 68 65 72 20 61 20 33 32 2d   be either a 32-
b0d0: 20 6f 72 20 36 34 2d 62 69 74 0a 2a 2a 20 20 20   or 64-bit.**   
b0e0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 67 65            intege
b0f0: 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74  r depending on t
b100: 68 65 20 68 6f 73 74 2e 0a 2a 2a 20 5f 69 6e 74  he host..** _int
b110: 36 34 28 29 20 20 20 20 52 65 74 75 72 6e 20 61  64()    Return a
b120: 6e 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65 20  n INTEGER value 
b130: 61 73 20 61 20 36 34 2d 62 69 74 20 73 69 67 6e  as a 64-bit sign
b140: 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 5f  ed integer..** _
b150: 74 65 78 74 28 29 20 20 20 20 20 52 65 74 75 72  text()     Retur
b160: 6e 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 55  n the value as U
b170: 54 46 2d 38 20 74 65 78 74 2e 0a 2a 2a 20 5f 74  TF-8 text..** _t
b180: 65 78 74 31 36 28 29 20 20 20 52 65 74 75 72 6e  ext16()   Return
b190: 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 55 54   the value as UT
b1a0: 46 2d 31 36 20 74 65 78 74 2e 0a 2a 2f 0a 63 6f  F-16 text..*/.co
b1b0: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
b1c0: 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 73 71  3_column_blob(sq
b1d0: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
b1e0: 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69   iCol);.int sqli
b1f0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
b200: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
b210: 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73  int iCol);.int s
b220: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
b230: 74 65 73 31 36 28 73 71 6c 69 74 65 33 5f 73 74  tes16(sqlite3_st
b240: 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a  mt*, int iCol);.
b250: 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63  double sqlite3_c
b260: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 73 71 6c  olumn_double(sql
b270: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
b280: 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74  iCol);.int sqlit
b290: 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 73 71  e3_column_int(sq
b2a0: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
b2b0: 20 69 43 6f 6c 29 3b 0a 73 71 6c 69 74 65 5f 69   iCol);.sqlite_i
b2c0: 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nt64 sqlite3_col
b2d0: 75 6d 6e 5f 69 6e 74 36 34 28 73 71 6c 69 74 65  umn_int64(sqlite
b2e0: 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f  3_stmt*, int iCo
b2f0: 6c 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69 67 6e  l);.const unsign
b300: 65 64 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  ed char *sqlite3
b310: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 73 71 6c  _column_text(sql
b320: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
b330: 69 43 6f 6c 29 3b 0a 63 6f 6e 73 74 20 76 6f 69  iCol);.const voi
b340: 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
b350: 6e 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65 33  n_text16(sqlite3
b360: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
b370: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
b380: 6f 6c 75 6d 6e 5f 74 79 70 65 28 73 71 6c 69 74  olumn_type(sqlit
b390: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43  e3_stmt*, int iC
b3a0: 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  ol);.int sqlite3
b3b0: 5f 63 6f 6c 75 6d 6e 5f 6e 75 6d 65 72 69 63 5f  _column_numeric_
b3c0: 74 79 70 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  type(sqlite3_stm
b3d0: 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 73  t*, int iCol);.s
b3e0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 73 71  qlite3_value *sq
b3f0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c  lite3_column_val
b400: 75 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  ue(sqlite3_stmt*
b410: 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 0a 2f 2a  , int iCol);../*
b420: 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
b430: 66 69 6e 61 6c 69 7a 65 28 29 20 66 75 6e 63 74  finalize() funct
b440: 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 74 6f  ion is called to
b450: 20 64 65 6c 65 74 65 20 61 20 63 6f 6d 70 69 6c   delete a compil
b460: 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d  ed.** SQL statem
b470: 65 6e 74 20 6f 62 74 61 69 6e 65 64 20 62 79 20  ent obtained by 
b480: 61 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20  a previous call 
b490: 74 6f 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  to sqlite3_prepa
b4a0: 72 65 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74  re().** or sqlit
b4b0: 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2e 20  e3_prepare16(). 
b4c0: 49 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  If the statement
b4d0: 20 77 61 73 20 65 78 65 63 75 74 65 64 20 73 75   was executed su
b4e0: 63 63 65 73 73 66 75 6c 6c 79 2c 20 6f 72 0a 2a  ccessfully, or.*
b4f0: 2a 20 6e 6f 74 20 65 78 65 63 75 74 65 64 20 61  * not executed a
b500: 74 20 61 6c 6c 2c 20 74 68 65 6e 20 53 51 4c 49  t all, then SQLI
b510: 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e 65  TE_OK is returne
b520: 64 2e 20 49 66 20 65 78 65 63 75 74 69 6f 6e 20  d. If execution 
b530: 6f 66 20 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d  of the.** statem
b540: 65 6e 74 20 66 61 69 6c 65 64 20 74 68 65 6e 20  ent failed then 
b550: 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  an error code is
b560: 20 72 65 74 75 72 6e 65 64 2e 20 0a 2a 2a 0a 2a   returned. .**.*
b570: 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63  * This routine c
b580: 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61 74 20  an be called at 
b590: 61 6e 79 20 70 6f 69 6e 74 20 64 75 72 69 6e 67  any point during
b5a0: 20 74 68 65 20 65 78 65 63 75 74 69 6f 6e 20 6f   the execution o
b5b0: 66 20 74 68 65 0a 2a 2a 20 76 69 72 74 75 61 6c  f the.** virtual
b5c0: 20 6d 61 63 68 69 6e 65 2e 20 20 49 66 20 74 68   machine.  If th
b5d0: 65 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e  e virtual machin
b5e0: 65 20 68 61 73 20 6e 6f 74 20 63 6f 6d 70 6c 65  e has not comple
b5f0: 74 65 64 20 65 78 65 63 75 74 69 6f 6e 0a 2a 2a  ted execution.**
b600: 20 77 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69   when this routi
b610: 6e 65 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68  ne is called, th
b620: 61 74 20 69 73 20 6c 69 6b 65 20 65 6e 63 6f 75  at is like encou
b630: 6e 74 65 72 69 6e 67 20 61 6e 20 65 72 72 6f 72  ntering an error
b640: 20 6f 72 0a 2a 2a 20 61 6e 20 69 6e 74 65 72 72   or.** an interr
b650: 75 70 74 2e 20 20 28 53 65 65 20 73 71 6c 69 74  upt.  (See sqlit
b660: 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2e 29  e3_interrupt().)
b670: 20 20 49 6e 63 6f 6d 70 6c 65 74 65 20 75 70 64    Incomplete upd
b680: 61 74 65 73 20 6d 61 79 20 62 65 0a 2a 2a 20 72  ates may be.** r
b690: 6f 6c 6c 65 64 20 62 61 63 6b 20 61 6e 64 20 74  olled back and t
b6a0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 63  ransactions canc
b6b0: 65 6c 6c 65 64 2c 20 20 64 65 70 65 6e 64 69 6e  elled,  dependin
b6c0: 67 20 6f 6e 20 74 68 65 20 63 69 72 63 75 6d 73  g on the circums
b6d0: 74 61 6e 63 65 73 2c 0a 2a 2a 20 61 6e 64 20 74  tances,.** and t
b6e0: 68 65 20 72 65 73 75 6c 74 20 63 6f 64 65 20 72  he result code r
b6f0: 65 74 75 72 6e 65 64 20 77 69 6c 6c 20 62 65 20  eturned will be 
b700: 53 51 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 2a 2f  SQLITE_ABORT..*/
b710: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 66 69 6e  .int sqlite3_fin
b720: 61 6c 69 7a 65 28 73 71 6c 69 74 65 33 5f 73 74  alize(sqlite3_st
b730: 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a  mt *pStmt);../*.
b740: 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 72  ** The sqlite3_r
b750: 65 73 65 74 28 29 20 66 75 6e 63 74 69 6f 6e 20  eset() function 
b760: 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 72 65 73  is called to res
b770: 65 74 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51  et a compiled SQ
b780: 4c 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 6f  L.** statement o
b790: 62 74 61 69 6e 65 64 20 62 79 20 61 20 70 72 65  btained by a pre
b7a0: 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20 73 71  vious call to sq
b7b0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20  lite3_prepare() 
b7c0: 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72  or.** sqlite3_pr
b7d0: 65 70 61 72 65 31 36 28 29 20 62 61 63 6b 20 74  epare16() back t
b7e0: 6f 20 69 74 27 73 20 69 6e 69 74 69 61 6c 20 73  o it's initial s
b7f0: 74 61 74 65 2c 20 72 65 61 64 79 20 74 6f 20 62  tate, ready to b
b800: 65 20 72 65 2d 65 78 65 63 75 74 65 64 2e 0a 2a  e re-executed..*
b810: 2a 20 41 6e 79 20 53 51 4c 20 73 74 61 74 65 6d  * Any SQL statem
b820: 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 74 68  ent variables th
b830: 61 74 20 68 61 64 20 76 61 6c 75 65 73 20 62 6f  at had values bo
b840: 75 6e 64 20 74 6f 20 74 68 65 6d 20 75 73 69 6e  und to them usin
b850: 67 0a 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33  g.** the sqlite3
b860: 5f 62 69 6e 64 5f 2a 28 29 20 41 50 49 20 72 65  _bind_*() API re
b870: 74 61 69 6e 20 74 68 65 69 72 20 76 61 6c 75 65  tain their value
b880: 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  s..*/.int sqlite
b890: 33 5f 72 65 73 65 74 28 73 71 6c 69 74 65 33 5f  3_reset(sqlite3_
b8a0: 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f  stmt *pStmt);../
b8b0: 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69  *.** The followi
b8c0: 6e 67 20 74 77 6f 20 66 75 6e 63 74 69 6f 6e 73  ng two functions
b8d0: 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 64 64   are used to add
b8e0: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20   user functions 
b8f0: 6f 72 20 61 67 67 72 65 67 61 74 65 73 0a 2a 2a  or aggregates.**
b900: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20   implemented in 
b910: 43 20 74 6f 20 74 68 65 20 53 51 4c 20 6c 61 6e  C to the SQL lan
b920: 67 61 75 67 65 20 69 6e 74 65 72 70 72 65 74 65  gauge interprete
b930: 64 20 62 79 20 53 51 4c 69 74 65 2e 20 54 68 65  d by SQLite. The
b940: 0a 2a 2a 20 64 69 66 66 65 72 65 6e 63 65 20 6f  .** difference o
b950: 6e 6c 79 20 62 65 74 77 65 65 6e 20 74 68 65 20  nly between the 
b960: 74 77 6f 20 69 73 20 74 68 61 74 20 74 68 65 20  two is that the 
b970: 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
b980: 2c 20 74 68 65 0a 2a 2a 20 6e 61 6d 65 20 6f 66  , the.** name of
b990: 20 74 68 65 20 28 73 63 61 6c 61 72 29 20 66 75   the (scalar) fu
b9a0: 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67 72 65 67  nction or aggreg
b9b0: 61 74 65 2c 20 69 73 20 65 6e 63 6f 64 65 64 20  ate, is encoded 
b9c0: 69 6e 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a 20  in UTF-8 for.** 
b9d0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
b9e0: 75 6e 63 74 69 6f 6e 28 29 20 61 6e 64 20 55 54  unction() and UT
b9f0: 46 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65 33  F-16 for sqlite3
ba00: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
ba10: 31 36 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  16()..**.** The 
ba20: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
ba30: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 68  s the database h
ba40: 61 6e 64 6c 65 20 74 68 61 74 20 74 68 65 20 6e  andle that the n
ba50: 65 77 20 66 75 6e 63 74 69 6f 6e 20 6f 72 0a 2a  ew function or.*
ba60: 2a 20 61 67 67 72 65 67 61 74 65 20 69 73 20 74  * aggregate is t
ba70: 6f 20 62 65 20 61 64 64 65 64 20 74 6f 2e 20 49  o be added to. I
ba80: 66 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67 72  f a single progr
ba90: 61 6d 20 75 73 65 73 20 6d 6f 72 65 20 74 68 61  am uses more tha
baa0: 6e 20 6f 6e 65 0a 2a 2a 20 64 61 74 61 62 61 73  n one.** databas
bab0: 65 20 68 61 6e 64 6c 65 20 69 6e 74 65 72 6e 61  e handle interna
bac0: 6c 6c 79 2c 20 74 68 65 6e 20 75 73 65 72 20 66  lly, then user f
bad0: 75 6e 63 74 69 6f 6e 73 20 6f 72 20 61 67 67 72  unctions or aggr
bae0: 65 67 61 74 65 73 20 6d 75 73 74 20 0a 2a 2a 20  egates must .** 
baf0: 62 65 20 61 64 64 65 64 20 69 6e 64 69 76 69 64  be added individ
bb00: 75 61 6c 6c 79 20 74 6f 20 65 61 63 68 20 64 61  ually to each da
bb10: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 77 69  tabase handle wi
bb20: 74 68 20 77 68 69 63 68 20 74 68 65 79 20 77 69  th which they wi
bb30: 6c 6c 20 62 65 0a 2a 2a 20 75 73 65 64 2e 0a 2a  ll be.** used..*
bb40: 2a 0a 2a 2a 20 54 68 65 20 74 68 69 72 64 20 70  *.** The third p
bb50: 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20  arameter is the 
bb60: 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
bb70: 6e 74 73 20 74 68 61 74 20 74 68 65 20 66 75 6e  nts that the fun
bb80: 63 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67 72  ction or.** aggr
bb90: 65 67 61 74 65 20 74 61 6b 65 73 2e 20 49 66 20  egate takes. If 
bba0: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 69  this parameter i
bbb0: 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e  s negative, then
bbc0: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72   the function or
bbd0: 0a 2a 2a 20 61 67 67 72 65 67 61 74 65 20 6d 61  .** aggregate ma
bbe0: 79 20 74 61 6b 65 20 61 6e 79 20 6e 75 6d 62 65  y take any numbe
bbf0: 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 0a  r of arguments..
bc00: 2a 2a 0a 2a 2a 20 54 68 65 20 66 6f 75 72 74 68  **.** The fourth
bc10: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 6f 6e   parameter is on
bc20: 65 20 6f 66 20 53 51 4c 49 54 45 5f 55 54 46 2a  e of SQLITE_UTF*
bc30: 20 76 61 6c 75 65 73 20 64 65 66 69 6e 65 64 20   values defined 
bc40: 62 65 6c 6f 77 2c 0a 2a 2a 20 69 6e 64 69 63 61  below,.** indica
bc50: 74 69 6e 67 20 74 68 65 20 65 6e 63 6f 64 69 6e  ting the encodin
bc60: 67 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 74  g that the funct
bc70: 69 6f 6e 20 69 73 20 6d 6f 73 74 20 6c 69 6b 65  ion is most like
bc80: 6c 79 20 74 6f 20 68 61 6e 64 6c 65 0a 2a 2a 20  ly to handle.** 
bc90: 76 61 6c 75 65 73 20 69 6e 2e 20 20 54 68 69 73  values in.  This
bca0: 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65   does not change
bcb0: 20 74 68 65 20 62 65 68 61 76 69 6f 75 72 20 6f   the behaviour o
bcc0: 66 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 69 6e  f the programmin
bcd0: 67 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 2e 20  g.** interface. 
bce0: 48 6f 77 65 76 65 72 2c 20 69 66 20 74 77 6f 20  However, if two 
bcf0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
bd00: 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 61 72  same function ar
bd10: 65 20 72 65 67 69 73 74 65 72 65 64 0a 2a 2a 20  e registered.** 
bd20: 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 65  with different e
bd30: 6e 63 6f 64 69 6e 67 20 76 61 6c 75 65 73 2c 20  ncoding values, 
bd40: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
bd50: 68 65 20 76 65 72 73 69 6f 6e 20 6c 69 6b 65 6c  he version likel
bd60: 79 20 74 6f 0a 2a 2a 20 6d 69 6e 69 6d 69 7a 65  y to.** minimize
bd70: 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 62 65 74   conversions bet
bd80: 77 65 65 6e 20 74 65 78 74 20 65 6e 63 6f 64 69  ween text encodi
bd90: 6e 67 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ngs..**.** The s
bda0: 65 76 65 6e 74 68 2c 20 65 69 67 68 74 68 20 61  eventh, eighth a
bdb0: 6e 64 20 6e 69 6e 74 68 20 70 61 72 61 6d 65 74  nd ninth paramet
bdc0: 65 72 73 2c 20 78 46 75 6e 63 2c 20 78 53 74 65  ers, xFunc, xSte
bdd0: 70 20 61 6e 64 20 78 46 69 6e 61 6c 2c 20 61 72  p and xFinal, ar
bde0: 65 0a 2a 2a 20 70 6f 69 6e 74 65 72 73 20 74 6f  e.** pointers to
bdf0: 20 75 73 65 72 20 69 6d 70 6c 65 6d 65 6e 74 65   user implemente
be00: 64 20 43 20 66 75 6e 63 74 69 6f 6e 73 20 74 68  d C functions th
be10: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  at implement the
be20: 20 75 73 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f   user.** functio
be30: 6e 20 6f 72 20 61 67 67 72 65 67 61 74 65 2e 20  n or aggregate. 
be40: 41 20 73 63 61 6c 61 72 20 66 75 6e 63 74 69 6f  A scalar functio
be50: 6e 20 72 65 71 75 69 72 65 73 20 61 6e 20 69 6d  n requires an im
be60: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 0a  plementation of.
be70: 2a 2a 20 74 68 65 20 78 46 75 6e 63 20 63 61 6c  ** the xFunc cal
be80: 6c 62 61 63 6b 20 6f 6e 6c 79 2c 20 4e 55 4c 4c  lback only, NULL
be90: 20 70 6f 69 6e 74 65 72 73 20 73 68 6f 75 6c 64   pointers should
bea0: 20 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68   be passed as th
beb0: 65 20 78 53 74 65 70 0a 2a 2a 20 61 6e 64 20 78  e xStep.** and x
bec0: 46 69 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 73  Final parameters
bed0: 2e 20 41 6e 20 61 67 67 72 65 67 61 74 65 20 66  . An aggregate f
bee0: 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65 73  unction requires
bef0: 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69   an implementati
bf00: 6f 6e 0a 2a 2a 20 6f 66 20 78 53 74 65 70 20 61  on.** of xStep a
bf10: 6e 64 20 78 46 69 6e 61 6c 2c 20 62 75 74 20 4e  nd xFinal, but N
bf20: 55 4c 4c 20 73 68 6f 75 6c 64 20 62 65 20 70 61  ULL should be pa
bf30: 73 73 65 64 20 66 6f 72 20 78 46 75 6e 63 2e 20  ssed for xFunc. 
bf40: 54 6f 20 64 65 6c 65 74 65 20 61 6e 0a 2a 2a 20  To delete an.** 
bf50: 65 78 69 73 74 69 6e 67 20 75 73 65 72 20 66 75  existing user fu
bf60: 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67 72 65 67  nction or aggreg
bf70: 61 74 65 2c 20 70 61 73 73 20 4e 55 4c 4c 20 66  ate, pass NULL f
bf80: 6f 72 20 61 6c 6c 20 74 68 72 65 65 20 66 75 6e  or all three fun
bf90: 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61 63  ction.** callbac
bfa0: 6b 2e 20 53 70 65 63 69 66 79 69 6e 67 20 61 6e  k. Specifying an
bfb0: 20 69 6e 63 6f 6e 73 74 65 6e 74 20 73 65 74 20   inconstent set 
bfc0: 6f 66 20 63 61 6c 6c 62 61 63 6b 20 76 61 6c 75  of callback valu
bfd0: 65 73 2c 20 73 75 63 68 20 61 73 20 61 6e 0a 2a  es, such as an.*
bfe0: 2a 20 78 46 75 6e 63 20 61 6e 64 20 61 6e 20 78  * xFunc and an x
bff0: 46 69 6e 61 6c 2c 20 6f 72 20 61 6e 20 78 53 74  Final, or an xSt
c000: 65 70 20 62 75 74 20 6e 6f 20 78 46 69 6e 61 6c  ep but no xFinal
c010: 2c 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69  , SQLITE_ERROR i
c020: 73 0a 2a 2a 20 72 65 74 75 72 6e 65 64 2e 0a 2a  s.** returned..*
c030: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72  /.int sqlite3_cr
c040: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 0a 20  eate_function(. 
c050: 20 73 71 6c 69 74 65 33 20 2a 2c 0a 20 20 63 6f   sqlite3 *,.  co
c060: 6e 73 74 20 63 68 61 72 20 2a 7a 46 75 6e 63 74  nst char *zFunct
c070: 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e 74 20 6e  ionName,.  int n
c080: 41 72 67 2c 0a 20 20 69 6e 74 20 65 54 65 78 74  Arg,.  int eText
c090: 52 65 70 2c 0a 20 20 76 6f 69 64 2a 2c 0a 20 20  Rep,.  void*,.  
c0a0: 76 6f 69 64 20 28 2a 78 46 75 6e 63 29 28 73 71  void (*xFunc)(sq
c0b0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69  lite3_context*,i
c0c0: 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt,sqlite3_value
c0d0: 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 53  **),.  void (*xS
c0e0: 74 65 70 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e  tep)(sqlite3_con
c0f0: 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74 65  text*,int,sqlite
c100: 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f  3_value**),.  vo
c110: 69 64 20 28 2a 78 46 69 6e 61 6c 29 28 73 71 6c  id (*xFinal)(sql
c120: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 0a 29  ite3_context*).)
c130: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72  ;.int sqlite3_cr
c140: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 31 36 28  eate_function16(
c150: 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20 63  .  sqlite3*,.  c
c160: 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 46 75 6e 63  onst void *zFunc
c170: 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e 74 20  tionName,.  int 
c180: 6e 41 72 67 2c 0a 20 20 69 6e 74 20 65 54 65 78  nArg,.  int eTex
c190: 74 52 65 70 2c 0a 20 20 76 6f 69 64 2a 2c 0a 20  tRep,.  void*,. 
c1a0: 20 76 6f 69 64 20 28 2a 78 46 75 6e 63 29 28 73   void (*xFunc)(s
c1b0: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c  qlite3_context*,
c1c0: 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75  int,sqlite3_valu
c1d0: 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78  e**),.  void (*x
c1e0: 53 74 65 70 29 28 73 71 6c 69 74 65 33 5f 63 6f  Step)(sqlite3_co
c1f0: 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74  ntext*,int,sqlit
c200: 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76  e3_value**),.  v
c210: 6f 69 64 20 28 2a 78 46 69 6e 61 6c 29 28 73 71  oid (*xFinal)(sq
c220: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 0a  lite3_context*).
c230: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66  );../*.** This f
c240: 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 70 72 65  unction is depre
c250: 63 61 74 65 64 2e 20 20 44 6f 20 6e 6f 74 20 75  cated.  Do not u
c260: 73 65 20 69 74 2e 20 20 49 74 20 63 6f 6e 74 69  se it.  It conti
c270: 6e 75 65 73 20 74 6f 20 65 78 69 73 74 0a 2a 2a  nues to exist.**
c280: 20 73 6f 20 61 73 20 6e 6f 74 20 74 6f 20 62 72   so as not to br
c290: 65 61 6b 20 6c 65 67 61 63 79 20 63 6f 64 65 2e  eak legacy code.
c2a0: 20 20 42 75 74 20 6e 65 77 20 63 6f 64 65 20 73    But new code s
c2b0: 68 6f 75 6c 64 20 61 76 6f 69 64 20 75 73 69 6e  hould avoid usin
c2c0: 67 20 69 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  g it..*/.int sql
c2d0: 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
c2e0: 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e  ount(sqlite3_con
c2f0: 74 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  text*);../*.** T
c300: 68 65 20 6e 65 78 74 20 67 72 6f 75 70 20 6f 66  he next group of
c310: 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e   routines return
c320: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  s information ab
c330: 6f 75 74 20 70 61 72 61 6d 65 74 65 72 73 20 74  out parameters t
c340: 6f 0a 2a 2a 20 61 20 75 73 65 72 2d 64 65 66 69  o.** a user-defi
c350: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 2e 20 20 46  ned function.  F
c360: 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e  unction implemen
c370: 74 61 74 69 6f 6e 73 20 75 73 65 20 74 68 65 73  tations use thes
c380: 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a 20 74 6f  e routines.** to
c390: 20 61 63 63 65 73 73 20 74 68 65 69 72 20 70 61   access their pa
c3a0: 72 61 6d 65 74 65 72 73 2e 20 20 54 68 65 73 65  rameters.  These
c3b0: 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 74 68   routines are th
c3c0: 65 20 73 61 6d 65 20 61 73 20 74 68 65 0a 2a 2a  e same as the.**
c3d0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
c3e0: 2a 20 72 6f 75 74 69 6e 65 73 20 65 78 63 65 70  * routines excep
c3f0: 74 20 74 68 61 74 20 74 68 65 73 65 20 72 6f 75  t that these rou
c400: 74 69 6e 65 73 20 74 61 6b 65 20 61 20 73 69 6e  tines take a sin
c410: 67 6c 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76  gle.** sqlite3_v
c420: 61 6c 75 65 2a 20 70 6f 69 6e 74 65 72 20 69 6e  alue* pointer in
c430: 73 74 65 61 64 20 6f 66 20 61 6e 20 73 71 6c 69  stead of an sqli
c440: 74 65 33 5f 73 74 6d 74 2a 20 61 6e 64 20 61 6e  te3_stmt* and an
c450: 20 69 6e 74 65 67 65 72 0a 2a 2a 20 63 6f 6c 75   integer.** colu
c460: 6d 6e 20 6e 75 6d 62 65 72 2e 0a 2a 2f 0a 63 6f  mn number..*/.co
c470: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
c480: 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 73 71 6c  3_value_blob(sql
c490: 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e  ite3_value*);.in
c4a0: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
c4b0: 62 79 74 65 73 28 73 71 6c 69 74 65 33 5f 76 61  bytes(sqlite3_va
c4c0: 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74  lue*);.int sqlit
c4d0: 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36  e3_value_bytes16
c4e0: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29  (sqlite3_value*)
c4f0: 3b 0a 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33  ;.double sqlite3
c500: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 73 71  _value_double(sq
c510: 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69  lite3_value*);.i
c520: 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
c530: 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 76 61 6c  _int(sqlite3_val
c540: 75 65 2a 29 3b 0a 73 71 6c 69 74 65 5f 69 6e 74  ue*);.sqlite_int
c550: 36 34 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  64 sqlite3_value
c560: 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33 5f 76  _int64(sqlite3_v
c570: 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 75 6e  alue*);.const un
c580: 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 71 6c  signed char *sql
c590: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
c5a0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
c5b0: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
c5c0: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
c5d0: 36 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  6(sqlite3_value*
c5e0: 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73  );.const void *s
c5f0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
c600: 74 31 36 6c 65 28 73 71 6c 69 74 65 33 5f 76 61  t16le(sqlite3_va
c610: 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f 69  lue*);.const voi
c620: 64 20 2a 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  d *sqlite3_value
c630: 5f 74 65 78 74 31 36 62 65 28 73 71 6c 69 74 65  _text16be(sqlite
c640: 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73  3_value*);.int s
c650: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70  qlite3_value_typ
c660: 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  e(sqlite3_value*
c670: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  );.int sqlite3_v
c680: 61 6c 75 65 5f 6e 75 6d 65 72 69 63 5f 74 79 70  alue_numeric_typ
c690: 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  e(sqlite3_value*
c6a0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 67 67 72 65 67  );../*.** Aggreg
c6b0: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 75 73  ate functions us
c6c0: 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  e the following 
c6d0: 72 6f 75 74 69 6e 65 20 74 6f 20 61 6c 6c 6f 63  routine to alloc
c6e0: 61 74 65 0a 2a 2a 20 61 20 73 74 72 75 63 74 75  ate.** a structu
c6f0: 72 65 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 74  re for storing t
c700: 68 65 69 72 20 73 74 61 74 65 2e 20 20 54 68 65  heir state.  The
c710: 20 66 69 72 73 74 20 74 69 6d 65 20 74 68 69 73   first time this
c720: 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 69 73 20 63   routine.** is c
c730: 61 6c 6c 65 64 20 66 6f 72 20 61 20 70 61 72 74  alled for a part
c740: 69 63 75 6c 61 72 20 61 67 67 72 65 67 61 74 65  icular aggregate
c750: 2c 20 61 20 6e 65 77 20 73 74 72 75 63 74 75 72  , a new structur
c760: 65 20 6f 66 20 73 69 7a 65 20 6e 42 79 74 65 73  e of size nBytes
c770: 0a 2a 2a 20 69 73 20 61 6c 6c 6f 63 61 74 65 64  .** is allocated
c780: 2c 20 7a 65 72 6f 65 64 2c 20 61 6e 64 20 72 65  , zeroed, and re
c790: 74 75 72 6e 65 64 2e 20 20 4f 6e 20 73 75 62 73  turned.  On subs
c7a0: 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 28 66 6f  equent calls (fo
c7b0: 72 20 74 68 65 0a 2a 2a 20 73 61 6d 65 20 61 67  r the.** same ag
c7c0: 67 72 65 67 61 74 65 20 69 6e 73 74 61 6e 63 65  gregate instance
c7d0: 29 20 74 68 65 20 73 61 6d 65 20 62 75 66 66 65  ) the same buffe
c7e0: 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20  r is returned.  
c7f0: 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  The implementati
c800: 6f 6e 0a 2a 2a 20 6f 66 20 74 68 65 20 61 67 67  on.** of the agg
c810: 72 65 67 61 74 65 20 63 61 6e 20 75 73 65 20 74  regate can use t
c820: 68 65 20 72 65 74 75 72 6e 65 64 20 62 75 66 66  he returned buff
c830: 65 72 20 74 6f 20 61 63 63 75 6d 75 6c 61 74 65  er to accumulate
c840: 20 64 61 74 61 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   data..**.** The
c850: 20 62 75 66 66 65 72 20 61 6c 6c 6f 63 61 74 65   buffer allocate
c860: 64 20 69 73 20 66 72 65 65 64 20 61 75 74 6f 6d  d is freed autom
c870: 61 74 69 63 61 6c 6c 79 20 62 79 20 53 51 4c 69  atically by SQLi
c880: 74 65 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  te..*/.void *sql
c890: 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
c8a0: 6f 6e 74 65 78 74 28 73 71 6c 69 74 65 33 5f 63  ontext(sqlite3_c
c8b0: 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 20 6e 42 79  ontext*, int nBy
c8c0: 74 65 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  tes);../*.** The
c8d0: 20 70 55 73 65 72 44 61 74 61 20 70 61 72 61 6d   pUserData param
c8e0: 65 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  eter to the sqli
c8f0: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
c900: 69 6f 6e 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65  ion().** routine
c910: 20 75 73 65 64 20 74 6f 20 72 65 67 69 73 74 65   used to registe
c920: 72 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73  r user functions
c930: 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f   is available to
c940: 0a 2a 2a 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  .** the implemen
c950: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 75  tation of the fu
c960: 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 69  nction using thi
c970: 73 20 63 61 6c 6c 2e 0a 2a 2f 0a 76 6f 69 64 20  s call..*/.void 
c980: 2a 73 71 6c 69 74 65 33 5f 75 73 65 72 5f 64 61  *sqlite3_user_da
c990: 74 61 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  ta(sqlite3_conte
c9a0: 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  xt*);../*.** The
c9b0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 66   following two f
c9c0: 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62 65 20  unctions may be 
c9d0: 75 73 65 64 20 62 79 20 73 63 61 6c 61 72 20 75  used by scalar u
c9e0: 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f  ser functions to
c9f0: 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 20 6d 65  .** associate me
ca00: 74 61 2d 64 61 74 61 20 77 69 74 68 20 61 72 67  ta-data with arg
ca10: 75 6d 65 6e 74 20 76 61 6c 75 65 73 2e 20 49 66  ument values. If
ca20: 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
ca30: 69 73 20 70 61 73 73 65 64 20 74 6f 0a 2a 2a 20  is passed to.** 
ca40: 6d 75 6c 74 69 70 6c 65 20 69 6e 76 6f 63 61 74  multiple invocat
ca50: 69 6f 6e 73 20 6f 66 20 74 68 65 20 75 73 65 72  ions of the user
ca60: 2d 66 75 6e 63 74 69 6f 6e 20 64 75 72 69 6e 67  -function during
ca70: 20 71 75 65 72 79 20 65 78 65 63 75 74 69 6f 6e   query execution
ca80: 2c 20 75 6e 64 65 72 0a 2a 2a 20 73 6f 6d 65 20  , under.** some 
ca90: 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 74 68  circumstances th
caa0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 6d 65 74  e associated met
cab0: 61 2d 64 61 74 61 20 6d 61 79 20 62 65 20 70 72  a-data may be pr
cac0: 65 73 65 72 76 65 64 2e 20 54 68 69 73 20 6d 61  eserved. This ma
cad0: 79 0a 2a 2a 20 62 65 20 75 73 65 64 2c 20 66 6f  y.** be used, fo
cae0: 72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 20 61 64  r example, to ad
caf0: 64 20 61 20 72 65 67 75 6c 61 72 2d 65 78 70 72  d a regular-expr
cb00: 65 73 73 69 6f 6e 20 6d 61 74 63 68 69 6e 67 20  ession matching 
cb10: 73 63 61 6c 61 72 0a 2a 2a 20 66 75 6e 63 74 69  scalar.** functi
cb20: 6f 6e 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65 64  on. The compiled
cb30: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
cb40: 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69  regular expressi
cb50: 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73 0a  on is stored as.
cb60: 2a 2a 20 6d 65 74 61 2d 64 61 74 61 20 61 73 73  ** meta-data ass
cb70: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
cb80: 20 53 51 4c 20 76 61 6c 75 65 20 70 61 73 73 65   SQL value passe
cb90: 64 20 61 73 20 74 68 65 20 72 65 67 75 6c 61 72  d as the regular
cba0: 20 65 78 70 72 65 73 73 69 6f 6e 0a 2a 2a 20 70   expression.** p
cbb0: 61 74 74 65 72 6e 2e 0a 2a 2a 0a 2a 2a 20 43 61  attern..**.** Ca
cbc0: 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 67 65  lling sqlite3_ge
cbd0: 74 5f 61 75 78 64 61 74 61 28 29 20 72 65 74 75  t_auxdata() retu
cbe0: 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  rns a pointer to
cbf0: 20 74 68 65 20 6d 65 74 61 20 64 61 74 61 0a 2a   the meta data.*
cc00: 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  * associated wit
cc10: 68 20 74 68 65 20 4e 74 68 20 61 72 67 75 6d 65  h the Nth argume
cc20: 6e 74 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  nt value to the 
cc30: 63 75 72 72 65 6e 74 20 75 73 65 72 20 66 75 6e  current user fun
cc40: 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 2c 20 77  ction.** call, w
cc50: 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 73 65  here N is the se
cc60: 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2e 20  cond parameter. 
cc70: 49 66 20 6e 6f 20 6d 65 74 61 2d 64 61 74 61 20  If no meta-data 
cc80: 68 61 73 20 62 65 65 6e 20 73 65 74 20 66 6f 72  has been set for
cc90: 0a 2a 2a 20 74 68 61 74 20 76 61 6c 75 65 2c 20  .** that value, 
cca0: 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  then a NULL poin
ccb0: 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ter is returned.
ccc0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
ccd0: 65 33 5f 73 65 74 5f 61 75 78 64 61 74 61 28 29  e3_set_auxdata()
cce0: 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73 6f   is used to asso
ccf0: 63 69 61 74 65 20 6d 65 74 61 20 64 61 74 61 20  ciate meta data 
cd00: 77 69 74 68 20 61 20 75 73 65 72 0a 2a 2a 20 66  with a user.** f
cd10: 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74  unction argument
cd20: 2e 20 54 68 65 20 74 68 69 72 64 20 70 61 72 61  . The third para
cd30: 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
cd40: 65 72 20 74 6f 20 74 68 65 20 6d 65 74 61 20 64  er to the meta d
cd50: 61 74 61 0a 2a 2a 20 74 6f 20 62 65 20 61 73 73  ata.** to be ass
cd60: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
cd70: 20 4e 74 68 20 75 73 65 72 20 66 75 6e 63 74 69   Nth user functi
cd80: 6f 6e 20 61 72 67 75 6d 65 6e 74 20 76 61 6c 75  on argument valu
cd90: 65 2e 20 54 68 65 20 66 6f 75 72 74 68 0a 2a 2a  e. The fourth.**
cda0: 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63 69   parameter speci
cdb0: 66 69 65 73 20 61 20 27 64 65 6c 65 74 65 20 66  fies a 'delete f
cdc0: 75 6e 63 74 69 6f 6e 27 20 74 68 61 74 20 77 69  unction' that wi
cdd0: 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 6f 6e 20  ll be called on 
cde0: 74 68 65 20 6d 65 74 61 0a 2a 2a 20 64 61 74 61  the meta.** data
cdf0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 72 65 6c 65   pointer to rele
ce00: 61 73 65 20 69 74 20 77 68 65 6e 20 69 74 20 69  ase it when it i
ce10: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75  s no longer requ
ce20: 69 72 65 64 2e 20 49 66 20 74 68 65 20 64 65 6c  ired. If the del
ce30: 65 74 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ete.** function 
ce40: 70 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c 4c 2c  pointer is NULL,
ce50: 20 69 74 20 69 73 20 6e 6f 74 20 69 6e 76 6f 6b   it is not invok
ce60: 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 70 72 61  ed..**.** In pra
ce70: 63 74 69 63 65 2c 20 6d 65 74 61 2d 64 61 74 61  ctice, meta-data
ce80: 20 69 73 20 70 72 65 73 65 72 76 65 64 20 62 65   is preserved be
ce90: 74 77 65 65 6e 20 66 75 6e 63 74 69 6f 6e 20 63  tween function c
cea0: 61 6c 6c 73 20 66 6f 72 0a 2a 2a 20 65 78 70 72  alls for.** expr
ceb0: 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65  essions that are
cec0: 20 63 6f 6e 73 74 61 6e 74 20 61 74 20 63 6f 6d   constant at com
ced0: 70 69 6c 65 20 74 69 6d 65 2e 20 54 68 69 73 20  pile time. This 
cee0: 69 6e 63 6c 75 64 65 73 20 6c 69 74 65 72 61 6c  includes literal
cef0: 0a 2a 2a 20 76 61 6c 75 65 73 20 61 6e 64 20 53  .** values and S
cf00: 51 4c 20 76 61 72 69 61 62 6c 65 73 2e 0a 2a 2f  QL variables..*/
cf10: 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 67  .void *sqlite3_g
cf20: 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c 69 74  et_auxdata(sqlit
cf30: 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74  e3_context*, int
cf40: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
cf50: 73 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c 69  set_auxdata(sqli
cf60: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e  te3_context*, in
cf70: 74 2c 20 76 6f 69 64 2a 2c 20 76 6f 69 64 20 28  t, void*, void (
cf80: 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 0a 0a 2f 2a  *)(void*));.../*
cf90: 0a 2a 2a 20 54 68 65 73 65 20 61 72 65 20 73 70  .** These are sp
cfa0: 65 63 69 61 6c 20 76 61 6c 75 65 20 66 6f 72 20  ecial value for 
cfb0: 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 20 74  the destructor t
cfc0: 68 61 74 20 69 73 20 70 61 73 73 65 64 20 69 6e  hat is passed in
cfd0: 20 61 73 20 74 68 65 0a 2a 2a 20 66 69 6e 61 6c   as the.** final
cfe0: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 72 6f 75   argument to rou
cff0: 74 69 6e 65 73 20 6c 69 6b 65 20 73 71 6c 69 74  tines like sqlit
d000: 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 29  e3_result_blob()
d010: 2e 20 20 49 66 20 74 68 65 20 64 65 73 74 72 75  .  If the destru
d020: 63 74 6f 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  ctor.** argument
d030: 20 69 73 20 53 51 4c 49 54 45 5f 53 54 41 54 49   is SQLITE_STATI
d040: 43 2c 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74  C, it means that
d050: 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 70 6f 69   the content poi
d060: 6e 74 65 72 20 69 73 20 63 6f 6e 73 74 61 6e 74  nter is constant
d070: 0a 2a 2a 20 61 6e 64 20 77 69 6c 6c 20 6e 65 76  .** and will nev
d080: 65 72 20 63 68 61 6e 67 65 2e 20 20 49 74 20 64  er change.  It d
d090: 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20  oes not need to 
d0a0: 62 65 20 64 65 73 74 72 6f 79 65 64 2e 20 20 54  be destroyed.  T
d0b0: 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 54 52  he .** SQLITE_TR
d0c0: 41 4e 53 49 45 4e 54 20 76 61 6c 75 65 20 6d 65  ANSIENT value me
d0d0: 61 6e 73 20 74 68 61 74 20 74 68 65 20 63 6f 6e  ans that the con
d0e0: 74 65 6e 74 20 77 69 6c 6c 20 6c 69 6b 65 6c 79  tent will likely
d0f0: 20 63 68 61 6e 67 65 20 69 6e 0a 2a 2a 20 74 68   change in.** th
d100: 65 20 6e 65 61 72 20 66 75 74 75 72 65 20 61 6e  e near future an
d110: 64 20 74 68 61 74 20 53 51 4c 69 74 65 20 73 68  d that SQLite sh
d120: 6f 75 6c 64 20 6d 61 6b 65 20 69 74 73 20 6f 77  ould make its ow
d130: 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20 6f  n private copy o
d140: 66 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65 6e 74  f.** the content
d150: 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69 6e   before returnin
d160: 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 79 70  g..**.** The typ
d170: 65 64 65 66 20 69 73 20 6e 65 63 65 73 73 61 72  edef is necessar
d180: 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  y to work around
d190: 20 70 72 6f 62 6c 65 6d 73 20 69 6e 20 63 65 72   problems in cer
d1a0: 74 61 69 6e 0a 2a 2a 20 43 2b 2b 20 63 6f 6d 70  tain.** C++ comp
d1b0: 69 6c 65 72 73 2e 20 20 53 65 65 20 74 69 63 6b  ilers.  See tick
d1c0: 65 74 20 23 32 31 39 31 2e 0a 2a 2f 0a 74 79 70  et #2191..*/.typ
d1d0: 65 64 65 66 20 76 6f 69 64 20 28 2a 73 71 6c 69  edef void (*sqli
d1e0: 74 65 33 5f 64 65 73 74 72 75 63 74 6f 72 5f 74  te3_destructor_t
d1f0: 79 70 65 29 28 76 6f 69 64 2a 29 3b 0a 23 64 65  ype)(void*);.#de
d200: 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 54 41 54  fine SQLITE_STAT
d210: 49 43 20 20 20 20 20 20 28 28 73 71 6c 69 74 65  IC      ((sqlite
d220: 33 5f 64 65 73 74 72 75 63 74 6f 72 5f 74 79 70  3_destructor_typ
d230: 65 29 30 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  e)0).#define SQL
d240: 49 54 45 5f 54 52 41 4e 53 49 45 4e 54 20 20 20  ITE_TRANSIENT   
d250: 28 28 73 71 6c 69 74 65 33 5f 64 65 73 74 72 75  ((sqlite3_destru
d260: 63 74 6f 72 5f 74 79 70 65 29 2d 31 29 0a 0a 2f  ctor_type)-1)../
d270: 2a 0a 2a 2a 20 55 73 65 72 2d 64 65 66 69 6e 65  *.** User-define
d280: 64 20 66 75 6e 63 74 69 6f 6e 73 20 69 6e 76 6f  d functions invo
d290: 6b 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ke the following
d2a0: 20 72 6f 75 74 69 6e 65 73 20 69 6e 20 6f 72 64   routines in ord
d2b0: 65 72 20 74 6f 0a 2a 2a 20 73 65 74 20 74 68 65  er to.** set the
d2c0: 69 72 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e  ir return value.
d2d0: 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33  .*/.void sqlite3
d2e0: 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 73 71 6c  _result_blob(sql
d2f0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63  ite3_context*, c
d300: 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c  onst void*, int,
d310: 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29   void(*)(void*))
d320: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
d330: 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 73 71 6c  esult_double(sql
d340: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 64  ite3_context*, d
d350: 6f 75 62 6c 65 29 3b 0a 76 6f 69 64 20 73 71 6c  ouble);.void sql
d360: 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
d370: 72 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  r(sqlite3_contex
d380: 74 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c  t*, const char*,
d390: 20 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69   int);.void sqli
d3a0: 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
d3b0: 31 36 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  16(sqlite3_conte
d3c0: 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a  xt*, const void*
d3d0: 2c 20 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c  , int);.void sql
d3e0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
d3f0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
d400: 2c 20 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c  , int);.void sql
d410: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
d420: 34 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  4(sqlite3_contex
d430: 74 2a 2c 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  t*, sqlite_int64
d440: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
d450: 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 73 71 6c 69  result_null(sqli
d460: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 3b 0a 76  te3_context*);.v
d470: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
d480: 6c 74 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f  lt_text(sqlite3_
d490: 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20  context*, const 
d4a0: 63 68 61 72 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  char*, int, void
d4b0: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69  (*)(void*));.voi
d4c0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
d4d0: 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65 33 5f  _text16(sqlite3_
d4e0: 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20  context*, const 
d4f0: 76 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  void*, int, void
d500: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69  (*)(void*));.voi
d510: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
d520: 5f 74 65 78 74 31 36 6c 65 28 73 71 6c 69 74 65  _text16le(sqlite
d530: 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73  3_context*, cons
d540: 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 76 6f 69  t void*, int,voi
d550: 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f  d(*)(void*));.vo
d560: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
d570: 74 5f 74 65 78 74 31 36 62 65 28 73 71 6c 69 74  t_text16be(sqlit
d580: 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e  e3_context*, con
d590: 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 76 6f  st void*, int,vo
d5a0: 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76  id(*)(void*));.v
d5b0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
d5c0: 6c 74 5f 76 61 6c 75 65 28 73 71 6c 69 74 65 33  lt_value(sqlite3
d5d0: 5f 63 6f 6e 74 65 78 74 2a 2c 20 73 71 6c 69 74  _context*, sqlit
d5e0: 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 76 6f 69 64  e3_value*);.void
d5f0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
d600: 7a 65 72 6f 62 6c 6f 62 28 73 71 6c 69 74 65 33  zeroblob(sqlite3
d610: 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 20 6e  _context*, int n
d620: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
d630: 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f  result_error_too
d640: 62 69 67 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  big(sqlite3_cont
d650: 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  ext*);../*.** Th
d660: 65 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f  ese are the allo
d670: 77 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74  wed values for t
d680: 68 65 20 65 54 65 78 74 52 65 70 20 61 72 67 75  he eTextRep argu
d690: 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74  ment to.** sqlit
d6a0: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
d6b0: 69 6f 6e 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  ion and sqlite3_
d6c0: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 2e  create_function.
d6d0: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
d6e0: 54 45 5f 55 54 46 38 20 20 20 20 20 20 20 20 20  TE_UTF8         
d6f0: 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    1.#define SQLI
d700: 54 45 5f 55 54 46 31 36 4c 45 20 20 20 20 20 20  TE_UTF16LE      
d710: 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    2.#define SQLI
d720: 54 45 5f 55 54 46 31 36 42 45 20 20 20 20 20 20  TE_UTF16BE      
d730: 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    3.#define SQLI
d740: 54 45 5f 55 54 46 31 36 20 20 20 20 20 20 20 20  TE_UTF16        
d750: 20 20 34 20 20 20 20 2f 2a 20 55 73 65 20 6e 61    4    /* Use na
d760: 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 20  tive byte order 
d770: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d780: 45 5f 41 4e 59 20 20 20 20 20 20 20 20 20 20 20  E_ANY           
d790: 20 35 20 20 20 20 2f 2a 20 73 71 6c 69 74 65 33   5    /* sqlite3
d7a0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
d7b0: 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65   only */.#define
d7c0: 20 53 51 4c 49 54 45 5f 55 54 46 31 36 5f 41 4c   SQLITE_UTF16_AL
d7d0: 49 47 4e 45 44 20 20 38 20 20 20 20 2f 2a 20 73  IGNED  8    /* s
d7e0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
d7f0: 6c 6c 61 74 69 6f 6e 20 6f 6e 6c 79 20 2a 2f 0a  llation only */.
d800: 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 74 77 6f  ./*.** These two
d810: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 75   functions are u
d820: 73 65 64 20 74 6f 20 61 64 64 20 6e 65 77 20 63  sed to add new c
d830: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
d840: 65 73 20 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c  es to the.** sql
d850: 69 74 65 33 20 68 61 6e 64 6c 65 20 73 70 65 63  ite3 handle spec
d860: 69 66 69 65 64 20 61 73 20 74 68 65 20 66 69 72  ified as the fir
d870: 73 74 20 61 72 67 75 6d 65 6e 74 2e 20 0a 2a 2a  st argument. .**
d880: 0a 2a 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  .** The name of 
d890: 74 68 65 20 6e 65 77 20 63 6f 6c 6c 61 74 69 6f  the new collatio
d8a0: 6e 20 73 65 71 75 65 6e 63 65 20 69 73 20 73 70  n sequence is sp
d8b0: 65 63 69 66 69 65 64 20 61 73 20 61 20 55 54 46  ecified as a UTF
d8c0: 2d 38 20 73 74 72 69 6e 67 0a 2a 2a 20 66 6f 72  -8 string.** for
d8d0: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
d8e0: 63 6f 6c 6c 61 74 69 6f 6e 28 29 20 61 6e 64 20  collation() and 
d8f0: 61 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67 20  a UTF-16 string 
d900: 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  for.** sqlite3_c
d910: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31  reate_collation1
d920: 36 28 29 2e 20 49 6e 20 62 6f 74 68 20 63 61 73  6(). In both cas
d930: 65 73 20 74 68 65 20 6e 61 6d 65 20 69 73 20 70  es the name is p
d940: 61 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a 20  assed as the.** 
d950: 73 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20  second function 
d960: 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20  argument..**.** 
d970: 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  The third argume
d980: 6e 74 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f  nt must be one o
d990: 66 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 20  f the constants 
d9a0: 53 51 4c 49 54 45 5f 55 54 46 38 2c 0a 2a 2a 20  SQLITE_UTF8,.** 
d9b0: 53 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 20 6f  SQLITE_UTF16LE o
d9c0: 72 20 53 51 4c 49 54 45 5f 55 54 46 31 36 42 45  r SQLITE_UTF16BE
d9d0: 2c 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  , indicating tha
d9e0: 74 20 74 68 65 20 75 73 65 72 2d 73 75 70 70 6c  t the user-suppl
d9f0: 69 65 64 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 65  ied.** routine e
da00: 78 70 65 63 74 73 20 74 6f 20 62 65 20 70 61 73  xpects to be pas
da10: 73 65 64 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  sed pointers to 
da20: 73 74 72 69 6e 67 73 20 65 6e 63 6f 64 65 64 20  strings encoded 
da30: 75 73 69 6e 67 20 55 54 46 2d 38 2c 0a 2a 2a 20  using UTF-8,.** 
da40: 55 54 46 2d 31 36 20 6c 69 74 74 6c 65 2d 65 6e  UTF-16 little-en
da50: 64 69 61 6e 20 6f 72 20 55 54 46 2d 31 36 20 62  dian or UTF-16 b
da60: 69 67 2d 65 6e 64 69 61 6e 20 72 65 73 70 65 63  ig-endian respec
da70: 74 69 76 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 20  tively..**.** A 
da80: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 75  pointer to the u
da90: 73 65 72 20 73 75 70 70 6c 69 65 64 20 72 6f 75  ser supplied rou
daa0: 74 69 6e 65 20 6d 75 73 74 20 62 65 20 70 61 73  tine must be pas
dab0: 73 65 64 20 61 73 20 74 68 65 20 66 69 66 74 68  sed as the fifth
dac0: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 2e 20 49 66  .** argument. If
dad0: 20 69 74 20 69 73 20 4e 55 4c 4c 2c 20 74 68 69   it is NULL, thi
dae0: 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73  s is the same as
daf0: 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f   deleting the co
db00: 6c 6c 61 74 69 6f 6e 0a 2a 2a 20 73 65 71 75 65  llation.** seque
db10: 6e 63 65 20 28 73 6f 20 74 68 61 74 20 53 51 4c  nce (so that SQL
db20: 69 74 65 20 63 61 6e 6e 6f 74 20 63 61 6c 6c 20  ite cannot call 
db30: 69 74 20 61 6e 79 6d 6f 72 65 29 2e 20 45 61 63  it anymore). Eac
db40: 68 20 74 69 6d 65 20 74 68 65 20 75 73 65 72 0a  h time the user.
db50: 2a 2a 20 73 75 70 70 6c 69 65 64 20 66 75 6e 63  ** supplied func
db60: 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 2c  tion is invoked,
db70: 20 69 74 20 69 73 20 70 61 73 73 65 64 20 61 20   it is passed a 
db80: 63 6f 70 79 20 6f 66 20 74 68 65 20 76 6f 69 64  copy of the void
db90: 2a 20 70 61 73 73 65 64 20 61 73 0a 2a 2a 20 74  * passed as.** t
dba0: 68 65 20 66 6f 75 72 74 68 20 61 72 67 75 6d 65  he fourth argume
dbb0: 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 72  nt to sqlite3_cr
dbc0: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29  eate_collation()
dbd0: 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63   or.** sqlite3_c
dbe0: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31  reate_collation1
dbf0: 36 28 29 20 61 73 20 69 74 73 20 66 69 72 73 74  6() as its first
dc00: 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
dc10: 2a 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20  * The remaining 
dc20: 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
dc30: 20 75 73 65 72 2d 73 75 70 70 6c 69 65 64 20 72   user-supplied r
dc40: 6f 75 74 69 6e 65 20 61 72 65 20 74 77 6f 20 73  outine are two s
dc50: 74 72 69 6e 67 73 2c 0a 2a 2a 20 65 61 63 68 20  trings,.** each 
dc60: 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61  represented by a
dc70: 20 5b 6c 65 6e 67 74 68 2c 20 64 61 74 61 5d 20   [length, data] 
dc80: 70 61 69 72 20 61 6e 64 20 65 6e 63 6f 64 65 64  pair and encoded
dc90: 20 69 6e 20 74 68 65 20 65 6e 63 6f 64 69 6e 67   in the encoding
dca0: 0a 2a 2a 20 74 68 61 74 20 77 61 73 20 70 61 73  .** that was pas
dcb0: 73 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64  sed as the third
dcc0: 20 61 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 74   argument when t
dcd0: 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71  he collation seq
dce0: 75 65 6e 63 65 20 77 61 73 0a 2a 2a 20 72 65 67  uence was.** reg
dcf0: 69 73 74 65 72 65 64 2e 20 54 68 65 20 75 73 65  istered. The use
dd00: 72 20 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c 64  r routine should
dd10: 20 72 65 74 75 72 6e 20 6e 65 67 61 74 69 76 65   return negative
dd20: 2c 20 7a 65 72 6f 20 6f 72 20 70 6f 73 69 74 69  , zero or positi
dd30: 76 65 20 69 66 0a 2a 2a 20 74 68 65 20 66 69 72  ve if.** the fir
dd40: 73 74 20 73 74 72 69 6e 67 20 69 73 20 6c 65 73  st string is les
dd50: 73 20 74 68 61 6e 2c 20 65 71 75 61 6c 20 74 6f  s than, equal to
dd60: 2c 20 6f 72 20 67 72 65 61 74 65 72 20 74 68 61  , or greater tha
dd70: 6e 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20  n the second.** 
dd80: 73 74 72 69 6e 67 2e 20 69 2e 65 2e 20 28 53 54  string. i.e. (ST
dd90: 52 49 4e 47 31 20 2d 20 53 54 52 49 4e 47 32 29  RING1 - STRING2)
dda0: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
ddb0: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
ddc0: 6e 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a  n(.  sqlite3*, .
ddd0: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e    const char *zN
dde0: 61 6d 65 2c 20 0a 20 20 69 6e 74 20 65 54 65 78  ame, .  int eTex
ddf0: 74 52 65 70 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a  tRep, .  void*,.
de00: 20 20 69 6e 74 28 2a 78 43 6f 6d 70 61 72 65 29    int(*xCompare)
de10: 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74  (void*,int,const
de20: 20 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74   void*,int,const
de30: 20 76 6f 69 64 2a 29 0a 29 3b 0a 69 6e 74 20 73   void*).);.int s
de40: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
de50: 6c 6c 61 74 69 6f 6e 31 36 28 0a 20 20 73 71 6c  llation16(.  sql
de60: 69 74 65 33 2a 2c 20 0a 20 20 63 6f 6e 73 74 20  ite3*, .  const 
de70: 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 0a 20 20  char *zName, .  
de80: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20 0a 20  int eTextRep, . 
de90: 20 76 6f 69 64 2a 2c 0a 20 20 69 6e 74 28 2a 78   void*,.  int(*x
dea0: 43 6f 6d 70 61 72 65 29 28 76 6f 69 64 2a 2c 69  Compare)(void*,i
deb0: 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 69  nt,const void*,i
dec0: 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a  nt,const void*).
ded0: 29 3b 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 20 45 58  );../*.****** EX
dee0: 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20 73 75 62  PERIMENTAL - sub
def0: 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20 77  ject to change w
df00: 69 74 68 6f 75 74 20 6e 6f 74 69 63 65 20 2a 2a  ithout notice **
df10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a  ************.**.
df20: 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ** The following
df30: 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 41 50   experimental AP
df40: 49 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74  I is identical t
df50: 6f 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33  o the.** sqlite3
df60: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
df70: 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 64 65 73  n() function des
df80: 63 72 69 62 65 64 20 61 62 6f 76 65 20 65 78 63  cribed above exc
df90: 65 70 74 20 74 68 61 74 20 69 74 0a 2a 2a 20 61  ept that it.** a
dfa0: 6c 6c 6f 77 73 20 61 20 64 65 73 74 72 75 63 74  llows a destruct
dfb0: 6f 72 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  or callback func
dfc0: 74 69 6f 6e 20 2d 20 78 44 65 73 74 72 6f 79 20  tion - xDestroy 
dfd0: 2d 20 66 6f 72 20 74 68 65 20 6e 65 77 0a 2a 2a  - for the new.**
dfe0: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
dff0: 6e 63 65 20 74 6f 20 62 65 20 73 70 65 63 69 66  nce to be specif
e000: 69 65 64 2e 20 49 66 20 74 68 69 73 20 66 75 6e  ied. If this fun
e010: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a 2a 2a  ction returns.**
e020: 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 74   successfully, t
e030: 68 65 20 64 65 73 74 72 75 63 74 6f 72 20 66 75  he destructor fu
e040: 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 69  nction will be i
e050: 6e 76 6f 6b 65 64 20 65 78 61 63 74 6c 79 20 6f  nvoked exactly o
e060: 6e 63 65 0a 2a 2a 20 62 79 20 53 51 4c 69 74 65  nce.** by SQLite
e070: 20 77 68 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65   when one of the
e080: 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 63 63 75 72   following occur
e090: 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 2a 20 54 68 65  s:.**.**   * The
e0a0: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
e0b0: 6e 63 65 20 69 73 20 6f 76 65 72 69 64 64 65 6e  nce is overidden
e0c0: 20 62 79 20 61 20 73 75 62 73 65 71 75 65 6e 74   by a subsequent
e0d0: 20 63 61 6c 6c 0a 2a 2a 20 20 20 20 20 74 6f 20   call.**     to 
e0e0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
e0f0: 28 29 2c 20 63 72 65 61 74 65 5f 63 6f 6c 6c 61  (), create_colla
e100: 74 69 6f 6e 31 36 28 29 20 6f 72 20 0a 2a 2a 20  tion16() or .** 
e110: 20 20 20 20 63 72 65 61 74 65 5f 63 6f 6c 6c 61      create_colla
e120: 74 69 6f 6e 5f 76 32 28 29 2c 20 6f 72 0a 2a 2a  tion_v2(), or.**
e130: 0a 2a 2a 20 20 20 2a 20 54 68 65 20 64 61 74 61  .**   * The data
e140: 62 61 73 65 20 68 61 6e 64 6c 65 20 69 73 20 63  base handle is c
e150: 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  losed..**.** The
e160: 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64   argument passed
e170: 20 74 6f 20 74 68 65 20 64 65 73 74 72 75 63 74   to the destruct
e180: 6f 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  or function is a
e190: 20 63 6f 70 79 20 6f 66 0a 2a 2a 20 74 68 65 20   copy of.** the 
e1a0: 76 6f 69 64 2a 20 70 6f 69 6e 74 65 72 20 70 61  void* pointer pa
e1b0: 73 73 65 64 20 61 73 20 74 68 65 20 34 74 68 20  ssed as the 4th 
e1c0: 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73  argument to this
e1d0: 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 69 6e   function..*/.in
e1e0: 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  t sqlite3_create
e1f0: 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 76 32 28 0a 20  _collation_v2(. 
e200: 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20 63 6f   sqlite3*, .  co
e210: 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c  nst char *zName,
e220: 20 0a 20 20 69 6e 74 20 65 54 65 78 74 52 65 70   .  int eTextRep
e230: 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 69 6e  , .  void*,.  in
e240: 74 28 2a 78 43 6f 6d 70 61 72 65 29 28 76 6f 69  t(*xCompare)(voi
e250: 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 76 6f 69  d*,int,const voi
e260: 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 76 6f 69  d*,int,const voi
e270: 64 2a 29 2c 0a 20 20 76 6f 69 64 28 2a 78 44 65  d*),.  void(*xDe
e280: 73 74 72 6f 79 29 28 76 6f 69 64 2a 29 0a 29 3b  stroy)(void*).);
e290: 0a 0a 2f 2a 0a 2a 2a 20 54 6f 20 61 76 6f 69 64  ../*.** To avoid
e2a0: 20 68 61 76 69 6e 67 20 74 6f 20 72 65 67 69 73   having to regis
e2b0: 74 65 72 20 61 6c 6c 20 63 6f 6c 6c 61 74 69 6f  ter all collatio
e2c0: 6e 20 73 65 71 75 65 6e 63 65 73 20 62 65 66 6f  n sequences befo
e2d0: 72 65 20 61 20 64 61 74 61 62 61 73 65 0a 2a 2a  re a database.**
e2e0: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 61 20   can be used, a 
e2f0: 73 69 6e 67 6c 65 20 63 61 6c 6c 62 61 63 6b 20  single callback 
e300: 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65 20  function may be 
e310: 72 65 67 69 73 74 65 72 65 64 20 77 69 74 68 20  registered with 
e320: 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  the.** database 
e330: 68 61 6e 64 6c 65 20 74 6f 20 62 65 20 63 61 6c  handle to be cal
e340: 6c 65 64 20 77 68 65 6e 65 76 65 72 20 61 6e 20  led whenever an 
e350: 75 6e 64 65 66 69 6e 65 64 20 63 6f 6c 6c 61 74  undefined collat
e360: 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 69 73 0a  ion sequence is.
e370: 2a 2a 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a  ** required..**.
e380: 2a 2a 20 49 66 20 74 68 65 20 66 75 6e 63 74 69  ** If the functi
e390: 6f 6e 20 69 73 20 72 65 67 69 73 74 65 72 65 64  on is registered
e3a0: 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74   using the sqlit
e3b0: 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65  e3_collation_nee
e3c0: 64 65 64 28 29 20 41 50 49 2c 0a 2a 2a 20 74 68  ded() API,.** th
e3d0: 65 6e 20 69 74 20 69 73 20 70 61 73 73 65 64 20  en it is passed 
e3e0: 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 75 6e 64  the names of und
e3f0: 65 66 69 6e 65 64 20 63 6f 6c 6c 61 74 69 6f 6e  efined collation
e400: 20 73 65 71 75 65 6e 63 65 73 20 61 73 20 73 74   sequences as st
e410: 72 69 6e 67 73 0a 2a 2a 20 65 6e 63 6f 64 65 64  rings.** encoded
e420: 20 69 6e 20 55 54 46 2d 38 2e 20 49 66 20 73 71   in UTF-8. If sq
e430: 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f  lite3_collation_
e440: 6e 65 65 64 65 64 31 36 28 29 20 69 73 20 75 73  needed16() is us
e450: 65 64 2c 20 74 68 65 20 6e 61 6d 65 73 0a 2a 2a  ed, the names.**
e460: 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20 55   are passed as U
e470: 54 46 2d 31 36 20 69 6e 20 6d 61 63 68 69 6e 65  TF-16 in machine
e480: 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72 64   native byte ord
e490: 65 72 2e 20 41 20 63 61 6c 6c 20 74 6f 20 65 69  er. A call to ei
e4a0: 74 68 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  ther.** function
e4b0: 20 72 65 70 6c 61 63 65 73 20 61 6e 79 20 65 78   replaces any ex
e4c0: 69 73 74 69 6e 67 20 63 61 6c 6c 62 61 63 6b 2e  isting callback.
e4d0: 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20  .**.** When the 
e4e0: 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e 20 69 73  user-function is
e4f0: 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65 20 66 69   invoked, the fi
e500: 72 73 74 20 61 72 67 75 6d 65 6e 74 20 70 61 73  rst argument pas
e510: 73 65 64 20 69 73 20 61 20 63 6f 70 79 0a 2a 2a  sed is a copy.**
e520: 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64 20 61   of the second a
e530: 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
e540: 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65  e3_collation_nee
e550: 64 65 64 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69  ded() or.** sqli
e560: 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65  te3_collation_ne
e570: 65 64 65 64 31 36 28 29 2e 20 54 68 65 20 73 65  eded16(). The se
e580: 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73  cond argument is
e590: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a   the database.**
e5a0: 20 68 61 6e 64 6c 65 2e 20 54 68 65 20 74 68 69   handle. The thi
e5b0: 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  rd argument is o
e5c0: 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 55 54 46  ne of SQLITE_UTF
e5d0: 38 2c 20 53 51 4c 49 54 45 5f 55 54 46 31 36 42  8, SQLITE_UTF16B
e5e0: 45 20 6f 72 0a 2a 2a 20 53 51 4c 49 54 45 5f 55  E or.** SQLITE_U
e5f0: 54 46 31 36 4c 45 2c 20 69 6e 64 69 63 61 74 69  TF16LE, indicati
e600: 6e 67 20 74 68 65 20 6d 6f 73 74 20 64 65 73 69  ng the most desi
e610: 72 61 62 6c 65 20 66 6f 72 6d 20 6f 66 20 74 68  rable form of th
e620: 65 20 63 6f 6c 6c 61 74 69 6f 6e 0a 2a 2a 20 73  e collation.** s
e630: 65 71 75 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e  equence function
e640: 20 72 65 71 75 69 72 65 64 2e 20 54 68 65 20 66   required. The f
e650: 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20  ourth parameter 
e660: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
e670: 68 65 0a 2a 2a 20 72 65 71 75 69 72 65 64 20 63  he.** required c
e680: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
e690: 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f 6c  e..**.** The col
e6a0: 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
e6b0: 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 53  is returned to S
e6c0: 51 4c 69 74 65 20 62 79 20 61 20 63 6f 6c 6c 61  QLite by a colla
e6d0: 74 69 6f 6e 2d 6e 65 65 64 65 64 0a 2a 2a 20 63  tion-needed.** c
e6e0: 61 6c 6c 62 61 63 6b 20 75 73 69 6e 67 20 74 68  allback using th
e6f0: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
e700: 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29 20 6f 72 0a  _collation() or.
e710: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  ** sqlite3_creat
e720: 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 28 29 20  e_collation16() 
e730: 41 50 49 73 2c 20 64 65 73 63 72 69 62 65 64 20  APIs, described 
e740: 61 62 6f 76 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71  above..*/.int sq
e750: 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f  lite3_collation_
e760: 6e 65 65 64 65 64 28 0a 20 20 73 71 6c 69 74 65  needed(.  sqlite
e770: 33 2a 2c 20 0a 20 20 76 6f 69 64 2a 2c 20 0a 20  3*, .  void*, . 
e780: 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73   void(*)(void*,s
e790: 71 6c 69 74 65 33 2a 2c 69 6e 74 20 65 54 65 78  qlite3*,int eTex
e7a0: 74 52 65 70 2c 63 6f 6e 73 74 20 63 68 61 72 2a  tRep,const char*
e7b0: 29 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  ).);.int sqlite3
e7c0: 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64 65  _collation_neede
e7d0: 64 31 36 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c  d16(.  sqlite3*,
e7e0: 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 76 6f 69   .  void*,.  voi
e7f0: 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71 6c 69 74  d(*)(void*,sqlit
e800: 65 33 2a 2c 69 6e 74 20 65 54 65 78 74 52 65 70  e3*,int eTextRep
e810: 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a 29 3b  ,const void*).);
e820: 0a 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69 66 79 20  ../*.** Specify 
e830: 74 68 65 20 6b 65 79 20 66 6f 72 20 61 6e 20 65  the key for an e
e840: 6e 63 72 79 70 74 65 64 20 64 61 74 61 62 61 73  ncrypted databas
e850: 65 2e 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65  e.  This routine
e860: 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20 63 61   should be.** ca
e870: 6c 6c 65 64 20 72 69 67 68 74 20 61 66 74 65 72  lled right after
e880: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 2e   sqlite3_open().
e890: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f 64 65 20  .**.** The code 
e8a0: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 69  to implement thi
e8b0: 73 20 41 50 49 20 69 73 20 6e 6f 74 20 61 76 61  s API is not ava
e8c0: 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 70 75  ilable in the pu
e8d0: 62 6c 69 63 20 72 65 6c 65 61 73 65 0a 2a 2a 20  blic release.** 
e8e0: 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e  of SQLite..*/.in
e8f0: 74 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 0a 20  t sqlite3_key(. 
e900: 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
e910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e920: 2f 2a 20 44 61 74 61 62 61 73 65 20 74 6f 20 62  /* Database to b
e930: 65 20 72 65 6b 65 79 65 64 20 2a 2f 0a 20 20 63  e rekeyed */.  c
e940: 6f 6e 73 74 20 76 6f 69 64 20 2a 70 4b 65 79 2c  onst void *pKey,
e950: 20 69 6e 74 20 6e 4b 65 79 20 20 20 20 20 2f 2a   int nKey     /*
e960: 20 54 68 65 20 6b 65 79 20 2a 2f 0a 29 3b 0a 0a   The key */.);..
e970: 2f 2a 0a 2a 2a 20 43 68 61 6e 67 65 20 74 68 65  /*.** Change the
e980: 20 6b 65 79 20 6f 6e 20 61 6e 20 6f 70 65 6e 20   key on an open 
e990: 64 61 74 61 62 61 73 65 2e 20 20 49 66 20 74 68  database.  If th
e9a0: 65 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61  e current databa
e9b0: 73 65 20 69 73 20 6e 6f 74 0a 2a 2a 20 65 6e 63  se is not.** enc
e9c0: 72 79 70 74 65 64 2c 20 74 68 69 73 20 72 6f 75  rypted, this rou
e9d0: 74 69 6e 65 20 77 69 6c 6c 20 65 6e 63 72 79 70  tine will encryp
e9e0: 74 20 69 74 2e 20 20 49 66 20 70 4e 65 77 3d 3d  t it.  If pNew==
e9f0: 30 20 6f 72 20 6e 4e 65 77 3d 3d 30 2c 20 74 68  0 or nNew==0, th
ea00: 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 69 73  e.** database is
ea10: 20 64 65 63 72 79 70 74 65 64 2e 0a 2a 2a 0a 2a   decrypted..**.*
ea20: 2a 20 54 68 65 20 63 6f 64 65 20 74 6f 20 69 6d  * The code to im
ea30: 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 41 50 49  plement this API
ea40: 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
ea50: 65 20 69 6e 20 74 68 65 20 70 75 62 6c 69 63 20  e in the public 
ea60: 72 65 6c 65 61 73 65 0a 2a 2a 20 6f 66 20 53 51  release.** of SQ
ea70: 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  Lite..*/.int sql
ea80: 69 74 65 33 5f 72 65 6b 65 79 28 0a 20 20 73 71  ite3_rekey(.  sq
ea90: 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
eaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
eab0: 44 61 74 61 62 61 73 65 20 74 6f 20 62 65 20 72  Database to be r
eac0: 65 6b 65 79 65 64 20 2a 2f 0a 20 20 63 6f 6e 73  ekeyed */.  cons
ead0: 74 20 76 6f 69 64 20 2a 70 4b 65 79 2c 20 69 6e  t void *pKey, in
eae0: 74 20 6e 4b 65 79 20 20 20 20 20 2f 2a 20 54 68  t nKey     /* Th
eaf0: 65 20 6e 65 77 20 6b 65 79 20 2a 2f 0a 29 3b 0a  e new key */.);.
eb00: 0a 2f 2a 0a 2a 2a 20 53 6c 65 65 70 20 66 6f 72  ./*.** Sleep for
eb10: 20 61 20 6c 69 74 74 6c 65 20 77 68 69 6c 65 2e   a little while.
eb20: 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
eb30: 6d 65 74 65 72 20 69 73 20 74 68 65 20 6e 75 6d  meter is the num
eb40: 62 65 72 20 6f 66 0a 2a 2a 20 6d 69 6c 69 73 65  ber of.** milise
eb50: 63 6f 6e 64 73 20 74 6f 20 73 6c 65 65 70 20 66  conds to sleep f
eb60: 6f 72 2e 20 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68  or. .**.** If th
eb70: 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
eb80: 65 6d 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70  em does not supp
eb90: 6f 72 74 20 73 6c 65 65 70 20 72 65 71 75 65 73  ort sleep reques
eba0: 74 73 20 77 69 74 68 20 0a 2a 2a 20 6d 69 6c 69  ts with .** mili
ebb0: 73 65 63 6f 6e 64 20 74 69 6d 65 20 72 65 73 6f  second time reso
ebc0: 6c 75 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65  lution, then the
ebd0: 20 74 69 6d 65 20 77 69 6c 6c 20 62 65 20 72 6f   time will be ro
ebe0: 75 6e 64 65 64 20 75 70 20 74 6f 20 0a 2a 2a 20  unded up to .** 
ebf0: 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 63 6f  the nearest seco
ec00: 6e 64 2e 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  nd. The number o
ec10: 66 20 6d 69 6c 69 73 65 63 6f 6e 64 73 20 6f 66  f miliseconds of
ec20: 20 73 6c 65 65 70 20 61 63 74 75 61 6c 6c 79 20   sleep actually 
ec30: 0a 2a 2a 20 72 65 71 75 65 73 74 65 64 20 66 72  .** requested fr
ec40: 6f 6d 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  om the operating
ec50: 20 73 79 73 74 65 6d 20 69 73 20 72 65 74 75 72   system is retur
ec60: 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ned..*/.int sqli
ec70: 74 65 33 5f 73 6c 65 65 70 28 69 6e 74 29 3b 0a  te3_sleep(int);.
ec80: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 54 52  ./*.** Return TR
ec90: 55 45 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66  UE (non-zero) if
eca0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 73   the statement s
ecb0: 75 70 70 6c 69 65 64 20 61 73 20 61 6e 20 61 72  upplied as an ar
ecc0: 67 75 6d 65 6e 74 20 6e 65 65 64 73 0a 2a 2a 20  gument needs.** 
ecd0: 74 6f 20 62 65 20 72 65 63 6f 6d 70 69 6c 65 64  to be recompiled
ece0: 2e 20 20 41 20 73 74 61 74 65 6d 65 6e 74 20 6e  .  A statement n
ecf0: 65 65 64 73 20 74 6f 20 62 65 20 72 65 63 6f 6d  eeds to be recom
ed00: 70 69 6c 65 64 20 77 68 65 6e 65 76 65 72 20 74  piled whenever t
ed10: 68 65 0a 2a 2a 20 65 78 65 63 75 74 69 6f 6e 20  he.** execution 
ed20: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 63 68 61 6e  environment chan
ed30: 67 65 73 20 69 6e 20 61 20 77 61 79 20 74 68 61  ges in a way tha
ed40: 74 20 77 6f 75 6c 64 20 61 6c 74 65 72 20 74 68  t would alter th
ed50: 65 20 70 72 6f 67 72 61 6d 0a 2a 2a 20 74 68 61  e program.** tha
ed60: 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  t sqlite3_prepar
ed70: 65 28 29 20 67 65 6e 65 72 61 74 65 73 2e 20 20  e() generates.  
ed80: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  For example, if 
ed90: 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72  new functions or
eda0: 0a 2a 2a 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65  .** collating se
edb0: 71 75 65 6e 63 65 73 20 61 72 65 20 72 65 67 69  quences are regi
edc0: 73 74 65 72 65 64 20 6f 72 20 69 66 20 61 6e 20  stered or if an 
edd0: 61 75 74 68 6f 72 69 7a 65 72 20 66 75 6e 63 74  authorizer funct
ede0: 69 6f 6e 20 69 73 0a 2a 2a 20 61 64 64 65 64 20  ion is.** added 
edf0: 6f 72 20 63 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a  or changed..**.*
ee00: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78  /.int sqlite3_ex
ee10: 70 69 72 65 64 28 73 71 6c 69 74 65 33 5f 73 74  pired(sqlite3_st
ee20: 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 4d 6f 76  mt*);../*.** Mov
ee30: 65 20 61 6c 6c 20 62 69 6e 64 69 6e 67 73 20 66  e all bindings f
ee40: 72 6f 6d 20 74 68 65 20 66 69 72 73 74 20 70 72  rom the first pr
ee50: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
ee60: 20 6f 76 65 72 20 74 6f 20 74 68 65 20 73 65 63   over to the sec
ee70: 6f 6e 64 2e 0a 2a 2a 20 54 68 69 73 20 72 6f 75  ond..** This rou
ee80: 74 69 6e 65 20 69 73 20 75 73 65 66 75 6c 2c 20  tine is useful, 
ee90: 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  for example, if 
eea0: 74 68 65 20 66 69 72 73 74 20 70 72 65 70 61 72  the first prepar
eeb0: 65 64 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20  ed statement.** 
eec0: 66 61 69 6c 73 20 77 69 74 68 20 61 6e 20 53 51  fails with an SQ
eed0: 4c 49 54 45 5f 53 43 48 45 4d 41 20 65 72 72 6f  LITE_SCHEMA erro
eee0: 72 2e 20 20 54 68 65 20 73 61 6d 65 20 53 51 4c  r.  The same SQL
eef0: 20 63 61 6e 20 62 65 20 70 72 65 70 61 72 65 64   can be prepared
ef00: 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73 65 63   into.** the sec
ef10: 6f 6e 64 20 70 72 65 70 61 72 65 64 20 73 74 61  ond prepared sta
ef20: 74 65 6d 65 6e 74 20 74 68 65 6e 20 61 6c 6c 20  tement then all 
ef30: 6f 66 20 74 68 65 20 62 69 6e 64 69 6e 67 73 20  of the bindings 
ef40: 74 72 61 6e 73 66 65 72 65 64 20 6f 76 65 72 0a  transfered over.
ef50: 2a 2a 20 74 6f 20 74 68 65 20 73 65 63 6f 6e 64  ** to the second
ef60: 20 73 74 61 74 65 6d 65 6e 74 20 62 65 66 6f 72   statement befor
ef70: 65 20 74 68 65 20 66 69 72 73 74 20 73 74 61 74  e the first stat
ef80: 65 6d 65 6e 74 20 69 73 20 66 69 6e 61 6c 69 7a  ement is finaliz
ef90: 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  ed..*/.int sqlit
efa0: 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e 64  e3_transfer_bind
efb0: 69 6e 67 73 28 73 71 6c 69 74 65 33 5f 73 74 6d  ings(sqlite3_stm
efc0: 74 2a 2c 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  t*, sqlite3_stmt
efd0: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 74 68  *);../*.** If th
efe0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67 6c 6f 62  e following glob
eff0: 61 6c 20 76 61 72 69 61 62 6c 65 20 69 73 20 6d  al variable is m
f000: 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20  ade to point to 
f010: 61 0a 2a 2a 20 73 74 72 69 6e 67 20 77 68 69 63  a.** string whic
f020: 68 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  h is the name of
f030: 20 61 20 64 69 72 65 63 74 6f 72 79 2c 20 74 68   a directory, th
f040: 65 6e 20 61 6c 6c 20 74 65 6d 70 6f 72 61 72 79  en all temporary
f050: 20 66 69 6c 65 73 0a 2a 2a 20 63 72 65 61 74 65   files.** create
f060: 64 20 62 79 20 53 51 4c 69 74 65 20 77 69 6c 6c  d by SQLite will
f070: 20 62 65 20 70 6c 61 63 65 64 20 69 6e 20 74 68   be placed in th
f080: 61 74 20 64 69 72 65 63 74 6f 72 79 2e 20 20 49  at directory.  I
f090: 66 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 0a  f this variable.
f0a0: 2a 2a 20 69 73 20 4e 55 4c 4c 20 70 6f 69 6e 74  ** is NULL point
f0b0: 65 72 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  er, then SQLite 
f0c0: 64 6f 65 73 20 61 20 73 65 61 72 63 68 20 66 6f  does a search fo
f0d0: 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  r an appropriate
f0e0: 20 74 65 6d 70 6f 72 61 72 79 0a 2a 2a 20 66 69   temporary.** fi
f0f0: 6c 65 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a 2a  le directory..**
f100: 0a 2a 2a 20 4f 6e 63 65 20 73 71 6c 69 74 65 33  .** Once sqlite3
f110: 5f 6f 70 65 6e 28 29 20 68 61 73 20 62 65 65 6e  _open() has been
f120: 20 63 61 6c 6c 65 64 2c 20 63 68 61 6e 67 69 6e   called, changin
f130: 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20  g this variable 
f140: 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 0a  will invalidate.
f150: 2a 2a 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  ** the current t
f160: 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61 73  emporary databas
f170: 65 2c 20 69 66 20 61 6e 79 2e 0a 2a 2f 0a 65 78  e, if any..*/.ex
f180: 74 65 72 6e 20 63 68 61 72 20 2a 73 71 6c 69 74  tern char *sqlit
f190: 65 33 5f 74 65 6d 70 5f 64 69 72 65 63 74 6f 72  e3_temp_director
f1a0: 79 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66  y;../*.** This f
f1b0: 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65  unction is calle
f1c0: 64 20 74 6f 20 72 65 63 6f 76 65 72 20 66 72 6f  d to recover fro
f1d0: 6d 20 61 20 6d 61 6c 6c 6f 63 28 29 20 66 61 69  m a malloc() fai
f1e0: 6c 75 72 65 20 74 68 61 74 20 6f 63 63 75 72 65  lure that occure
f1f0: 64 0a 2a 2a 20 77 69 74 68 69 6e 20 74 68 65 20  d.** within the 
f200: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20  SQLite library. 
f210: 4e 6f 72 6d 61 6c 6c 79 2c 20 61 66 74 65 72 20  Normally, after 
f220: 61 20 73 69 6e 67 6c 65 20 6d 61 6c 6c 6f 63 28  a single malloc(
f230: 29 20 66 61 69 6c 73 20 74 68 65 20 0a 2a 2a 20  ) fails the .** 
f240: 6c 69 62 72 61 72 79 20 72 65 66 75 73 65 73 20  library refuses 
f250: 74 6f 20 66 75 6e 63 74 69 6f 6e 20 28 61 6c 6c  to function (all
f260: 20 6d 61 6a 6f 72 20 63 61 6c 6c 73 20 72 65 74   major calls ret
f270: 75 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d  urn SQLITE_NOMEM
f280: 29 2e 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74  )..** This funct
f290: 69 6f 6e 20 72 65 73 74 6f 72 65 73 20 74 68 65  ion restores the
f2a0: 20 6c 69 62 72 61 72 79 20 73 74 61 74 65 20 73   library state s
f2b0: 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20 62 65  o that it can be
f2c0: 20 75 73 65 64 20 61 67 61 69 6e 2e 0a 2a 2a 0a   used again..**.
f2d0: 2a 2a 20 41 6c 6c 20 65 78 69 73 74 69 6e 67 20  ** All existing 
f2e0: 73 74 61 74 65 6d 65 6e 74 73 20 28 73 71 6c 69  statements (sqli
f2f0: 74 65 33 5f 73 74 6d 74 20 70 6f 69 6e 74 65 72  te3_stmt pointer
f300: 73 29 20 6d 75 73 74 20 62 65 20 66 69 6e 61 6c  s) must be final
f310: 69 7a 65 64 20 6f 72 0a 2a 2a 20 72 65 73 65 74  ized or.** reset
f320: 20 62 65 66 6f 72 65 20 74 68 69 73 20 63 61 6c   before this cal
f330: 6c 20 69 73 20 6d 61 64 65 2e 20 4f 74 68 65 72  l is made. Other
f340: 77 69 73 65 2c 20 53 51 4c 49 54 45 5f 42 55 53  wise, SQLITE_BUS
f350: 59 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  Y is returned..*
f360: 2a 20 49 66 20 61 6e 79 20 69 6e 2d 6d 65 6d 6f  * If any in-memo
f370: 72 79 20 64 61 74 61 62 61 73 65 73 20 61 72 65  ry databases are
f380: 20 69 6e 20 75 73 65 2c 20 65 69 74 68 65 72 20   in use, either 
f390: 61 73 20 61 20 6d 61 69 6e 20 6f 72 20 54 45 4d  as a main or TEM
f3a0: 50 0a 2a 2a 20 64 61 74 61 62 61 73 65 2c 20 53  P.** database, S
f3b0: 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 73 20 72  QLITE_ERROR is r
f3c0: 65 74 75 72 6e 65 64 2e 20 49 6e 20 65 69 74 68  eturned. In eith
f3d0: 65 72 20 6f 66 20 74 68 65 73 65 20 63 61 73 65  er of these case
f3e0: 73 2c 20 74 68 65 20 0a 2a 2a 20 6c 69 62 72 61  s, the .** libra
f3f0: 72 79 20 69 73 20 6e 6f 74 20 72 65 73 65 74 20  ry is not reset 
f400: 61 6e 64 20 72 65 6d 61 69 6e 73 20 75 6e 75 73  and remains unus
f410: 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  able..**.** This
f420: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 2a 6e 6f   function is *no
f430: 74 2a 20 74 68 72 65 61 64 73 61 66 65 2e 20 43  t* threadsafe. C
f440: 61 6c 6c 69 6e 67 20 74 68 69 73 20 66 72 6f 6d  alling this from
f450: 20 77 69 74 68 69 6e 20 61 20 74 68 72 65 61 64   within a thread
f460: 65 64 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f  ed.** applicatio
f470: 6e 20 77 68 65 6e 20 74 68 72 65 61 64 73 20 6f  n when threads o
f480: 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 63 61  ther than the ca
f490: 6c 6c 65 72 20 68 61 76 65 20 75 73 65 64 20 53  ller have used S
f4a0: 51 4c 69 74 65 20 69 73 0a 2a 2a 20 64 61 6e 67  QLite is.** dang
f4b0: 65 72 6f 75 73 20 61 6e 64 20 77 69 6c 6c 20 61  erous and will a
f4c0: 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20  lmost certainly 
f4d0: 72 65 73 75 6c 74 20 69 6e 20 6d 61 6c 66 75 6e  result in malfun
f4e0: 63 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  ctions..**.** Th
f4f0: 69 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  is functionality
f500: 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65 64 20   can be omitted 
f510: 66 72 6f 6d 20 61 20 62 75 69 6c 64 20 62 79 20  from a build by 
f520: 64 65 66 69 6e 69 6e 67 20 74 68 65 20 0a 2a 2a  defining the .**
f530: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 4c 4f   SQLITE_OMIT_GLO
f540: 42 41 4c 52 45 43 4f 56 45 52 20 61 74 20 63 6f  BALRECOVER at co
f550: 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 2a 2f 0a 69  mpile time..*/.i
f560: 6e 74 20 73 71 6c 69 74 65 33 5f 67 6c 6f 62 61  nt sqlite3_globa
f570: 6c 5f 72 65 63 6f 76 65 72 28 76 6f 69 64 29 3b  l_recover(void);
f580: 0a 0a 2f 2a 0a 2a 2a 20 54 65 73 74 20 74 6f 20  ../*.** Test to 
f590: 73 65 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  see whether or n
f5a0: 6f 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ot the database 
f5b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69 6e  connection is in
f5c0: 20 61 75 74 6f 63 6f 6d 6d 69 74 0a 2a 2a 20 6d   autocommit.** m
f5d0: 6f 64 65 2e 20 20 52 65 74 75 72 6e 20 54 52 55  ode.  Return TRU
f5e0: 45 20 69 66 20 69 74 20 69 73 20 61 6e 64 20 46  E if it is and F
f5f0: 41 4c 53 45 20 69 66 20 6e 6f 74 2e 20 20 41 75  ALSE if not.  Au
f600: 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73  tocommit mode is
f610: 20 6f 6e 0a 2a 2a 20 62 79 20 64 65 66 61 75 6c   on.** by defaul
f620: 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20 69  t.  Autocommit i
f630: 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 61 20  s disabled by a 
f640: 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 20  BEGIN statement 
f650: 61 6e 64 20 72 65 65 6e 61 62 6c 65 64 0a 2a 2a  and reenabled.**
f660: 20 62 79 20 74 68 65 20 6e 65 78 74 20 43 4f 4d   by the next COM
f670: 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 2e  MIT or ROLLBACK.
f680: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
f690: 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 73  get_autocommit(s
f6a0: 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
f6b0: 20 52 65 74 75 72 6e 20 74 68 65 20 73 71 6c 69   Return the sqli
f6c0: 74 65 33 2a 20 64 61 74 61 62 61 73 65 20 68 61  te3* database ha
f6d0: 6e 64 6c 65 20 74 6f 20 77 68 69 63 68 20 74 68  ndle to which th
f6e0: 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
f6f0: 6d 65 6e 74 20 67 69 76 65 6e 0a 2a 2a 20 69 6e  ment given.** in
f700: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 62 65   the argument be
f710: 6c 6f 6e 67 73 2e 20 20 54 68 69 73 20 69 73 20  longs.  This is 
f720: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
f730: 65 20 68 61 6e 64 6c 65 20 74 68 61 74 20 77 61  e handle that wa
f740: 73 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20 61  s.** the first a
f750: 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73  rgument to the s
f760: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
f770: 20 74 68 61 74 20 77 61 73 20 75 73 65 64 20 74   that was used t
f780: 6f 20 63 72 65 61 74 65 0a 2a 2a 20 74 68 65 20  o create.** the 
f790: 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 74 68 65  statement in the
f7a0: 20 66 69 72 73 74 20 70 6c 61 63 65 2e 0a 2a 2f   first place..*/
f7b0: 0a 73 71 6c 69 74 65 33 20 2a 73 71 6c 69 74 65  .sqlite3 *sqlite
f7c0: 33 5f 64 62 5f 68 61 6e 64 6c 65 28 73 71 6c 69  3_db_handle(sqli
f7d0: 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
f7e0: 2a 2a 20 52 65 67 69 73 74 65 72 20 61 20 63 61  ** Register a ca
f7f0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
f800: 77 69 74 68 20 74 68 65 20 64 61 74 61 62 61 73  with the databas
f810: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 64 65  e connection ide
f820: 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20 0a  ntified by the .
f830: 2a 2a 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  ** first argumen
f840: 74 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20  t to be invoked 
f850: 77 68 65 6e 65 76 65 72 20 61 20 72 6f 77 20 69  whenever a row i
f860: 73 20 75 70 64 61 74 65 64 2c 20 69 6e 73 65 72  s updated, inser
f870: 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 2e 0a  ted or deleted..
f880: 2a 2a 20 41 6e 79 20 63 61 6c 6c 62 61 63 6b 20  ** Any callback 
f890: 73 65 74 20 62 79 20 61 20 70 72 65 76 69 6f 75  set by a previou
f8a0: 73 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 66  s call to this f
f8b0: 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  unction for the 
f8c0: 73 61 6d 65 20 0a 2a 2a 20 64 61 74 61 62 61 73  same .** databas
f8d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
f8e0: 6f 76 65 72 72 69 64 64 65 6e 2e 0a 2a 2a 0a 2a  overridden..**.*
f8f0: 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67  * The second arg
f900: 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74  ument is a point
f910: 65 72 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69  er to the functi
f920: 6f 6e 20 74 6f 20 69 6e 76 6f 6b 65 20 77 68 65  on to invoke whe
f930: 6e 20 61 20 0a 2a 2a 20 72 6f 77 20 69 73 20 75  n a .** row is u
f940: 70 64 61 74 65 64 2c 20 69 6e 73 65 72 74 65 64  pdated, inserted
f950: 20 6f 72 20 64 65 6c 65 74 65 64 2e 20 54 68 65   or deleted. The
f960: 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
f970: 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  to the callback 
f980: 69 73 0a 2a 2a 20 61 20 63 6f 70 79 20 6f 66 20  is.** a copy of 
f990: 74 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  the third argume
f9a0: 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 75 70  nt to sqlite3_up
f9b0: 64 61 74 65 5f 68 6f 6f 6b 2e 20 54 68 65 20 73  date_hook. The s
f9c0: 65 63 6f 6e 64 20 63 61 6c 6c 62 61 63 6b 20 0a  econd callback .
f9d0: 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  ** argument is o
f9e0: 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 53  ne of SQLITE_INS
f9f0: 45 52 54 2c 20 53 51 4c 49 54 45 5f 44 45 4c 45  ERT, SQLITE_DELE
fa00: 54 45 20 6f 72 20 53 51 4c 49 54 45 5f 55 50 44  TE or SQLITE_UPD
fa10: 41 54 45 2c 20 64 65 70 65 6e 64 69 6e 67 0a 2a  ATE, depending.*
fa20: 2a 20 6f 6e 20 74 68 65 20 6f 70 65 72 61 74 69  * on the operati
fa30: 6f 6e 20 74 68 61 74 20 63 61 75 73 65 64 20 74  on that caused t
fa40: 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 62  he callback to b
fa50: 65 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65 20 74  e invoked. The t
fa60: 68 69 72 64 20 61 6e 64 20 0a 2a 2a 20 66 6f 75  hird and .** fou
fa70: 72 74 68 20 61 72 67 75 6d 65 6e 74 73 20 74 6f  rth arguments to
fa80: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 63 6f   the callback co
fa90: 6e 74 61 69 6e 20 70 6f 69 6e 74 65 72 73 20 74  ntain pointers t
faa0: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  o the database a
fab0: 6e 64 20 0a 2a 2a 20 74 61 62 6c 65 20 6e 61 6d  nd .** table nam
fac0: 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  e containing the
fad0: 20 61 66 66 65 63 74 65 64 20 72 6f 77 2e 20 54   affected row. T
fae0: 68 65 20 66 69 6e 61 6c 20 63 61 6c 6c 62 61 63  he final callbac
faf0: 6b 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 0a  k parameter is .
fb00: 2a 2a 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20  ** the rowid of 
fb10: 74 68 65 20 72 6f 77 2e 20 49 6e 20 74 68 65 20  the row. In the 
fb20: 63 61 73 65 20 6f 66 20 61 6e 20 75 70 64 61 74  case of an updat
fb30: 65 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 72  e, this is the r
fb40: 6f 77 69 64 20 61 66 74 65 72 20 0a 2a 2a 20 74  owid after .** t
fb50: 68 65 20 75 70 64 61 74 65 20 74 61 6b 65 73 20  he update takes 
fb60: 70 6c 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  place..**.** The
fb70: 20 75 70 64 61 74 65 20 68 6f 6f 6b 20 69 73 20   update hook is 
fb80: 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e  not invoked when
fb90: 20 69 6e 74 65 72 6e 61 6c 20 73 79 73 74 65 6d   internal system
fba0: 20 74 61 62 6c 65 73 20 61 72 65 0a 2a 2a 20 6d   tables are.** m
fbb0: 6f 64 69 66 69 65 64 20 28 69 2e 65 2e 20 73 71  odified (i.e. sq
fbc0: 6c 69 74 65 5f 6d 61 73 74 65 72 20 61 6e 64 20  lite_master and 
fbd0: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 29  sqlite_sequence)
fbe0: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 6f 74 68  ..**.** If anoth
fbf0: 65 72 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20  er function was 
fc00: 70 72 65 76 69 6f 75 73 6c 79 20 72 65 67 69 73  previously regis
fc10: 74 65 72 65 64 2c 20 69 74 73 20 70 41 72 67 20  tered, its pArg 
fc20: 76 61 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65  value is returne
fc30: 64 2e 0a 2a 2a 20 4f 74 68 65 72 77 69 73 65 20  d..** Otherwise 
fc40: 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64  NULL is returned
fc50: 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74  ..*/.void *sqlit
fc60: 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 0a  e3_update_hook(.
fc70: 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20 76    sqlite3*, .  v
fc80: 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 2c 69 6e  oid(*)(void *,in
fc90: 74 20 2c 63 68 61 72 20 63 6f 6e 73 74 20 2a 2c  t ,char const *,
fca0: 63 68 61 72 20 63 6f 6e 73 74 20 2a 2c 73 71 6c  char const *,sql
fcb0: 69 74 65 5f 69 6e 74 36 34 29 2c 0a 20 20 76 6f  ite_int64),.  vo
fcc0: 69 64 2a 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65  id*.);../*.** Re
fcd0: 67 69 73 74 65 72 20 61 20 63 61 6c 6c 62 61 63  gister a callbac
fce0: 6b 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20  k to be invoked 
fcf0: 77 68 65 6e 65 76 65 72 20 61 20 74 72 61 6e 73  whenever a trans
fd00: 61 63 74 69 6f 6e 20 69 73 20 72 6f 6c 6c 65 64  action is rolled
fd10: 0a 2a 2a 20 62 61 63 6b 2e 20 0a 2a 2a 0a 2a 2a  .** back. .**.**
fd20: 20 54 68 65 20 6e 65 77 20 63 61 6c 6c 62 61 63   The new callbac
fd30: 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 76 65 72 72  k function overr
fd40: 69 64 65 73 20 61 6e 79 20 65 78 69 73 74 69 6e  ides any existin
fd50: 67 20 72 6f 6c 6c 62 61 63 6b 2d 68 6f 6f 6b 0a  g rollback-hook.
fd60: 2a 2a 20 63 61 6c 6c 62 61 63 6b 2e 20 49 66 20  ** callback. If 
fd70: 74 68 65 72 65 20 77 61 73 20 61 6e 20 65 78 69  there was an exi
fd80: 73 74 69 6e 67 20 63 61 6c 6c 62 61 63 6b 2c 20  sting callback, 
fd90: 74 68 65 6e 20 69 74 27 73 20 70 41 72 67 20 76  then it's pArg v
fda0: 61 6c 75 65 20 0a 2a 2a 20 28 74 68 65 20 74 68  alue .** (the th
fdb0: 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ird argument to 
fdc0: 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
fdd0: 5f 68 6f 6f 6b 28 29 20 77 68 65 6e 20 69 74 20  _hook() when it 
fde0: 77 61 73 20 72 65 67 69 73 74 65 72 65 64 29 20  was registered) 
fdf0: 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e 65 64 2e  .** is returned.
fe00: 20 4f 74 68 65 72 77 69 73 65 2c 20 4e 55 4c 4c   Otherwise, NULL
fe10: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a   is returned..**
fe20: 0a 2a 2a 20 46 6f 72 20 74 68 65 20 70 75 72 70  .** For the purp
fe30: 6f 73 65 73 20 6f 66 20 74 68 69 73 20 41 50 49  oses of this API
fe40: 2c 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  , a transaction 
fe50: 69 73 20 73 61 69 64 20 74 6f 20 68 61 76 65 20  is said to have 
fe60: 62 65 65 6e 20 0a 2a 2a 20 72 6f 6c 6c 65 64 20  been .** rolled 
fe70: 62 61 63 6b 20 69 66 20 61 6e 20 65 78 70 6c 69  back if an expli
fe80: 63 69 74 20 22 52 4f 4c 4c 42 41 43 4b 22 20 73  cit "ROLLBACK" s
fe90: 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78 65 63  tatement is exec
fea0: 75 74 65 64 2c 20 6f 72 0a 2a 2a 20 61 6e 20 65  uted, or.** an e
feb0: 72 72 6f 72 20 6f 72 20 63 6f 6e 73 74 72 61 69  rror or constrai
fec0: 6e 74 20 63 61 75 73 65 73 20 61 6e 20 69 6d 70  nt causes an imp
fed0: 6c 69 63 69 74 20 72 6f 6c 6c 62 61 63 6b 20 74  licit rollback t
fee0: 6f 20 6f 63 63 75 72 2e 20 54 68 65 20 0a 2a 2a  o occur. The .**
fef0: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74   callback is not
ff00: 20 69 6e 76 6f 6b 65 64 20 69 66 20 61 20 74 72   invoked if a tr
ff10: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 61 75 74  ansaction is aut
ff20: 6f 6d 61 74 69 63 61 6c 6c 79 20 72 6f 6c 6c 65  omatically rolle
ff30: 64 0a 2a 2a 20 62 61 63 6b 20 62 65 63 61 75 73  d.** back becaus
ff40: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  e the database c
ff50: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f  onnection is clo
ff60: 73 65 64 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71  sed..*/.void *sq
ff70: 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68  lite3_rollback_h
ff80: 6f 6f 6b 28 73 71 6c 69 74 65 33 2a 2c 20 76 6f  ook(sqlite3*, vo
ff90: 69 64 28 2a 29 28 76 6f 69 64 20 2a 29 2c 20 76  id(*)(void *), v
ffa0: 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  oid*);../*.** Th
ffb0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f  is function is o
ffc0: 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66  nly available if
ffd0: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
ffe0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74  compiled without
fff0: 0a 2a 2a 20 74 68 65 20 53 51 4c 49 54 45 5f 4f  .** the SQLITE_O
10000 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45  MIT_SHARED_CACHE
10010 20 6d 61 63 72 6f 20 64 65 66 69 6e 65 64 2e 20   macro defined. 
10020 49 74 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e  It is used to en
10030 61 62 6c 65 20 6f 72 0a 2a 2a 20 64 69 73 61 62  able or.** disab
10040 6c 65 20 28 69 66 20 74 68 65 20 61 72 67 75 6d  le (if the argum
10050 65 6e 74 20 69 73 20 74 72 75 65 20 6f 72 20 66  ent is true or f
10060 61 6c 73 65 2c 20 72 65 73 70 65 63 74 69 76 65  alse, respective
10070 6c 79 29 20 74 68 65 20 0a 2a 2a 20 22 73 68 61  ly) the .** "sha
10080 72 65 64 20 70 61 67 65 72 22 20 66 65 61 74 75  red pager" featu
10090 72 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  re..*/.int sqlit
100a0 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
100b0 5f 63 61 63 68 65 28 69 6e 74 29 3b 0a 0a 2f 2a  _cache(int);../*
100c0 0a 2a 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 66  .** Attempt to f
100d0 72 65 65 20 4e 20 62 79 74 65 73 20 6f 66 20 68  ree N bytes of h
100e0 65 61 70 20 6d 65 6d 6f 72 79 20 62 79 20 64 65  eap memory by de
100f0 61 6c 6c 6f 63 61 74 69 6e 67 20 6e 6f 6e 2d 65  allocating non-e
10100 73 73 65 6e 74 69 61 6c 0a 2a 2a 20 6d 65 6d 6f  ssential.** memo
10110 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 68  ry allocations h
10120 65 6c 64 20 62 79 20 74 68 65 20 64 61 74 61 62  eld by the datab
10130 61 73 65 20 6c 69 62 72 61 72 79 20 28 65 78 61  ase library (exa
10140 6d 70 6c 65 3a 20 6d 65 6d 6f 72 79 20 0a 2a 2a  mple: memory .**
10150 20 75 73 65 64 20 74 6f 20 63 61 63 68 65 20 64   used to cache d
10160 61 74 61 62 61 73 65 20 70 61 67 65 73 20 74 6f  atabase pages to
10170 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d   improve perform
10180 61 6e 63 65 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  ance)..**.** Thi
10190 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f  s function is no
101a0 74 20 61 20 70 61 72 74 20 6f 66 20 73 74 61 6e  t a part of stan
101b0 64 61 72 64 20 62 75 69 6c 64 73 2e 20 20 49 74  dard builds.  It
101c0 20 69 73 20 6f 6e 6c 79 20 63 72 65 61 74 65 64   is only created
101d0 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20 69 73  .** if SQLite is
101e0 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
101f0 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  he SQLITE_ENABLE
10200 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45  _MEMORY_MANAGEME
10210 4e 54 20 6d 61 63 72 6f 2e 0a 2a 2f 0a 69 6e 74  NT macro..*/.int
10220 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65   sqlite3_release
10230 5f 6d 65 6d 6f 72 79 28 69 6e 74 29 3b 0a 0a 2f  _memory(int);../
10240 2a 0a 2a 2a 20 50 6c 61 63 65 20 61 20 22 73 6f  *.** Place a "so
10250 66 74 22 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65  ft" limit on the
10260 20 61 6d 6f 75 6e 74 20 6f 66 20 68 65 61 70 20   amount of heap 
10270 6d 65 6d 6f 72 79 20 74 68 61 74 20 6d 61 79 20  memory that may 
10280 62 65 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 0a  be allocated by.
10290 2a 2a 20 53 51 4c 69 74 65 20 77 69 74 68 69 6e  ** SQLite within
102a0 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72   the current thr
102b0 65 61 64 2e 20 49 66 20 61 6e 20 69 6e 74 65 72  ead. If an inter
102c0 6e 61 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69  nal allocation i
102d0 73 20 72 65 71 75 65 73 74 65 64 20 0a 2a 2a 20  s requested .** 
102e0 74 68 61 74 20 77 6f 75 6c 64 20 65 78 63 65 65  that would excee
102f0 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  d the specified 
10300 6c 69 6d 69 74 2c 20 73 71 6c 69 74 65 33 5f 72  limit, sqlite3_r
10310 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 20  elease_memory() 
10320 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 6f 6e  is invoked.** on
10330 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 20  e or more times 
10340 74 6f 20 66 72 65 65 20 75 70 20 73 6f 6d 65 20  to free up some 
10350 73 70 61 63 65 20 62 65 66 6f 72 65 20 74 68 65  space before the
10360 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73 20 6d   allocation is m
10370 61 64 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6c  ade..**.** The l
10380 69 6d 69 74 20 69 73 20 63 61 6c 6c 65 64 20 22  imit is called "
10390 73 6f 66 74 22 2c 20 62 65 63 61 75 73 65 20 69  soft", because i
103a0 66 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73  f sqlite3_releas
103b0 65 5f 6d 65 6d 6f 72 79 28 29 20 63 61 6e 6e 6f  e_memory() canno
103c0 74 20 66 72 65 65 0a 2a 2a 20 73 75 66 66 69 63  t free.** suffic
103d0 69 65 6e 74 20 6d 65 6d 6f 72 79 20 74 6f 20 70  ient memory to p
103e0 72 65 76 65 6e 74 20 74 68 65 20 6c 69 6d 69 74  revent the limit
103f0 20 66 72 6f 6d 20 62 65 69 6e 67 20 65 78 63 65   from being exce
10400 65 64 65 64 2c 20 74 68 65 20 6d 65 6d 6f 72 79  eded, the memory
10410 20 69 73 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65 64   is.** allocated
10420 20 61 6e 79 77 61 79 20 61 6e 64 20 74 68 65 20   anyway and the 
10430 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6f  current operatio
10440 6e 20 70 72 6f 63 65 65 64 73 2e 0a 2a 2a 0a 2a  n proceeds..**.*
10450 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
10460 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
10470 65 20 69 66 20 74 68 65 20 6c 69 62 72 61 72 79  e if the library
10480 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69   was compiled wi
10490 74 68 20 74 68 65 20 0a 2a 2a 20 53 51 4c 49 54  th the .** SQLIT
104a0 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f  E_ENABLE_MEMORY_
104b0 4d 41 4e 41 47 45 4d 45 4e 54 20 6f 70 74 69 6f  MANAGEMENT optio
104c0 6e 20 73 65 74 2e 0a 2a 2a 20 6d 65 6d 6f 72 79  n set..** memory
104d0 2d 6d 61 6e 61 67 65 6d 65 6e 74 20 68 61 73 20  -management has 
104e0 62 65 65 6e 20 65 6e 61 62 6c 65 64 2e 0a 2a 2f  been enabled..*/
104f0 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 73 6f  .void sqlite3_so
10500 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28 69 6e  ft_heap_limit(in
10510 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20  t);../*.** This 
10520 72 6f 75 74 69 6e 65 20 6d 61 6b 65 73 20 73 75  routine makes su
10530 72 65 20 74 68 61 74 20 61 6c 6c 20 74 68 72 65  re that all thre
10540 61 64 2d 6c 6f 63 61 6c 20 73 74 6f 72 61 67 65  ad-local storage
10550 20 68 61 73 20 62 65 65 6e 0a 2a 2a 20 64 65 61   has been.** dea
10560 6c 6c 6f 63 61 74 65 64 20 66 6f 72 20 74 68 65  llocated for the
10570 20 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 2e   current thread.
10580 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74  .**.** This rout
10590 69 6e 65 20 69 73 20 6e 6f 74 20 74 65 63 68 6e  ine is not techn
105a0 69 63 61 6c 6c 79 20 6e 65 63 65 73 73 61 72 79  ically necessary
105b0 2e 20 20 41 6c 6c 20 74 68 72 65 61 64 2d 6c 6f  .  All thread-lo
105c0 63 61 6c 20 73 74 6f 72 61 67 65 0a 2a 2a 20 77  cal storage.** w
105d0 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69 63  ill be automatic
105e0 61 6c 6c 79 20 64 65 61 6c 6c 6f 63 61 74 65 64  ally deallocated
105f0 20 6f 6e 63 65 20 6d 65 6d 6f 72 79 2d 6d 61 6e   once memory-man
10600 61 67 65 6d 65 6e 74 20 61 6e 64 0a 2a 2a 20 73  agement and.** s
10610 68 61 72 65 64 2d 63 61 63 68 65 20 61 72 65 20  hared-cache are 
10620 64 69 73 61 62 6c 65 64 20 61 6e 64 20 74 68 65  disabled and the
10630 20 73 6f 66 74 20 68 65 61 70 20 6c 69 6d 69 74   soft heap limit
10640 20 68 61 73 20 62 65 65 6e 20 73 65 74 0a 2a 2a   has been set.**
10650 20 74 6f 20 7a 65 72 6f 2e 20 20 54 68 69 73 20   to zero.  This 
10660 72 6f 75 74 69 6e 65 20 69 73 20 70 72 6f 76 69  routine is provi
10670 64 65 64 20 61 73 20 61 20 63 6f 6e 76 65 6e 69  ded as a conveni
10680 65 6e 63 65 20 66 6f 72 20 75 73 65 72 73 20 77  ence for users w
10690 68 6f 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 6d 61  ho.** want to ma
106a0 6b 65 20 61 62 73 6f 6c 75 74 65 6c 79 20 73 75  ke absolutely su
106b0 72 65 20 74 68 65 79 20 68 61 76 65 20 6e 6f 74  re they have not
106c0 20 66 6f 72 67 6f 74 74 65 6e 20 73 6f 6d 65 74   forgotten somet
106d0 68 69 6e 67 0a 2a 2a 20 70 72 69 6f 72 20 74 6f  hing.** prior to
106e0 20 6b 69 6c 6c 69 6e 67 20 6f 66 66 20 61 20 74   killing off a t
106f0 68 72 65 61 64 2e 0a 2a 2f 0a 76 6f 69 64 20 73  hread..*/.void s
10700 71 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63 6c  qlite3_thread_cl
10710 65 61 6e 75 70 28 76 6f 69 64 29 3b 0a 0a 2f 2a  eanup(void);../*
10720 0a 2a 2a 20 52 65 74 75 72 6e 20 6d 65 74 61 20  .** Return meta 
10730 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
10740 74 20 61 20 73 70 65 63 69 66 69 63 20 63 6f 6c  t a specific col
10750 75 6d 6e 20 6f 66 20 61 20 73 70 65 63 69 66 69  umn of a specifi
10760 63 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 74 61  c database.** ta
10770 62 6c 65 20 61 63 63 65 73 73 69 62 6c 65 20 75  ble accessible u
10780 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74  sing the connect
10790 69 6f 6e 20 68 61 6e 64 6c 65 20 70 61 73 73 65  ion handle passe
107a0 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20 66  d as the first f
107b0 75 6e 63 74 69 6f 6e 20 0a 2a 2a 20 61 72 67 75  unction .** argu
107c0 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ment..**.** The 
107d0 63 6f 6c 75 6d 6e 20 69 73 20 69 64 65 6e 74 69  column is identi
107e0 66 69 65 64 20 62 79 20 74 68 65 20 73 65 63 6f  fied by the seco
107f0 6e 64 2c 20 74 68 69 72 64 20 61 6e 64 20 66 6f  nd, third and fo
10800 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 73 20  urth parameters 
10810 74 6f 20 0a 2a 2a 20 74 68 69 73 20 66 75 6e 63  to .** this func
10820 74 69 6f 6e 2e 20 54 68 65 20 73 65 63 6f 6e 64  tion. The second
10830 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 65 69   parameter is ei
10840 74 68 65 72 20 74 68 65 20 6e 61 6d 65 20 6f 66  ther the name of
10850 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a   the database.**
10860 20 28 69 2e 65 2e 20 22 6d 61 69 6e 22 2c 20 22   (i.e. "main", "
10870 74 65 6d 70 22 20 6f 72 20 61 6e 20 61 74 74 61  temp" or an atta
10880 63 68 65 64 20 64 61 74 61 62 61 73 65 29 20 63  ched database) c
10890 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 73 70  ontaining the sp
108a0 65 63 69 66 69 65 64 0a 2a 2a 20 74 61 62 6c 65  ecified.** table
108b0 20 6f 72 20 4e 55 4c 4c 2e 20 49 66 20 69 74 20   or NULL. If it 
108c0 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 61 6c  is NULL, then al
108d0 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  l attached datab
108e0 61 73 65 73 20 61 72 65 20 73 65 61 72 63 68 65  ases are searche
108f0 64 0a 2a 2a 20 66 6f 72 20 74 68 65 20 74 61 62  d.** for the tab
10900 6c 65 20 75 73 69 6e 67 20 74 68 65 20 73 61 6d  le using the sam
10910 65 20 61 6c 67 6f 72 69 74 68 6d 20 61 73 20 74  e algorithm as t
10920 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
10930 6e 65 20 75 73 65 73 20 74 6f 20 0a 2a 2a 20 72  ne uses to .** r
10940 65 73 6f 6c 76 65 20 75 6e 71 75 61 6c 69 66 69  esolve unqualifi
10950 65 64 20 74 61 62 6c 65 20 72 65 66 65 72 65 6e  ed table referen
10960 63 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74  ces..**.** The t
10970 68 69 72 64 20 61 6e 64 20 66 6f 75 72 74 68 20  hird and fourth 
10980 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68  parameters to th
10990 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 72 65 20  is function are 
109a0 74 68 65 20 74 61 62 6c 65 20 61 6e 64 20 63 6f  the table and co
109b0 6c 75 6d 6e 20 0a 2a 2a 20 6e 61 6d 65 20 6f 66  lumn .** name of
109c0 20 74 68 65 20 64 65 73 69 72 65 64 20 63 6f 6c   the desired col
109d0 75 6d 6e 2c 20 72 65 73 70 65 63 74 69 76 65 6c  umn, respectivel
109e0 79 2e 20 4e 65 69 74 68 65 72 20 6f 66 20 74 68  y. Neither of th
109f0 65 73 65 20 70 61 72 61 6d 65 74 65 72 73 20 0a  ese parameters .
10a00 2a 2a 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e 0a  ** may be NULL..
10a10 2a 2a 0a 2a 2a 20 4d 65 74 61 20 69 6e 66 6f 72  **.** Meta infor
10a20 6d 61 74 69 6f 6e 20 69 73 20 72 65 74 75 72 6e  mation is return
10a30 65 64 20 62 79 20 77 72 69 74 69 6e 67 20 74 6f  ed by writing to
10a40 20 74 68 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   the memory loca
10a50 74 69 6f 6e 73 20 70 61 73 73 65 64 20 61 73 0a  tions passed as.
10a60 2a 2a 20 74 68 65 20 35 74 68 20 61 6e 64 20 73  ** the 5th and s
10a70 75 62 73 65 71 75 65 6e 74 20 70 61 72 61 6d 65  ubsequent parame
10a80 74 65 72 73 20 74 6f 20 74 68 69 73 20 66 75 6e  ters to this fun
10a90 63 74 69 6f 6e 2e 20 41 6e 79 20 6f 66 20 74 68  ction. Any of th
10aa0 65 73 65 20 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  ese .** argument
10ab0 73 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20 69  s may be NULL, i
10ac0 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
10ad0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65   corresponding e
10ae0 6c 65 6d 65 6e 74 20 6f 66 20 6d 65 74 61 20 0a  lement of meta .
10af0 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69  ** information i
10b00 73 20 6f 6d 6d 69 74 74 65 64 2e 0a 2a 2a 0a 2a  s ommitted..**.*
10b10 2a 20 50 61 72 61 6d 65 74 65 72 20 20 20 20 20  * Parameter     
10b20 4f 75 74 70 75 74 20 54 79 70 65 20 20 20 20 20  Output Type     
10b30 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 2a 2a 20   Description.** 
10b40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10b50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10b60 2d 2d 2d 0a 2a 2a 0a 2a 2a 20 20 20 35 74 68 20  ---.**.**   5th 
10b70 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68          const ch
10b80 61 72 2a 20 20 20 20 20 20 44 61 74 61 20 74 79  ar*      Data ty
10b90 70 65 0a 2a 2a 20 20 20 36 74 68 20 20 20 20 20  pe.**   6th     
10ba0 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 2a 20      const char* 
10bb0 20 20 20 20 20 4e 61 6d 65 20 6f 66 20 74 68 65       Name of the
10bc0 20 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69   default collati
10bd0 6f 6e 20 73 65 71 75 65 6e 63 65 20 0a 2a 2a 20  on sequence .** 
10be0 20 20 37 74 68 20 20 20 20 20 20 20 20 20 69 6e    7th         in
10bf0 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54  t              T
10c00 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75 6d  rue if the colum
10c10 6e 20 68 61 73 20 61 20 4e 4f 54 20 4e 55 4c 4c  n has a NOT NULL
10c20 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a 20 20   constraint.**  
10c30 20 38 74 68 20 20 20 20 20 20 20 20 20 69 6e 74   8th         int
10c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
10c50 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e  ue if the column
10c60 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 20   is part of the 
10c70 50 52 49 4d 41 52 59 20 4b 45 59 0a 2a 2a 20 20  PRIMARY KEY.**  
10c80 20 39 74 68 20 20 20 20 20 20 20 20 20 69 6e 74   9th         int
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
10ca0 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e  ue if the column
10cb0 20 69 73 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e   is AUTOINCREMEN
10cc0 54 0a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6d  T.**.**.** The m
10cd0 65 6d 6f 72 79 20 70 6f 69 6e 74 65 64 20 74 6f  emory pointed to
10ce0 20 62 79 20 74 68 65 20 63 68 61 72 61 63 74 65   by the characte
10cf0 72 20 70 6f 69 6e 74 65 72 73 20 72 65 74 75 72  r pointers retur
10d00 6e 65 64 20 66 6f 72 20 74 68 65 20 0a 2a 2a 20  ned for the .** 
10d10 64 65 63 6c 61 72 61 74 69 6f 6e 20 74 79 70 65  declaration type
10d20 20 61 6e 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73   and collation s
10d30 65 71 75 65 6e 63 65 20 69 73 20 76 61 6c 69 64  equence is valid
10d40 20 6f 6e 6c 79 20 75 6e 74 69 6c 20 74 68 65 20   only until the 
10d50 6e 65 78 74 20 0a 2a 2a 20 63 61 6c 6c 20 74 6f  next .** call to
10d60 20 61 6e 79 20 73 71 6c 69 74 65 20 41 50 49 20   any sqlite API 
10d70 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  function..**.** 
10d80 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
10d90 20 74 61 62 6c 65 20 69 73 20 61 63 74 75 61 6c   table is actual
10da0 6c 79 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20  ly a view, then 
10db0 61 6e 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  an error is retu
10dc0 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74  rned..**.** If t
10dd0 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c  he specified col
10de0 75 6d 6e 20 69 73 20 22 72 6f 77 69 64 22 2c 20  umn is "rowid", 
10df0 22 6f 69 64 22 20 6f 72 20 22 5f 72 6f 77 69 64  "oid" or "_rowid
10e00 5f 22 20 61 6e 64 20 61 6e 20 0a 2a 2a 20 49 4e  _" and an .** IN
10e10 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
10e20 59 20 63 6f 6c 75 6d 6e 20 68 61 73 20 62 65 65  Y column has bee
10e30 6e 20 65 78 70 6c 69 63 69 74 6c 79 20 64 65 63  n explicitly dec
10e40 6c 61 72 65 64 2c 20 74 68 65 6e 20 74 68 65 20  lared, then the 
10e50 6f 75 74 70 75 74 20 0a 2a 2a 20 70 61 72 61 6d  output .** param
10e60 65 74 65 72 73 20 61 72 65 20 73 65 74 20 66 6f  eters are set fo
10e70 72 20 74 68 65 20 65 78 70 6c 69 63 69 74 6c 79  r the explicitly
10e80 20 64 65 63 6c 61 72 65 64 20 63 6f 6c 75 6d 6e   declared column
10e90 2e 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f  . If there is no
10ea0 0a 2a 2a 20 65 78 70 6c 69 63 69 74 6c 79 20 64  .** explicitly d
10eb0 65 63 6c 61 72 65 64 20 49 50 4b 20 63 6f 6c 75  eclared IPK colu
10ec0 6d 6e 2c 20 74 68 65 6e 20 74 68 65 20 6f 75 74  mn, then the out
10ed0 70 75 74 20 70 61 72 61 6d 65 74 65 72 73 20 61  put parameters a
10ee0 72 65 20 73 65 74 20 61 73 20 0a 2a 2a 20 66 6f  re set as .** fo
10ef0 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 20  llows:.**.**    
10f00 20 64 61 74 61 20 74 79 70 65 3a 20 22 49 4e 54   data type: "INT
10f10 45 47 45 52 22 0a 2a 2a 20 20 20 20 20 63 6f 6c  EGER".**     col
10f20 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 3a  lation sequence:
10f30 20 22 42 49 4e 41 52 59 22 0a 2a 2a 20 20 20 20   "BINARY".**    
10f40 20 6e 6f 74 20 6e 75 6c 6c 3a 20 30 0a 2a 2a 20   not null: 0.** 
10f50 20 20 20 20 70 72 69 6d 61 72 79 20 6b 65 79 3a      primary key:
10f60 20 31 0a 2a 2a 20 20 20 20 20 61 75 74 6f 20 69   1.**     auto i
10f70 6e 63 72 65 6d 65 6e 74 3a 20 30 0a 2a 2a 0a 2a  ncrement: 0.**.*
10f80 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
10f90 6d 61 79 20 6c 6f 61 64 20 6f 6e 65 20 6f 72 20  may load one or 
10fa0 6d 6f 72 65 20 73 63 68 65 6d 61 73 20 66 72 6f  more schemas fro
10fb0 6d 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  m database files
10fc0 2e 20 49 66 20 61 6e 0a 2a 2a 20 65 72 72 6f 72  . If an.** error
10fd0 20 6f 63 63 75 72 73 20 64 75 72 69 6e 67 20 74   occurs during t
10fe0 68 69 73 20 70 72 6f 63 65 73 73 2c 20 6f 72 20  his process, or 
10ff0 69 66 20 74 68 65 20 72 65 71 75 65 73 74 65 64  if the requested
11000 20 74 61 62 6c 65 20 6f 72 20 63 6f 6c 75 6d 6e   table or column
11010 0a 2a 2a 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f  .** cannot be fo
11020 75 6e 64 2c 20 61 6e 20 53 51 4c 49 54 45 20 65  und, an SQLITE e
11030 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72 65 74  rror code is ret
11040 75 72 6e 65 64 20 61 6e 64 20 61 6e 20 65 72 72  urned and an err
11050 6f 72 20 6d 65 73 73 61 67 65 0a 2a 2a 20 6c 65  or message.** le
11060 66 74 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  ft in the databa
11070 73 65 20 68 61 6e 64 6c 65 20 28 74 6f 20 62 65  se handle (to be
11080 20 72 65 74 72 69 65 76 65 64 20 75 73 69 6e 67   retrieved using
11090 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
110a0 29 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 41  ))..**.** This A
110b0 50 49 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  PI is only avail
110c0 61 62 6c 65 20 69 66 20 74 68 65 20 6c 69 62 72  able if the libr
110d0 61 72 79 20 77 61 73 20 63 6f 6d 70 69 6c 65 64  ary was compiled
110e0 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 53 51 4c   with the.** SQL
110f0 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d  ITE_ENABLE_COLUM
11100 4e 5f 4d 45 54 41 44 41 54 41 20 70 72 65 70 72  N_METADATA prepr
11110 6f 63 65 73 73 6f 72 20 73 79 6d 62 6f 6c 20 64  ocessor symbol d
11120 65 66 69 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73  efined..*/.int s
11130 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
11140 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 0a 20 20  umn_metadata(.  
11150 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
11160 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 43              /* C
11170 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65  onnection handle
11180 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
11190 20 2a 7a 44 62 4e 61 6d 65 2c 20 20 20 20 20 20   *zDbName,      
111a0 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 6e 61    /* Database na
111b0 6d 65 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 20 20  me or NULL */.  
111c0 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 54 61 62  const char *zTab
111d0 6c 65 4e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 54  leName,     /* T
111e0 61 62 6c 65 20 6e 61 6d 65 20 2a 2f 0a 20 20 63  able name */.  c
111f0 6f 6e 73 74 20 63 68 61 72 20 2a 7a 43 6f 6c 75  onst char *zColu
11200 6d 6e 4e 61 6d 65 2c 20 20 20 20 2f 2a 20 43 6f  mnName,    /* Co
11210 6c 75 6d 6e 20 6e 61 6d 65 20 2a 2f 0a 20 20 63  lumn name */.  c
11220 68 61 72 20 63 6f 6e 73 74 20 2a 2a 70 7a 44 61  har const **pzDa
11230 74 61 54 79 70 65 2c 20 20 20 20 2f 2a 20 4f 55  taType,    /* OU
11240 54 50 55 54 3a 20 44 65 63 6c 61 72 65 64 20 64  TPUT: Declared d
11250 61 74 61 20 74 79 70 65 20 2a 2f 0a 20 20 63 68  ata type */.  ch
11260 61 72 20 63 6f 6e 73 74 20 2a 2a 70 7a 43 6f 6c  ar const **pzCol
11270 6c 53 65 71 2c 20 20 20 20 20 2f 2a 20 4f 55 54  lSeq,     /* OUT
11280 50 55 54 3a 20 43 6f 6c 6c 61 74 69 6f 6e 20 73  PUT: Collation s
11290 65 71 75 65 6e 63 65 20 6e 61 6d 65 20 2a 2f 0a  equence name */.
112a0 20 20 69 6e 74 20 2a 70 4e 6f 74 4e 75 6c 6c 2c    int *pNotNull,
112b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
112c0 20 4f 55 54 50 55 54 3a 20 54 72 75 65 20 69 66   OUTPUT: True if
112d0 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
112e0 61 69 6e 74 20 65 78 69 73 74 73 20 2a 2f 0a 20  aint exists */. 
112f0 20 69 6e 74 20 2a 70 50 72 69 6d 61 72 79 4b 65   int *pPrimaryKe
11300 79 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  y,           /* 
11310 4f 55 54 50 55 54 3a 20 54 72 75 65 20 69 66 20  OUTPUT: True if 
11320 63 6f 6c 75 6d 6e 20 70 61 72 74 20 6f 66 20 50  column part of P
11330 4b 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 41 75 74  K */.  int *pAut
11340 6f 69 6e 63 20 20 20 20 20 20 20 20 20 20 20 20  oinc            
11350 20 20 20 2f 2a 20 4f 55 54 50 55 54 3a 20 54 72     /* OUTPUT: Tr
11360 75 65 20 69 66 20 63 6f 6c 75 6d 73 20 69 73 20  ue if colums is 
11370 61 75 74 6f 2d 69 6e 63 72 65 6d 65 6e 74 20 2a  auto-increment *
11380 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 20  /.);../*.****** 
11390 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20 73  EXPERIMENTAL - s
113a0 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
113b0 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65 20   without notice 
113c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a  **************.*
113d0 2a 0a 2a 2a 20 41 74 74 65 6d 70 74 20 74 6f 20  *.** Attempt to 
113e0 6c 6f 61 64 20 61 6e 20 53 51 4c 69 74 65 20 65  load an SQLite e
113f0 78 74 65 6e 73 69 6f 6e 20 6c 69 62 72 61 72 79  xtension library
11400 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68   contained in th
11410 65 20 66 69 6c 65 0a 2a 2a 20 7a 46 69 6c 65 2e  e file.** zFile.
11420 20 20 54 68 65 20 65 6e 74 72 79 20 70 6f 69 6e    The entry poin
11430 74 20 69 73 20 7a 50 72 6f 63 2e 20 20 7a 50 72  t is zProc.  zPr
11440 6f 63 20 6d 61 79 20 62 65 20 30 20 69 6e 20 77  oc may be 0 in w
11450 68 69 63 68 20 63 61 73 65 20 74 68 65 0a 2a 2a  hich case the.**
11460 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 74   name of the ent
11470 72 79 20 70 6f 69 6e 74 20 64 65 66 61 75 6c 74  ry point default
11480 73 20 74 6f 20 22 73 71 6c 69 74 65 33 5f 65 78  s to "sqlite3_ex
11490 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 22 2e 0a 2a  tension_init"..*
114a0 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 53 51 4c 49  *.** Return SQLI
114b0 54 45 5f 4f 4b 20 6f 6e 20 73 75 63 63 65 73 73  TE_OK on success
114c0 20 61 6e 64 20 53 51 4c 49 54 45 5f 45 52 52 4f   and SQLITE_ERRO
114d0 52 20 69 66 20 73 6f 6d 65 74 68 69 6e 67 20 67  R if something g
114e0 6f 65 73 20 77 72 6f 6e 67 2e 0a 2a 2a 0a 2a 2a  oes wrong..**.**
114f0 20 49 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63   If an error occ
11500 75 72 73 20 61 6e 64 20 70 7a 45 72 72 4d 73 67  urs and pzErrMsg
11510 20 69 73 20 6e 6f 74 20 30 2c 20 74 68 65 6e 20   is not 0, then 
11520 66 69 6c 6c 20 2a 70 7a 45 72 72 4d 73 67 20 77  fill *pzErrMsg w
11530 69 74 68 20 0a 2a 2a 20 65 72 72 6f 72 20 6d 65  ith .** error me
11540 73 73 61 67 65 20 74 65 78 74 2e 20 20 54 68 65  ssage text.  The
11550 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74 69 6f   calling functio
11560 6e 20 73 68 6f 75 6c 64 20 66 72 65 65 20 74 68  n should free th
11570 69 73 20 6d 65 6d 6f 72 79 0a 2a 2a 20 62 79 20  is memory.** by 
11580 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  calling sqlite3_
11590 66 72 65 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 45 78  free()..**.** Ex
115a0 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
115b0 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64 20  must be enabled 
115c0 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 65 6e  using sqlite3_en
115d0 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  able_load_extens
115e0 69 6f 6e 28 29 0a 2a 2a 20 70 72 69 6f 72 20 74  ion().** prior t
115f0 6f 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20 41  o calling this A
11600 50 49 20 6f 72 20 61 6e 20 65 72 72 6f 72 20 77  PI or an error w
11610 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e  ill be returned.
11620 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 20 45 58 50 45 52  .**.****** EXPER
11630 49 4d 45 4e 54 41 4c 20 2d 20 73 75 62 6a 65 63  IMENTAL - subjec
11640 74 20 74 6f 20 63 68 61 6e 67 65 20 77 69 74 68  t to change with
11650 6f 75 74 20 6e 6f 74 69 63 65 20 2a 2a 2a 2a 2a  out notice *****
11660 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 69 6e 74  *********.*/.int
11670 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78   sqlite3_load_ex
11680 74 65 6e 73 69 6f 6e 28 0a 20 20 73 71 6c 69 74  tension(.  sqlit
11690 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20  e3 *db,         
116a0 20 2f 2a 20 4c 6f 61 64 20 74 68 65 20 65 78 74   /* Load the ext
116b0 65 6e 73 69 6f 6e 20 69 6e 74 6f 20 74 68 69 73  ension into this
116c0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
116d0 74 69 6f 6e 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  tion */.  const 
116e0 63 68 61 72 20 2a 7a 46 69 6c 65 2c 20 20 20 20  char *zFile,    
116f0 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 73  /* Name of the s
11700 68 61 72 65 64 20 6c 69 62 72 61 72 79 20 63 6f  hared library co
11710 6e 74 61 69 6e 69 6e 67 20 65 78 74 65 6e 73 69  ntaining extensi
11720 6f 6e 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  on */.  const ch
11730 61 72 20 2a 7a 50 72 6f 63 2c 20 20 20 20 2f 2a  ar *zProc,    /*
11740 20 45 6e 74 72 79 20 70 6f 69 6e 74 2e 20 20 44   Entry point.  D
11750 65 72 69 76 65 64 20 66 72 6f 6d 20 7a 46 69 6c  erived from zFil
11760 65 20 69 66 20 30 20 2a 2f 0a 20 20 63 68 61 72  e if 0 */.  char
11770 20 2a 2a 70 7a 45 72 72 4d 73 67 20 20 20 20 20   **pzErrMsg     
11780 20 20 2f 2a 20 50 75 74 20 65 72 72 6f 72 20 6d    /* Put error m
11790 65 73 73 61 67 65 20 68 65 72 65 20 69 66 20 6e  essage here if n
117a0 6f 74 20 30 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a  ot 0 */.);../*.*
117b0 2a 20 53 6f 20 61 73 20 6e 6f 74 20 74 6f 20 6f  * So as not to o
117c0 70 65 6e 20 73 65 63 75 72 69 74 79 20 68 6f 6c  pen security hol
117d0 65 73 20 69 6e 20 6f 6c 64 65 72 20 61 70 70 6c  es in older appl
117e0 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 61 72  ications that ar
117f0 65 0a 2a 2a 20 75 6e 70 72 65 70 61 72 65 64 20  e.** unprepared 
11800 74 6f 20 64 65 61 6c 20 77 69 74 68 20 65 78 74  to deal with ext
11810 65 6e 73 69 6f 6e 20 6c 6f 61 64 2c 20 61 6e 64  ension load, and
11820 20 61 73 20 61 20 6d 65 61 6e 73 20 6f 66 20 64   as a means of d
11830 69 73 61 62 6c 69 6e 67 0a 2a 2a 20 65 78 74 65  isabling.** exte
11840 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 77 68  nsion loading wh
11850 69 6c 65 20 65 78 65 63 75 74 69 6e 67 20 75 73  ile executing us
11860 65 72 2d 65 6e 74 65 72 65 64 20 53 51 4c 2c 20  er-entered SQL, 
11870 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 2a 2a  the following.**
11880 20 41 50 49 20 69 73 20 70 72 6f 76 69 64 65 64   API is provided
11890 20 74 6f 20 74 75 72 6e 20 74 68 65 20 65 78 74   to turn the ext
118a0 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 6d  ension loading m
118b0 65 63 68 61 6e 69 73 6d 20 6f 6e 20 61 6e 64 0a  echanism on and.
118c0 2a 2a 20 6f 66 66 2e 20 20 49 74 20 69 73 20 6f  ** off.  It is o
118d0 66 66 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  ff by default.  
118e0 53 65 65 20 74 69 63 6b 65 74 20 23 31 38 36 33  See ticket #1863
118f0 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 20 74 68 69  ..**.** Call thi
11900 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68 20 6f  s routine with o
11910 6e 6f 66 66 3d 3d 31 20 74 6f 20 74 75 72 6e 20  noff==1 to turn 
11920 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e  extension loadin
11930 67 20 6f 6e 0a 2a 2a 20 61 6e 64 20 63 61 6c 6c  g on.** and call
11940 20 69 74 20 77 69 74 68 20 6f 6e 6f 66 66 3d 3d   it with onoff==
11950 30 20 74 6f 20 74 75 72 6e 20 69 74 20 62 61 63  0 to turn it bac
11960 6b 20 6f 66 66 20 61 67 61 69 6e 2e 0a 2a 2f 0a  k off again..*/.
11970 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 6e 61 62  int sqlite3_enab
11980 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  le_load_extensio
11990 6e 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 69  n(sqlite3 *db, i
119a0 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a 2a  nt onoff);../*.*
119b0 2a 2a 2a 2a 2a 20 45 58 50 45 52 49 4d 45 4e 54  ***** EXPERIMENT
119c0 41 4c 20 2d 20 73 75 62 6a 65 63 74 20 74 6f 20  AL - subject to 
119d0 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74 20 6e  change without n
119e0 6f 74 69 63 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  otice **********
119f0 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73  ****.**.** Regis
11a00 74 65 72 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e  ter an extension
11a10 20 65 6e 74 72 79 20 70 6f 69 6e 74 20 74 68 61   entry point tha
11a20 74 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  t is automatical
11a30 6c 79 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 77 68  ly invoked.** wh
11a40 65 6e 65 76 65 72 20 61 20 6e 65 77 20 64 61 74  enever a new dat
11a50 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
11a60 20 69 73 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a   is opened..**.*
11a70 2a 20 54 68 69 73 20 41 50 49 20 63 61 6e 20 62  * This API can b
11a80 65 20 69 6e 76 6f 6b 65 64 20 61 74 20 70 72 6f  e invoked at pro
11a90 67 72 61 6d 20 73 74 61 72 74 75 70 20 69 6e 20  gram startup in 
11aa0 6f 72 64 65 72 20 74 6f 20 72 65 67 69 73 74 65  order to registe
11ab0 72 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  r.** one or more
11ac0 20 73 74 61 74 69 63 61 6c 6c 79 20 6c 69 6e 6b   statically link
11ad0 65 64 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68  ed extensions th
11ae0 61 74 20 77 69 6c 6c 20 62 65 20 61 76 61 69 6c  at will be avail
11af0 61 62 6c 65 0a 2a 2a 20 74 6f 20 61 6c 6c 20 6e  able.** to all n
11b00 65 77 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ew database conn
11b10 65 63 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 44  ections..**.** D
11b20 75 70 6c 69 63 61 74 65 20 65 78 74 65 6e 73 69  uplicate extensi
11b30 6f 6e 73 20 61 72 65 20 64 65 74 65 63 74 65 64  ons are detected
11b40 20 73 6f 20 63 61 6c 6c 69 6e 67 20 74 68 69 73   so calling this
11b50 20 72 6f 75 74 69 6e 65 20 6d 75 6c 74 69 70 6c   routine multipl
11b60 65 0a 2a 2a 20 74 69 6d 65 73 20 77 69 74 68 20  e.** times with 
11b70 74 68 65 20 73 61 6d 65 20 65 78 74 65 6e 73 69  the same extensi
11b80 6f 6e 20 69 73 20 68 61 72 6d 6c 65 73 73 2e 0a  on is harmless..
11b90 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69  **.** This routi
11ba0 6e 65 20 73 74 6f 72 65 73 20 61 20 70 6f 69 6e  ne stores a poin
11bb0 74 65 72 20 74 6f 20 74 68 65 20 65 78 74 65 6e  ter to the exten
11bc0 73 69 6f 6e 20 69 6e 20 61 6e 20 61 72 72 61 79  sion in an array
11bd0 0a 2a 2a 20 74 68 61 74 20 69 73 20 6f 62 74 61  .** that is obta
11be0 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63  ined from malloc
11bf0 28 29 2e 20 20 49 66 20 79 6f 75 20 72 75 6e 20  ().  If you run 
11c00 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 0a 2a 2a  a memory leak.**
11c10 20 63 68 65 63 6b 65 72 20 6f 6e 20 79 6f 75 72   checker on your
11c20 20 70 72 6f 67 72 61 6d 20 61 6e 64 20 69 74 20   program and it 
11c30 72 65 70 6f 72 74 73 20 61 20 6c 65 61 6b 20 62  reports a leak b
11c40 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 0a 2a  ecause of this.*
11c50 2a 20 61 72 72 61 79 2c 20 74 68 65 6e 20 69 6e  * array, then in
11c60 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 61 75 74  voke sqlite3_aut
11c70 6f 6d 61 74 69 63 5f 65 78 74 65 6e 73 69 6f 6e  omatic_extension
11c80 5f 72 65 73 65 74 28 29 20 70 72 69 6f 72 0a 2a  _reset() prior.*
11c90 2a 20 74 6f 20 73 68 75 74 64 6f 77 6e 20 74 6f  * to shutdown to
11ca0 20 66 72 65 65 20 74 68 65 20 6d 65 6d 6f 72 79   free the memory
11cb0 2e 0a 2a 2a 0a 2a 2a 20 41 75 74 6f 6d 61 74 69  ..**.** Automati
11cc0 63 20 65 78 74 65 6e 73 69 6f 6e 73 20 61 70 70  c extensions app
11cd0 6c 79 20 61 63 72 6f 73 73 20 61 6c 6c 20 74 68  ly across all th
11ce0 72 65 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71  reads..*/.int sq
11cf0 6c 69 74 65 33 5f 61 75 74 6f 5f 65 78 74 65 6e  lite3_auto_exten
11d00 73 69 6f 6e 28 76 6f 69 64 20 2a 78 45 6e 74 72  sion(void *xEntr
11d10 79 50 6f 69 6e 74 29 3b 0a 0a 0a 2f 2a 0a 2a 2a  yPoint);.../*.**
11d20 2a 2a 2a 2a 20 45 58 50 45 52 49 4d 45 4e 54 41  **** EXPERIMENTA
11d30 4c 20 2d 20 73 75 62 6a 65 63 74 20 74 6f 20 63  L - subject to c
11d40 68 61 6e 67 65 20 77 69 74 68 6f 75 74 20 6e 6f  hange without no
11d50 74 69 63 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  tice ***********
11d60 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 44 69 73 61 62 6c  ***.**.** Disabl
11d70 65 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 6c 79  e all previously
11d80 20 72 65 67 69 73 74 65 72 65 64 20 61 75 74 6f   registered auto
11d90 6d 61 74 69 63 20 65 78 74 65 6e 73 69 6f 6e 73  matic extensions
11da0 2e 20 20 54 68 69 73 0a 2a 2a 20 72 6f 75 74 69  .  This.** routi
11db0 6e 65 20 75 6e 64 6f 65 73 20 74 68 65 20 65 66  ne undoes the ef
11dc0 66 65 63 74 20 6f 66 20 61 6c 6c 20 70 72 69 6f  fect of all prio
11dd0 72 20 73 71 6c 69 74 65 33 5f 61 75 74 6f 6d 61  r sqlite3_automa
11de0 74 69 63 5f 65 78 74 65 6e 73 69 6f 6e 28 29 0a  tic_extension().
11df0 2a 2a 20 63 61 6c 6c 73 2e 0a 2a 2a 0a 2a 2a 20  ** calls..**.** 
11e00 54 68 69 73 20 63 61 6c 6c 20 64 69 73 61 62 6c  This call disabl
11e10 65 64 20 61 75 74 6f 6d 61 74 69 63 20 65 78 74  ed automatic ext
11e20 65 6e 73 69 6f 6e 73 20 69 6e 20 61 6c 6c 20 74  ensions in all t
11e30 68 72 65 61 64 73 2e 0a 2a 2f 0a 76 6f 69 64 20  hreads..*/.void 
11e40 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 61 75  sqlite3_reset_au
11e50 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 28 76 6f 69  to_extension(voi
11e60 64 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 20  d);.../*.****** 
11e70 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20 73  EXPERIMENTAL - s
11e80 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
11e90 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65 20   without notice 
11ea0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a  **************.*
11eb0 2a 0a 2a 2a 20 54 68 65 20 69 6e 74 65 72 66 61  *.** The interfa
11ec0 63 65 20 74 6f 20 74 68 65 20 76 69 72 74 75 61  ce to the virtua
11ed0 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e 69 73  l-table mechanis
11ee0 6d 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 63  m is currently c
11ef0 6f 6e 73 69 64 65 72 65 64 0a 2a 2a 20 74 6f 20  onsidered.** to 
11f00 62 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e  be experimental.
11f10 20 20 54 68 65 20 69 6e 74 65 72 66 61 63 65 20    The interface 
11f20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20  might change in 
11f30 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 61 79  incompatible way
11f40 73 2e 0a 2a 2a 20 49 66 20 74 68 69 73 20 69 73  s..** If this is
11f50 20 61 20 70 72 6f 62 6c 65 6d 20 66 6f 72 20 79   a problem for y
11f60 6f 75 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 74  ou, do not use t
11f70 68 65 20 69 6e 74 65 72 66 61 63 65 20 61 74 20  he interface at 
11f80 74 68 69 73 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a  this time..**.**
11f90 20 57 68 65 6e 20 74 68 65 20 76 69 72 74 75 61   When the virtua
11fa0 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e 69 73  l-table mechanis
11fb0 6d 20 73 74 61 62 6c 69 7a 65 73 2c 20 77 65 20  m stablizes, we 
11fc0 77 69 6c 6c 20 64 65 63 6c 61 72 65 20 74 68 65  will declare the
11fd0 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 66 69  .** interface fi
11fe0 78 65 64 2c 20 73 75 70 70 6f 72 74 20 69 74 20  xed, support it 
11ff0 69 6e 64 65 66 69 6e 69 74 65 6c 79 2c 20 61 6e  indefinitely, an
12000 64 20 72 65 6d 6f 76 65 20 74 68 69 73 20 63 6f  d remove this co
12010 6d 6d 65 6e 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a  mment..*/../*.**
12020 20 53 74 72 75 63 74 75 72 65 73 20 75 73 65 64   Structures used
12030 20 62 79 20 74 68 65 20 76 69 72 74 75 61 6c 20   by the virtual 
12040 74 61 62 6c 65 20 69 6e 74 65 72 66 61 63 65 0a  table interface.
12050 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
12060 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73  t sqlite3_vtab s
12070 71 6c 69 74 65 33 5f 76 74 61 62 3b 0a 74 79 70  qlite3_vtab;.typ
12080 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69  edef struct sqli
12090 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
120a0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
120b0 6f 3b 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  o;.typedef struc
120c0 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  t sqlite3_vtab_c
120d0 75 72 73 6f 72 20 73 71 6c 69 74 65 33 5f 76 74  ursor sqlite3_vt
120e0 61 62 5f 63 75 72 73 6f 72 3b 0a 74 79 70 65 64  ab_cursor;.typed
120f0 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
12100 33 5f 6d 6f 64 75 6c 65 20 73 71 6c 69 74 65 33  3_module sqlite3
12110 5f 6d 6f 64 75 6c 65 3b 0a 0a 2f 2a 0a 2a 2a 20  _module;../*.** 
12120 41 20 6d 6f 64 75 6c 65 20 69 73 20 61 20 63 6c  A module is a cl
12130 61 73 73 20 6f 66 20 76 69 72 74 75 61 6c 20 74  ass of virtual t
12140 61 62 6c 65 73 2e 20 20 45 61 63 68 20 6d 6f 64  ables.  Each mod
12150 75 6c 65 20 69 73 20 64 65 66 69 6e 65 64 0a 2a  ule is defined.*
12160 2a 20 62 79 20 61 6e 20 69 6e 73 74 61 6e 63 65  * by an instance
12170 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
12180 67 20 73 74 72 75 63 74 75 72 65 2e 20 20 54 68  g structure.  Th
12190 69 73 20 73 74 72 75 63 74 75 72 65 20 63 6f 6e  is structure con
121a0 73 69 73 74 73 0a 2a 2a 20 6d 6f 73 74 6c 79 20  sists.** mostly 
121b0 6f 66 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 74  of methods for t
121c0 68 65 20 6d 6f 64 75 6c 65 2e 0a 2a 2f 0a 73 74  he module..*/.st
121d0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64  ruct sqlite3_mod
121e0 75 6c 65 20 7b 0a 20 20 69 6e 74 20 69 56 65 72  ule {.  int iVer
121f0 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28 2a 78 43  sion;.  int (*xC
12200 72 65 61 74 65 29 28 73 71 6c 69 74 65 33 2a 2c  reate)(sqlite3*,
12210 20 76 6f 69 64 20 2a 70 41 75 78 2c 0a 20 20 20   void *pAux,.   
12220 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
12230 61 72 67 63 2c 20 63 6f 6e 73 74 20 63 68 61 72  argc, const char
12240 20 2a 63 6f 6e 73 74 2a 61 72 67 76 2c 0a 20 20   *const*argv,.  
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 73 71 6c               sql
12260 69 74 65 33 5f 76 74 61 62 20 2a 2a 70 70 56 54  ite3_vtab **ppVT
12270 61 62 2c 20 63 68 61 72 2a 2a 29 3b 0a 20 20 69  ab, char**);.  i
12280 6e 74 20 28 2a 78 43 6f 6e 6e 65 63 74 29 28 73  nt (*xConnect)(s
12290 71 6c 69 74 65 33 2a 2c 20 76 6f 69 64 20 2a 70  qlite3*, void *p
122a0 41 75 78 2c 0a 20 20 20 20 20 20 20 20 20 20 20  Aux,.           
122b0 20 20 20 20 69 6e 74 20 61 72 67 63 2c 20 63 6f      int argc, co
122c0 6e 73 74 20 63 68 61 72 20 2a 63 6f 6e 73 74 2a  nst char *const*
122d0 61 72 67 76 2c 0a 20 20 20 20 20 20 20 20 20 20  argv,.          
122e0 20 20 20 20 20 73 71 6c 69 74 65 33 5f 76 74 61       sqlite3_vta
122f0 62 20 2a 2a 70 70 56 54 61 62 2c 20 63 68 61 72  b **ppVTab, char
12300 2a 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 42 65  **);.  int (*xBe
12310 73 74 49 6e 64 65 78 29 28 73 71 6c 69 74 65 33  stIndex)(sqlite3
12320 5f 76 74 61 62 20 2a 70 56 54 61 62 2c 20 73 71  _vtab *pVTab, sq
12330 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
12340 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44 69 73  *);.  int (*xDis
12350 63 6f 6e 6e 65 63 74 29 28 73 71 6c 69 74 65 33  connect)(sqlite3
12360 5f 76 74 61 62 20 2a 70 56 54 61 62 29 3b 0a 20  _vtab *pVTab);. 
12370 20 69 6e 74 20 28 2a 78 44 65 73 74 72 6f 79 29   int (*xDestroy)
12380 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70  (sqlite3_vtab *p
12390 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a 78  VTab);.  int (*x
123a0 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f 76 74  Open)(sqlite3_vt
123b0 61 62 20 2a 70 56 54 61 62 2c 20 73 71 6c 69 74  ab *pVTab, sqlit
123c0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 2a  e3_vtab_cursor *
123d0 2a 70 70 43 75 72 73 6f 72 29 3b 0a 20 20 69 6e  *ppCursor);.  in
123e0 74 20 28 2a 78 43 6c 6f 73 65 29 28 73 71 6c 69  t (*xClose)(sqli
123f0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 2a  te3_vtab_cursor*
12400 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46 69 6c 74  );.  int (*xFilt
12410 65 72 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62  er)(sqlite3_vtab
12420 5f 63 75 72 73 6f 72 2a 2c 20 69 6e 74 20 69 64  _cursor*, int id
12430 78 4e 75 6d 2c 20 63 6f 6e 73 74 20 63 68 61 72  xNum, const char
12440 20 2a 69 64 78 53 74 72 2c 0a 20 20 20 20 20 20   *idxStr,.      
12450 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
12460 67 63 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  gc, sqlite3_valu
12470 65 20 2a 2a 61 72 67 76 29 3b 0a 20 20 69 6e 74  e **argv);.  int
12480 20 28 2a 78 4e 65 78 74 29 28 73 71 6c 69 74 65   (*xNext)(sqlite
12490 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 2a 29 3b  3_vtab_cursor*);
124a0 0a 20 20 69 6e 74 20 28 2a 78 45 6f 66 29 28 73  .  int (*xEof)(s
124b0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
124c0 6f 72 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 43  or*);.  int (*xC
124d0 6f 6c 75 6d 6e 29 28 73 71 6c 69 74 65 33 5f 76  olumn)(sqlite3_v
124e0 74 61 62 5f 63 75 72 73 6f 72 2a 2c 20 73 71 6c  tab_cursor*, sql
124f0 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69  ite3_context*, i
12500 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 52 6f  nt);.  int (*xRo
12510 77 69 64 29 28 73 71 6c 69 74 65 33 5f 76 74 61  wid)(sqlite3_vta
12520 62 5f 63 75 72 73 6f 72 2a 2c 20 73 71 6c 69 74  b_cursor*, sqlit
12530 65 5f 69 6e 74 36 34 20 2a 70 52 6f 77 69 64 29  e_int64 *pRowid)
12540 3b 0a 20 20 69 6e 74 20 28 2a 78 55 70 64 61 74  ;.  int (*xUpdat
12550 65 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20  e)(sqlite3_vtab 
12560 2a 2c 20 69 6e 74 2c 20 73 71 6c 69 74 65 33 5f  *, int, sqlite3_
12570 76 61 6c 75 65 20 2a 2a 2c 20 73 71 6c 69 74 65  value **, sqlite
12580 5f 69 6e 74 36 34 20 2a 29 3b 0a 20 20 69 6e 74  _int64 *);.  int
12590 20 28 2a 78 42 65 67 69 6e 29 28 73 71 6c 69 74   (*xBegin)(sqlit
125a0 65 33 5f 76 74 61 62 20 2a 70 56 54 61 62 29 3b  e3_vtab *pVTab);
125b0 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63 29 28  .  int (*xSync)(
125c0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56  sqlite3_vtab *pV
125d0 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a 78 43  Tab);.  int (*xC
125e0 6f 6d 6d 69 74 29 28 73 71 6c 69 74 65 33 5f 76  ommit)(sqlite3_v
125f0 74 61 62 20 2a 70 56 54 61 62 29 3b 0a 20 20 69  tab *pVTab);.  i
12600 6e 74 20 28 2a 78 52 6f 6c 6c 62 61 63 6b 29 28  nt (*xRollback)(
12610 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56  sqlite3_vtab *pV
12620 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46  Tab);.  int (*xF
12630 69 6e 64 46 75 6e 63 74 69 6f 6e 29 28 73 71 6c  indFunction)(sql
12640 69 74 65 33 5f 76 74 61 62 20 2a 70 56 74 61 62  ite3_vtab *pVtab
12650 2c 20 69 6e 74 20 6e 41 72 67 2c 20 63 6f 6e 73  , int nArg, cons
12660 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 0a 20  t char *zName,. 
12670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12680 20 20 20 20 20 20 76 6f 69 64 20 28 2a 2a 70 78        void (**px
12690 46 75 6e 63 29 28 73 71 6c 69 74 65 33 5f 63 6f  Func)(sqlite3_co
126a0 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74  ntext*,int,sqlit
126b0 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 20  e3_value**),.   
126c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126d0 20 20 20 20 76 6f 69 64 20 2a 2a 70 70 41 72 67      void **ppArg
126e0 29 3b 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  );.};../*.** The
126f0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
12700 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 61 6e  nfo structure an
12710 64 20 69 74 73 20 73 75 62 73 74 72 75 63 74 75  d its substructu
12720 72 65 73 20 69 73 20 75 73 65 64 20 74 6f 0a 2a  res is used to.*
12730 2a 20 70 61 73 73 20 69 6e 66 6f 72 6d 61 74 69  * pass informati
12740 6f 6e 20 69 6e 74 6f 20 61 6e 64 20 72 65 63 65  on into and rece
12750 69 76 65 20 74 68 65 20 72 65 70 6c 79 20 66 72  ive the reply fr
12760 6f 6d 20 74 68 65 20 78 42 65 73 74 49 6e 64 65  om the xBestInde
12770 78 0a 2a 2a 20 6d 65 74 68 6f 64 20 6f 66 20 61  x.** method of a
12780 6e 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  n sqlite3_module
12790 2e 20 20 54 68 65 20 66 69 65 6c 64 73 20 75 6e  .  The fields un
127a0 64 65 72 20 2a 2a 49 6e 70 75 74 73 2a 2a 20 61  der **Inputs** a
127b0 72 65 20 74 68 65 0a 2a 2a 20 69 6e 70 75 74 73  re the.** inputs
127c0 20 74 6f 20 78 42 65 73 74 49 6e 64 65 78 20 61   to xBestIndex a
127d0 6e 64 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79  nd are read-only
127e0 2e 20 20 78 42 65 73 74 49 6e 64 65 78 20 69 6e  .  xBestIndex in
127f0 73 65 72 74 73 20 69 74 73 0a 2a 2a 20 72 65 73  serts its.** res
12800 75 6c 74 73 20 69 6e 74 6f 20 74 68 65 20 2a 2a  ults into the **
12810 4f 75 74 70 75 74 73 2a 2a 20 66 69 65 6c 64 73  Outputs** fields
12820 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 43 6f 6e  ..**.** The aCon
12830 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61 79 20  straint[] array 
12840 72 65 63 6f 72 64 73 20 57 48 45 52 45 20 63 6c  records WHERE cl
12850 61 75 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73  ause constraints
12860 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f 72 6d 3a   of the.** form:
12870 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20 20 63  .**.**         c
12880 6f 6c 75 6d 6e 20 4f 50 20 65 78 70 72 0a 2a 2a  olumn OP expr.**
12890 0a 2a 2a 20 57 68 65 72 65 20 4f 50 20 69 73 20  .** Where OP is 
128a0 3d 2c 20 3c 2c 20 3c 3d 2c 20 3e 2c 20 6f 72 20  =, <, <=, >, or 
128b0 3e 3d 2e 20 20 54 68 65 20 70 61 72 74 69 63 75  >=.  The particu
128c0 6c 61 72 20 6f 70 65 72 61 74 6f 72 20 69 73 20  lar operator is 
128d0 73 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61 43 6f  stored.** in aCo
128e0 6e 73 74 72 61 69 6e 74 5b 5d 2e 6f 70 2e 20 20  nstraint[].op.  
128f0 54 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65  The index of the
12900 20 63 6f 6c 75 6d 6e 20 69 73 20 73 74 6f 72 65   column is store
12910 64 20 69 6e 20 0a 2a 2a 20 61 43 6f 6e 73 74 72  d in .** aConstr
12920 61 69 6e 74 5b 5d 2e 69 43 6f 6c 75 6d 6e 2e 20  aint[].iColumn. 
12930 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e 75   aConstraint[].u
12940 73 61 62 6c 65 20 69 73 20 54 52 55 45 20 69 66  sable is TRUE if
12950 20 74 68 65 0a 2a 2a 20 65 78 70 72 20 6f 6e 20   the.** expr on 
12960 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20 73  the right-hand s
12970 69 64 65 20 63 61 6e 20 62 65 20 65 76 61 6c 75  ide can be evalu
12980 61 74 65 64 20 28 61 6e 64 20 74 68 75 73 20 74  ated (and thus t
12990 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a  he constraint.**
129a0 20 69 73 20 75 73 61 62 6c 65 29 20 61 6e 64 20   is usable) and 
129b0 66 61 6c 73 65 20 69 66 20 69 74 20 63 61 6e 6e  false if it cann
129c0 6f 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6f 70  ot..**.** The op
129d0 74 69 6d 69 7a 65 72 20 61 75 74 6f 6d 61 74 69  timizer automati
129e0 63 61 6c 6c 79 20 69 6e 76 65 72 74 73 20 74 65  cally inverts te
129f0 72 6d 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  rms of the form 
12a00 22 65 78 70 72 20 4f 50 20 63 6f 6c 75 6d 6e 22  "expr OP column"
12a10 0a 2a 2a 20 61 6e 64 20 6d 61 6b 65 73 20 6f 74  .** and makes ot
12a20 68 65 72 20 73 69 6d 70 6c 69 66 69 63 61 74 69  her simplificati
12a30 6e 6f 73 20 74 6f 20 74 68 65 20 57 48 45 52 45  nos to the WHERE
12a40 20 63 6c 61 75 73 65 20 69 6e 20 61 6e 20 61 74   clause in an at
12a50 74 65 6d 70 74 20 74 6f 0a 2a 2a 20 67 65 74 20  tempt to.** get 
12a60 61 73 20 6d 61 6e 79 20 57 48 45 52 45 20 63 6c  as many WHERE cl
12a70 61 75 73 65 20 74 65 72 6d 73 20 69 6e 74 6f 20  ause terms into 
12a80 74 68 65 20 66 6f 72 6d 20 73 68 6f 77 6e 20 61  the form shown a
12a90 62 6f 76 65 20 61 73 20 70 6f 73 73 69 62 6c 65  bove as possible
12aa0 2e 0a 2a 2a 20 54 68 65 20 61 43 6f 6e 73 74 72  ..** The aConstr
12ab0 61 69 6e 74 5b 5d 20 61 72 72 61 79 20 6f 6e 6c  aint[] array onl
12ac0 79 20 72 65 70 6f 72 74 73 20 57 48 45 52 45 20  y reports WHERE 
12ad0 63 6c 61 75 73 65 20 74 65 72 6d 73 20 69 6e 20  clause terms in 
12ae0 74 68 65 20 63 6f 72 72 65 63 74 0a 2a 2a 20 66  the correct.** f
12af0 6f 72 6d 20 74 68 61 74 20 72 65 66 65 72 20 74  orm that refer t
12b00 6f 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72  o the particular
12b10 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 62   virtual table b
12b20 65 69 6e 67 20 71 75 65 72 69 65 64 2e 0a 2a 2a  eing queried..**
12b30 0a 2a 2a 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** Information 
12b40 61 62 6f 75 74 20 74 68 65 20 4f 52 44 45 52 20  about the ORDER 
12b50 42 59 20 63 6c 61 75 73 65 20 69 73 20 73 74 6f  BY clause is sto
12b60 72 65 64 20 69 6e 20 61 4f 72 64 65 72 42 79 5b  red in aOrderBy[
12b70 5d 2e 0a 2a 2a 20 45 61 63 68 20 74 65 72 6d 20  ]..** Each term 
12b80 6f 66 20 61 4f 72 64 65 72 42 79 20 72 65 63 6f  of aOrderBy reco
12b90 72 64 73 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20  rds a column of 
12ba0 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
12bb0 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78  use..**.** The x
12bc0 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
12bd0 20 6d 75 73 74 20 66 69 6c 6c 20 61 43 6f 6e 73   must fill aCons
12be0 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 77 69  traintUsage[] wi
12bf0 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a  th information.*
12c00 2a 20 61 62 6f 75 74 20 77 68 61 74 20 70 61 72  * about what par
12c10 61 6d 65 74 65 72 73 20 74 6f 20 70 61 73 73 20  ameters to pass 
12c20 74 6f 20 78 46 69 6c 74 65 72 2e 20 20 49 66 20  to xFilter.  If 
12c30 61 72 67 76 49 6e 64 65 78 3e 30 20 74 68 65 6e  argvIndex>0 then
12c40 0a 2a 2a 20 74 68 65 20 72 69 67 68 74 2d 68 61  .** the right-ha
12c50 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 63  nd side of the c
12c60 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 61 43 6f  orresponding aCo
12c70 6e 73 74 72 61 69 6e 74 5b 5d 20 69 73 20 65 76  nstraint[] is ev
12c80 61 6c 75 61 74 65 64 0a 2a 2a 20 61 6e 64 20 62  aluated.** and b
12c90 65 63 6f 6d 65 73 20 74 68 65 20 61 72 67 76 49  ecomes the argvI
12ca0 6e 64 65 78 2d 74 68 20 65 6e 74 72 79 20 69 6e  ndex-th entry in
12cb0 20 61 72 67 76 2e 20 20 49 66 20 61 43 6f 6e 73   argv.  If aCons
12cc0 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 6f 6d  traintUsage[].om
12cd0 69 74 0a 2a 2a 20 69 73 20 74 72 75 65 2c 20 74  it.** is true, t
12ce0 68 65 6e 20 74 68 65 20 63 6f 6e 73 74 72 61 69  hen the constrai
12cf0 6e 74 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f  nt is assumed to
12d00 20 62 65 20 66 75 6c 6c 79 20 68 61 6e 64 6c 65   be fully handle
12d10 64 20 62 79 20 74 68 65 0a 2a 2a 20 76 69 72 74  d by the.** virt
12d20 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20 69 73  ual table and is
12d30 20 6e 6f 74 20 63 68 65 63 6b 65 64 20 61 67 61   not checked aga
12d40 69 6e 20 62 79 20 53 51 4c 69 74 65 2e 0a 2a 2a  in by SQLite..**
12d50 0a 2a 2a 20 54 68 65 20 69 64 78 4e 75 6d 20 61  .** The idxNum a
12d60 6e 64 20 69 64 78 50 74 72 20 76 61 6c 75 65 73  nd idxPtr values
12d70 20 61 72 65 20 72 65 63 6f 72 64 65 64 20 61 6e   are recorded an
12d80 64 20 70 61 73 73 65 64 20 69 6e 74 6f 20 78 46  d passed into xF
12d90 69 6c 74 65 72 2e 0a 2a 2a 20 73 71 6c 69 74 65  ilter..** sqlite
12da0 33 5f 66 72 65 65 28 29 20 69 73 20 75 73 65 64  3_free() is used
12db0 20 74 6f 20 66 72 65 65 20 69 64 78 50 74 72 20   to free idxPtr 
12dc0 69 66 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  if needToFreeIdx
12dd0 50 74 72 20 69 73 20 74 72 75 65 2e 0a 2a 2a 0a  Ptr is true..**.
12de0 2a 2a 20 54 68 65 20 6f 72 64 65 72 42 79 43 6f  ** The orderByCo
12df0 6e 73 75 6d 65 64 20 6d 65 61 6e 73 20 74 68 61  nsumed means tha
12e00 74 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 78 46  t output from xF
12e10 69 6c 74 65 72 20 77 69 6c 6c 20 6f 63 63 75 72  ilter will occur
12e20 20 69 6e 0a 2a 2a 20 74 68 65 20 63 6f 72 72 65   in.** the corre
12e30 63 74 20 6f 72 64 65 72 20 74 6f 20 73 61 74 69  ct order to sati
12e40 73 66 79 20 74 68 65 20 4f 52 44 45 52 20 42 59  sfy the ORDER BY
12e50 20 63 6c 61 75 73 65 20 73 6f 20 74 68 61 74 20   clause so that 
12e60 6e 6f 20 73 65 70 61 72 61 74 65 0a 2a 2a 20 73  no separate.** s
12e70 6f 72 74 69 6e 67 20 73 74 65 70 20 69 73 20 72  orting step is r
12e80 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  equired..**.** T
12e90 68 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74  he estimatedCost
12ea0 20 76 61 6c 75 65 20 69 73 20 61 6e 20 65 73 74   value is an est
12eb0 69 6d 61 74 65 20 6f 66 20 74 68 65 20 63 6f 73  imate of the cos
12ec0 74 20 6f 66 20 64 6f 69 6e 67 20 74 68 65 0a 2a  t of doing the.*
12ed0 2a 20 70 61 72 74 69 63 75 6c 61 72 20 6c 6f 6f  * particular loo
12ee0 6b 75 70 2e 20 20 41 20 66 75 6c 6c 20 73 63 61  kup.  A full sca
12ef0 6e 20 6f 66 20 61 20 74 61 62 6c 65 20 77 69 74  n of a table wit
12f00 68 20 4e 20 65 6e 74 72 69 65 73 20 73 68 6f 75  h N entries shou
12f10 6c 64 20 68 61 76 65 0a 2a 2a 20 61 20 63 6f 73  ld have.** a cos
12f20 74 20 6f 66 20 4e 2e 20 20 41 20 62 69 6e 61 72  t of N.  A binar
12f30 79 20 73 65 61 72 63 68 20 6f 66 20 61 20 74 61  y search of a ta
12f40 62 6c 65 20 6f 66 20 4e 20 65 6e 74 72 69 65 73  ble of N entries
12f50 20 73 68 6f 75 6c 64 20 68 61 76 65 20 61 0a 2a   should have a.*
12f60 2a 20 63 6f 73 74 20 6f 66 20 61 70 70 72 6f 78  * cost of approx
12f70 69 6d 61 74 65 6c 79 20 6c 6f 67 28 4e 29 2e 0a  imately log(N)..
12f80 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65  */.struct sqlite
12f90 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 7b 0a 20  3_index_info {. 
12fa0 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0a 20 20   /* Inputs */.  
12fb0 63 6f 6e 73 74 20 69 6e 74 20 6e 43 6f 6e 73 74  const int nConst
12fc0 72 61 69 6e 74 3b 20 20 20 20 20 2f 2a 20 4e 75  raint;     /* Nu
12fd0 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
12fe0 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a  in aConstraint *
12ff0 2f 0a 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74  /.  const struct
13000 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
13010 6f 6e 73 74 72 61 69 6e 74 20 7b 0a 20 20 20 20  onstraint {.    
13020 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 20 20   int iColumn;   
13030 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 43 6f             /* Co
13040 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e  lumn on left-han
13050 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74 72  d side of constr
13060 61 69 6e 74 20 2a 2f 0a 20 20 20 20 20 75 6e 73  aint */.     uns
13070 69 67 6e 65 64 20 63 68 61 72 20 6f 70 3b 20 20  igned char op;  
13080 20 20 20 20 20 20 20 2f 2a 20 43 6f 6e 73 74 72         /* Constr
13090 61 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 2a 2f  aint operator */
130a0 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63  .     unsigned c
130b0 68 61 72 20 75 73 61 62 6c 65 3b 20 20 20 20 20  har usable;     
130c0 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69 73 20  /* True if this 
130d0 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73  constraint is us
130e0 61 62 6c 65 20 2a 2f 0a 20 20 20 20 20 69 6e 74  able */.     int
130f0 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 20 20 20   iTermOffset;   
13100 20 20 20 20 20 20 20 2f 2a 20 55 73 65 64 20 69         /* Used i
13110 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 78 42 65 73  nternally - xBes
13120 74 49 6e 64 65 78 20 73 68 6f 75 6c 64 20 69 67  tIndex should ig
13130 6e 6f 72 65 20 2a 2f 0a 20 20 7d 20 2a 63 6f 6e  nore */.  } *con
13140 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 20  st aConstraint; 
13150 20 20 20 20 20 2f 2a 20 54 61 62 6c 65 20 6f 66       /* Table of
13160 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f   WHERE clause co
13170 6e 73 74 72 61 69 6e 74 73 20 2a 2f 0a 20 20 63  nstraints */.  c
13180 6f 6e 73 74 20 69 6e 74 20 6e 4f 72 64 65 72 42  onst int nOrderB
13190 79 3b 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d  y;        /* Num
131a0 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20  ber of terms in 
131b0 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
131c0 75 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 73  use */.  const s
131d0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
131e0 64 65 78 5f 6f 72 64 65 72 62 79 20 7b 0a 20 20  dex_orderby {.  
131f0 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20     int iColumn; 
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
13210 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
13220 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63  .     unsigned c
13230 68 61 72 20 64 65 73 63 3b 20 20 20 20 20 20 20  har desc;       
13240 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53 43  /* True for DESC
13250 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43  .  False for ASC
13260 2e 20 2a 2f 0a 20 20 7d 20 2a 63 6f 6e 73 74 20  . */.  } *const 
13270 61 4f 72 64 65 72 42 79 3b 20 20 20 20 20 20 20  aOrderBy;       
13280 20 20 2f 2a 20 54 68 65 20 4f 52 44 45 52 20 42    /* The ORDER B
13290 59 20 63 6c 61 75 73 65 20 2a 2f 0a 0a 20 20 2f  Y clause */..  /
132a0 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0a 20 20 73  * Outputs */.  s
132b0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
132c0 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
132d0 73 61 67 65 20 7b 0a 20 20 20 20 69 6e 74 20 61  sage {.    int a
132e0 72 67 76 49 6e 64 65 78 3b 20 20 20 20 20 20 20  rgvIndex;       
132f0 20 20 20 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f      /* if >0, co
13300 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
13310 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
13320 74 65 72 20 2a 2f 0a 20 20 20 20 75 6e 73 69 67  ter */.    unsig
13330 6e 65 64 20 63 68 61 72 20 6f 6d 69 74 3b 20 20  ned char omit;  
13340 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f      /* Do not co
13350 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68  de a test for th
13360 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  is constraint */
13370 0a 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43 6f 6e  .  } *const aCon
13380 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0a 20 20  straintUsage;.  
13390 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
133a0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
133b0 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
133c0 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
133d0 2a 2f 0a 20 20 63 68 61 72 20 2a 69 64 78 53 74  */.  char *idxSt
133e0 72 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  r;              
133f0 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69  /* String, possi
13400 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  bly obtained fro
13410 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  m sqlite3_malloc
13420 20 2a 2f 0a 20 20 69 6e 74 20 6e 65 65 64 54 6f   */.  int needTo
13430 46 72 65 65 49 64 78 53 74 72 3b 20 20 20 20 20  FreeIdxStr;     
13440 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
13450 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
13460 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0a  ee() if true */.
13470 20 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e    int orderByCon
13480 73 75 6d 65 64 3b 20 20 20 20 20 20 20 2f 2a 20  sumed;       /* 
13490 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69  True if output i
134a0 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65  s already ordere
134b0 64 20 2a 2f 0a 20 20 64 6f 75 62 6c 65 20 65 73  d */.  double es
134c0 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 20 20 20  timatedCost;    
134d0 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63    /* Estimated c
134e0 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69  ost of using thi
134f0 73 20 69 6e 64 65 78 20 2a 2f 0a 7d 3b 0a 23 64  s index */.};.#d
13500 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
13510 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 45 51  EX_CONSTRAINT_EQ
13520 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51      2.#define SQ
13530 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
13540 52 41 49 4e 54 5f 47 54 20 20 20 20 34 0a 23 64  RAINT_GT    4.#d
13550 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
13560 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4c 45  EX_CONSTRAINT_LE
13570 20 20 20 20 38 0a 23 64 65 66 69 6e 65 20 53 51      8.#define SQ
13580 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
13590 52 41 49 4e 54 5f 4c 54 20 20 20 20 31 36 0a 23  RAINT_LT    16.#
135a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
135b0 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47  DEX_CONSTRAINT_G
135c0 45 20 20 20 20 33 32 0a 23 64 65 66 69 6e 65 20  E    32.#define 
135d0 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
135e0 53 54 52 41 49 4e 54 5f 4d 41 54 43 48 20 36 34  STRAINT_MATCH 64
135f0 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75  ../*.** This rou
13600 74 69 6e 65 20 69 73 20 75 73 65 64 20 74 6f 20  tine is used to 
13610 72 65 67 69 73 74 65 72 20 61 20 6e 65 77 20 6d  register a new m
13620 6f 64 75 6c 65 20 6e 61 6d 65 20 77 69 74 68 20  odule name with 
13630 61 6e 20 53 51 4c 69 74 65 0a 2a 2a 20 63 6f 6e  an SQLite.** con
13640 6e 65 63 74 69 6f 6e 2e 20 20 4d 6f 64 75 6c 65  nection.  Module
13650 20 6e 61 6d 65 73 20 6d 75 73 74 20 62 65 20 72   names must be r
13660 65 67 69 73 74 65 72 65 64 20 62 65 66 6f 72 65  egistered before
13670 20 63 72 65 61 74 69 6e 67 20 6e 65 77 0a 2a 2a   creating new.**
13680 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   virtual tables 
13690 6f 6e 20 74 68 65 20 6d 6f 64 75 6c 65 2c 20 6f  on the module, o
136a0 72 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 70  r before using p
136b0 72 65 65 78 69 73 74 69 6e 67 20 76 69 72 74 75  reexisting virtu
136c0 61 6c 0a 2a 2a 20 74 61 62 6c 65 73 20 6f 66 20  al.** tables of 
136d0 74 68 65 20 6d 6f 64 75 6c 65 2e 0a 2a 2f 0a 69  the module..*/.i
136e0 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  nt sqlite3_creat
136f0 65 5f 6d 6f 64 75 6c 65 28 0a 20 20 73 71 6c 69  e_module(.  sqli
13700 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
13710 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 69 74 65         /* SQLite
13720 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 72   connection to r
13730 65 67 69 73 74 65 72 20 6d 6f 64 75 6c 65 20 77  egister module w
13740 69 74 68 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ith */.  const c
13750 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 20 20 20 20  har *zName,     
13760 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74      /* Name of t
13770 68 65 20 6d 6f 64 75 6c 65 20 2a 2f 0a 20 20 63  he module */.  c
13780 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64  onst sqlite3_mod
13790 75 6c 65 20 2a 2c 20 20 20 20 2f 2a 20 4d 65 74  ule *,    /* Met
137a0 68 6f 64 73 20 66 6f 72 20 74 68 65 20 6d 6f 64  hods for the mod
137b0 75 6c 65 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 20  ule */.  void * 
137c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137d0 20 20 20 20 2f 2a 20 43 6c 69 65 6e 74 20 64 61      /* Client da
137e0 74 61 20 66 6f 72 20 78 43 72 65 61 74 65 2f 78  ta for xCreate/x
137f0 43 6f 6e 6e 65 63 74 20 2a 2f 0a 29 3b 0a 0a 2f  Connect */.);../
13800 2a 0a 2a 2a 20 45 76 65 72 79 20 6d 6f 64 75 6c  *.** Every modul
13810 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
13820 20 75 73 65 73 20 61 20 73 75 62 63 6c 61 73 73   uses a subclass
13830 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
13840 67 20 73 74 72 75 63 74 75 72 65 0a 2a 2a 20 74  g structure.** t
13850 6f 20 64 65 73 63 72 69 62 65 20 61 20 70 61 72  o describe a par
13860 74 69 63 75 6c 61 72 20 69 6e 73 74 61 6e 63 65  ticular instance
13870 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20   of the module. 
13880 20 45 61 63 68 20 73 75 62 63 6c 61 73 73 20 77   Each subclass w
13890 69 6c 6c 0a 2a 2a 20 62 65 20 74 61 79 6c 6f 72  ill.** be taylor
138a0 65 64 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  ed to the specif
138b0 69 63 20 6e 65 65 64 73 20 6f 66 20 74 68 65 20  ic needs of the 
138c0 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
138d0 61 74 69 6f 6e 2e 20 20 20 54 68 65 0a 2a 2a 20  ation.   The.** 
138e0 70 75 72 70 6f 73 65 20 6f 66 20 74 68 69 73 20  purpose of this 
138f0 73 75 70 65 72 63 6c 61 73 73 20 69 73 20 74 6f  superclass is to
13900 20 64 65 66 69 6e 65 20 63 65 72 74 61 69 6e 20   define certain 
13910 66 69 65 6c 64 73 20 74 68 61 74 20 61 72 65 20  fields that are 
13920 63 6f 6d 6d 6f 6e 0a 2a 2a 20 74 6f 20 61 6c 6c  common.** to all
13930 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
13940 74 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 56  tations..**.** V
13950 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20 6d 65  irtual tables me
13960 74 68 6f 64 73 20 63 61 6e 20 73 65 74 20 61 6e  thods can set an
13970 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 62   error message b
13980 79 20 61 73 73 69 67 6e 69 6e 67 20 61 0a 2a 2a  y assigning a.**
13990 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65 64   string obtained
139a0 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 70   from sqlite3_mp
139b0 72 69 6e 74 66 28 29 20 74 6f 20 7a 45 72 72 4d  rintf() to zErrM
139c0 73 67 2e 20 20 54 68 65 20 6d 65 74 68 6f 64 20  sg.  The method 
139d0 73 68 6f 75 6c 64 0a 2a 2a 20 74 61 6b 65 20 63  should.** take c
139e0 61 72 65 20 74 68 61 74 20 61 6e 79 20 70 72 69  are that any pri
139f0 6f 72 20 73 74 72 69 6e 67 20 69 73 20 66 72 65  or string is fre
13a00 65 64 20 62 79 20 61 20 63 61 6c 6c 20 74 6f 20  ed by a call to 
13a10 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 0a 2a  sqlite3_free().*
13a20 2a 20 70 72 69 6f 72 20 74 6f 20 61 73 73 69 67  * prior to assig
13a30 6e 69 6e 67 20 61 20 6e 65 77 20 73 74 72 69 6e  ning a new strin
13a40 67 20 74 6f 20 7a 45 72 72 4d 73 67 2e 20 20 41  g to zErrMsg.  A
13a50 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20 6d  fter the error m
13a60 65 73 73 61 67 65 0a 2a 2a 20 69 73 20 64 65 6c  essage.** is del
13a70 69 76 65 72 65 64 20 75 70 20 74 6f 20 74 68 65  ivered up to the
13a80 20 63 6c 69 65 6e 74 20 61 70 70 6c 69 63 61 74   client applicat
13a90 69 6f 6e 2c 20 74 68 65 20 73 74 72 69 6e 67 20  ion, the string 
13aa0 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69  will be automati
13ab0 63 61 6c 6c 79 0a 2a 2a 20 66 72 65 65 64 20 62  cally.** freed b
13ac0 79 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29  y sqlite3_free()
13ad0 20 61 6e 64 20 74 68 65 20 7a 45 72 72 4d 73 67   and the zErrMsg
13ae0 20 66 69 65 6c 64 20 77 69 6c 6c 20 62 65 20 7a   field will be z
13af0 65 72 6f 65 64 2e 20 20 4e 6f 74 65 0a 2a 2a 20  eroed.  Note.** 
13b00 74 68 61 74 20 73 71 6c 69 74 65 33 5f 6d 70 72  that sqlite3_mpr
13b10 69 6e 74 66 28 29 20 61 6e 64 20 73 71 6c 69 74  intf() and sqlit
13b20 65 33 5f 66 72 65 65 28 29 20 61 72 65 20 75 73  e3_free() are us
13b30 65 64 20 6f 6e 20 74 68 65 20 7a 45 72 72 4d 73  ed on the zErrMs
13b40 67 20 66 69 65 6c 64 0a 2a 2a 20 73 69 6e 63 65  g field.** since
13b50 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   virtual tables 
13b60 61 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 69 6d 70  are commonly imp
13b70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6c 6f 61 64  lemented in load
13b80 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e 73 20  able extensions 
13b90 77 68 69 63 68 0a 2a 2a 20 64 6f 20 6e 6f 74 20  which.** do not 
13ba0 68 61 76 65 20 61 63 63 65 73 73 20 74 6f 20 73  have access to s
13bb0 71 6c 69 74 65 33 4d 50 72 69 6e 74 66 28 29 20  qlite3MPrintf() 
13bc0 6f 72 20 73 71 6c 69 74 65 33 46 72 65 65 28 29  or sqlite3Free()
13bd0 2e 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c 69  ..*/.struct sqli
13be0 74 65 33 5f 76 74 61 62 20 7b 0a 20 20 63 6f 6e  te3_vtab {.  con
13bf0 73 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  st sqlite3_modul
13c00 65 20 2a 70 4d 6f 64 75 6c 65 3b 20 20 2f 2a 20  e *pModule;  /* 
13c10 54 68 65 20 6d 6f 64 75 6c 65 20 66 6f 72 20 74  The module for t
13c20 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
13c30 65 20 2a 2f 0a 20 20 69 6e 74 20 6e 52 65 66 3b  e */.  int nRef;
13c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c50 20 20 20 20 20 20 20 2f 2a 20 55 73 65 64 20 69         /* Used i
13c60 6e 74 65 72 6e 61 6c 6c 79 20 2a 2f 0a 20 20 63  nternally */.  c
13c70 68 61 72 20 2a 7a 45 72 72 4d 73 67 3b 20 20 20  har *zErrMsg;   
13c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13c90 2a 20 45 72 72 6f 72 20 6d 65 73 73 61 67 65 20  * Error message 
13ca0 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 70 72  from sqlite3_mpr
13cb0 69 6e 74 66 28 29 20 2a 2f 0a 20 20 2f 2a 20 56  intf() */.  /* V
13cc0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70  irtual table imp
13cd0 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77 69 6c  lementations wil
13ce0 6c 20 74 79 70 69 63 61 6c 6c 79 20 61 64 64 20  l typically add 
13cf0 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64  additional field
13d00 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 20 45 76 65 72  s */.};../* Ever
13d10 79 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  y module impleme
13d20 6e 74 61 74 69 6f 6e 20 75 73 65 73 20 61 20 73  ntation uses a s
13d30 75 62 63 6c 61 73 73 20 6f 66 20 74 68 65 20 66  ubclass of the f
13d40 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 75 63 74 75  ollowing structu
13d50 72 65 0a 2a 2a 20 74 6f 20 64 65 73 63 72 69 62  re.** to describ
13d60 65 20 63 75 72 73 6f 72 73 20 74 68 61 74 20 70  e cursors that p
13d70 6f 69 6e 74 20 69 6e 74 6f 20 74 68 65 20 76 69  oint into the vi
13d80 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20  rtual table and 
13d90 61 72 65 20 75 73 65 64 0a 2a 2a 20 74 6f 20 6c  are used.** to l
13da0 6f 6f 70 20 74 68 72 6f 75 67 68 20 74 68 65 20  oop through the 
13db0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20  virtual table.  
13dc0 43 75 72 73 6f 72 73 20 61 72 65 20 63 72 65 61  Cursors are crea
13dd0 74 65 64 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a  ted using the.**
13de0 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 6f 66   xOpen method of
13df0 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20 45 61   the module.  Ea
13e00 63 68 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  ch module implem
13e10 65 6e 74 61 74 69 6f 6e 20 77 69 6c 6c 20 64 65  entation will de
13e20 66 69 6e 65 0a 2a 2a 20 74 68 65 20 63 6f 6e 74  fine.** the cont
13e30 65 6e 74 20 6f 66 20 61 20 63 75 72 73 6f 72 20  ent of a cursor 
13e40 73 74 72 75 63 74 75 72 65 20 74 6f 20 73 75 69  structure to sui
13e50 74 20 69 74 73 20 6f 77 6e 20 6e 65 65 64 73 2e  t its own needs.
13e60 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 73 75 70 65  .**.** This supe
13e70 72 63 6c 61 73 73 20 65 78 69 73 74 73 20 69 6e  rclass exists in
13e80 20 6f 72 64 65 72 20 74 6f 20 64 65 66 69 6e 65   order to define
13e90 20 66 69 65 6c 64 73 20 6f 66 20 74 68 65 20 63   fields of the c
13ea0 75 72 73 6f 72 20 74 68 61 74 0a 2a 2a 20 61 72  ursor that.** ar
13eb0 65 20 63 6f 6d 6d 6f 6e 20 74 6f 20 61 6c 6c 20  e common to all 
13ec0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2e  implementations.
13ed0 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c 69 74  .*/.struct sqlit
13ee0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 7b  e3_vtab_cursor {
13ef0 0a 20 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  .  sqlite3_vtab 
13f00 2a 70 56 74 61 62 3b 20 20 20 20 20 20 2f 2a 20  *pVtab;      /* 
13f10 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6f 66  Virtual table of
13f20 20 74 68 69 73 20 63 75 72 73 6f 72 20 2a 2f 0a   this cursor */.
13f30 20 20 2f 2a 20 56 69 72 74 75 61 6c 20 74 61 62    /* Virtual tab
13f40 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
13f50 6e 73 20 77 69 6c 6c 20 74 79 70 69 63 61 6c 6c  ns will typicall
13f60 79 20 61 64 64 20 61 64 64 69 74 69 6f 6e 61 6c  y add additional
13f70 20 66 69 65 6c 64 73 20 2a 2f 0a 7d 3b 0a 0a 2f   fields */.};../
13f80 2a 0a 2a 2a 20 54 68 65 20 78 43 72 65 61 74 65  *.** The xCreate
13f90 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d 65   and xConnect me
13fa0 74 68 6f 64 73 20 6f 66 20 61 20 6d 6f 64 75 6c  thods of a modul
13fb0 65 20 75 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77  e use the follow
13fc0 69 6e 67 20 41 50 49 0a 2a 2a 20 74 6f 20 64 65  ing API.** to de
13fd0 63 6c 61 72 65 20 74 68 65 20 66 6f 72 6d 61 74  clare the format
13fe0 20 28 74 68 65 20 6e 61 6d 65 73 20 61 6e 64 20   (the names and 
13ff0 64 61 74 61 74 79 70 65 73 20 6f 66 20 74 68 65  datatypes of the
14000 20 63 6f 6c 75 6d 6e 73 29 20 6f 66 0a 2a 2a 20   columns) of.** 
14010 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
14020 65 73 20 74 68 65 79 20 69 6d 70 6c 65 6d 65 6e  es they implemen
14030 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  t..*/.int sqlite
14040 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 73  3_declare_vtab(s
14050 71 6c 69 74 65 33 2a 2c 20 63 6f 6e 73 74 20 63  qlite3*, const c
14060 68 61 72 20 2a 7a 43 72 65 61 74 65 54 61 62 6c  har *zCreateTabl
14070 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 56 69 72 74 75  e);../*.** Virtu
14080 61 6c 20 74 61 62 6c 65 73 20 63 61 6e 20 70 72  al tables can pr
14090 6f 76 69 64 65 20 61 6c 74 65 72 6e 61 74 69 76  ovide alternativ
140a0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
140b0 73 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 0a 2a  s of functions.*
140c0 2a 20 75 73 69 6e 67 20 74 68 65 20 78 46 69 6e  * using the xFin
140d0 64 46 75 6e 63 74 69 6f 6e 20 6d 65 74 68 6f 64  dFunction method
140e0 2e 20 20 42 75 74 20 67 6c 6f 62 61 6c 20 76 65  .  But global ve
140f0 72 73 69 6f 6e 73 20 6f 66 20 74 68 6f 73 65 20  rsions of those 
14100 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 6d 75 73  functions.** mus
14110 74 20 65 78 69 73 74 20 69 6e 20 6f 72 64 65 72  t exist in order
14120 20 74 6f 20 62 65 20 6f 76 65 72 6c 6f 61 64 65   to be overloade
14130 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 41 50  d..**.** This AP
14140 49 20 6d 61 6b 65 73 20 73 75 72 65 20 61 20 67  I makes sure a g
14150 6c 6f 62 61 6c 20 76 65 72 73 69 6f 6e 20 6f 66  lobal version of
14160 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68   a function with
14170 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a   a particular.**
14180 20 6e 61 6d 65 20 61 6e 64 20 6e 75 6d 62 65 72   name and number
14190 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 20 65   of parameters e
141a0 78 69 73 74 73 2e 20 20 49 66 20 6e 6f 20 73 75  xists.  If no su
141b0 63 68 20 66 75 6e 63 74 69 6f 6e 20 65 78 69 73  ch function exis
141c0 74 73 0a 2a 2a 20 62 65 66 6f 72 65 20 74 68 69  ts.** before thi
141d0 73 20 41 50 49 20 69 73 20 63 61 6c 6c 65 64 2c  s API is called,
141e0 20 61 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 20   a new function 
141f0 69 73 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  is created.  The
14200 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a   implementation.
14210 2a 2a 20 6f 66 20 74 68 65 20 6e 65 77 20 66 75  ** of the new fu
14220 6e 63 74 69 6f 6e 20 61 6c 77 61 79 73 20 63 61  nction always ca
14230 75 73 65 73 20 61 6e 20 65 78 63 65 70 74 69 6f  uses an exceptio
14240 6e 20 74 6f 20 62 65 20 74 68 72 6f 77 6e 2e 20  n to be thrown. 
14250 20 53 6f 0a 2a 2a 20 74 68 65 20 6e 65 77 20 66   So.** the new f
14260 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 67  unction is not g
14270 6f 6f 64 20 66 6f 72 20 61 6e 79 74 68 69 6e 67  ood for anything
14280 20 62 79 20 69 74 73 65 6c 66 2e 20 20 49 74 73   by itself.  Its
14290 20 6f 6e 6c 79 0a 2a 2a 20 70 75 72 70 6f 73 65   only.** purpose
142a0 20 69 73 20 74 6f 20 62 65 20 61 20 70 6c 61 63   is to be a plac
142b0 65 2d 68 6f 6c 64 65 72 20 66 75 6e 63 74 69 6f  e-holder functio
142c0 6e 20 74 68 61 74 20 63 61 6e 20 62 65 20 6f 76  n that can be ov
142d0 65 72 6c 6f 61 64 65 64 0a 2a 2a 20 62 79 20 76  erloaded.** by v
142e0 69 72 74 75 61 6c 20 74 61 62 6c 65 73 2e 0a 2a  irtual tables..*
142f0 2a 0a 2a 2a 20 54 68 69 73 20 41 50 49 20 73 68  *.** This API sh
14300 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 64 65 72  ould be consider
14310 65 64 20 70 61 72 74 20 6f 66 20 74 68 65 20 76  ed part of the v
14320 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 74  irtual table int
14330 65 72 66 61 63 65 2c 0a 2a 2a 20 77 68 69 63 68  erface,.** which
14340 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c   is experimental
14350 20 61 6e 64 20 73 75 62 6a 65 63 74 20 74 6f 20   and subject to 
14360 63 68 61 6e 67 65 2e 0a 2a 2f 0a 69 6e 74 20 73  change..*/.int s
14370 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f  qlite3_overload_
14380 66 75 6e 63 74 69 6f 6e 28 73 71 6c 69 74 65 33  function(sqlite3
14390 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  *, const char *z
143a0 46 75 6e 63 4e 61 6d 65 2c 20 69 6e 74 20 6e 41  FuncName, int nA
143b0 72 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  rg);../*.** The 
143c0 69 6e 74 65 72 66 61 63 65 20 74 6f 20 74 68 65  interface to the
143d0 20 76 69 72 74 75 61 6c 2d 74 61 62 6c 65 20 6d   virtual-table m
143e0 65 63 68 61 6e 69 73 6d 20 64 65 66 69 6e 65 64  echanism defined
143f0 20 61 62 6f 76 65 20 28 62 61 63 6b 20 75 70 0a   above (back up.
14400 2a 2a 20 74 6f 20 61 20 63 6f 6d 6d 65 6e 74 20  ** to a comment 
14410 72 65 6d 61 72 6b 61 62 6c 79 20 73 69 6d 69 6c  remarkably simil
14420 61 72 20 74 6f 20 74 68 69 73 20 6f 6e 65 29 20  ar to this one) 
14430 69 73 20 63 75 72 72 65 6e 74 6c 79 20 63 6f 6e  is currently con
14440 73 69 64 65 72 65 64 0a 2a 2a 20 74 6f 20 62 65  sidered.** to be
14450 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e 20 20   experimental.  
14460 54 68 65 20 69 6e 74 65 72 66 61 63 65 20 6d 69  The interface mi
14470 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 69 6e  ght change in in
14480 63 6f 6d 70 61 74 69 62 6c 65 20 77 61 79 73 2e  compatible ways.
14490 0a 2a 2a 20 49 66 20 74 68 69 73 20 69 73 20 61  .** If this is a
144a0 20 70 72 6f 62 6c 65 6d 20 66 6f 72 20 79 6f 75   problem for you
144b0 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 74 68 65  , do not use the
144c0 20 69 6e 74 65 72 66 61 63 65 20 61 74 20 74 68   interface at th
144d0 69 73 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 57  is time..**.** W
144e0 68 65 6e 20 74 68 65 20 76 69 72 74 75 61 6c 2d  hen the virtual-
144f0 74 61 62 6c 65 20 6d 65 63 68 61 6e 69 73 6d 20  table mechanism 
14500 73 74 61 62 6c 69 7a 65 73 2c 20 77 65 20 77 69  stablizes, we wi
14510 6c 6c 20 64 65 63 6c 61 72 65 20 74 68 65 0a 2a  ll declare the.*
14520 2a 20 69 6e 74 65 72 66 61 63 65 20 66 69 78 65  * interface fixe
14530 64 2c 20 73 75 70 70 6f 72 74 20 69 74 20 69 6e  d, support it in
14540 64 65 66 69 6e 69 74 65 6c 79 2c 20 61 6e 64 20  definitely, and 
14550 72 65 6d 6f 76 65 20 74 68 69 73 20 63 6f 6d 6d  remove this comm
14560 65 6e 74 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 20 45  ent..**.****** E
14570 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20 73 75  XPERIMENTAL - su
14580 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20  bject to change 
14590 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65 20 2a  without notice *
145a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2f  *************.*/
145b0 0a 0a 2f 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61  ../*.** An insta
145c0 6e 63 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  nce of the follo
145d0 77 69 6e 67 20 6f 70 61 71 75 65 20 73 74 72 75  wing opaque stru
145e0 63 74 75 72 65 20 69 73 20 75 73 65 64 20 74 6f  cture is used to
145f0 20 0a 2a 2a 20 72 65 70 72 65 73 65 6e 74 20 61   .** represent a
14600 6e 20 6f 70 65 6e 20 62 6c 6f 62 20 68 61 6e 64  n open blob hand
14610 6c 65 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  le..*/.typedef s
14620 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 62 6c  truct sqlite3_bl
14630 6f 62 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 3b  ob sqlite3_blob;
14640 0a 0a 2f 2a 0a 2a 2a 20 4f 70 65 6e 20 61 20 68  ../*.** Open a h
14650 61 6e 64 6c 65 20 74 6f 20 74 68 65 20 62 6c 6f  andle to the blo
14660 62 20 6c 6f 63 61 74 65 64 20 69 6e 20 72 6f 77  b located in row
14670 20 69 52 6f 77 2c 2c 20 63 6f 6c 75 6d 6e 20 7a   iRow,, column z
14680 43 6f 6c 75 6d 6e 2c 20 0a 2a 2a 20 74 61 62 6c  Column, .** tabl
14690 65 20 7a 54 61 62 6c 65 20 69 6e 20 64 61 74 61  e zTable in data
146a0 62 61 73 65 20 7a 44 62 2e 20 69 2e 65 2e 20 74  base zDb. i.e. t
146b0 68 65 20 73 61 6d 65 20 62 6c 6f 62 20 74 68 61  he same blob tha
146c0 74 20 77 6f 75 6c 64 0a 2a 2a 20 62 65 20 73 65  t would.** be se
146d0 6c 65 63 74 65 64 20 62 79 3a 0a 2a 2a 0a 2a 2a  lected by:.**.**
146e0 20 20 20 20 20 22 53 45 4c 45 43 54 20 7a 43 6f       "SELECT zCo
146f0 6c 75 6d 6e 20 46 52 4f 4d 20 7a 44 62 2e 7a 54  lumn FROM zDb.zT
14700 61 62 6c 65 20 57 48 45 52 45 20 72 6f 77 69 64  able WHERE rowid
14710 20 3d 20 69 52 6f 77 3b 0a 2a 2a 0a 2a 2a 20 49   = iRow;.**.** I
14720 66 20 74 68 65 20 66 6c 61 67 73 20 70 61 72 61  f the flags para
14730 6d 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72  meter is non-zer
14740 6f 2c 20 74 68 65 20 62 6c 6f 62 20 69 73 20 6f  o, the blob is o
14750 70 65 6e 65 64 20 66 6f 72 20 0a 2a 2a 20 72 65  pened for .** re
14760 61 64 20 61 6e 64 20 77 72 69 74 65 20 61 63 63  ad and write acc
14770 65 73 73 2e 20 49 66 20 69 74 20 69 73 20 7a 65  ess. If it is ze
14780 72 6f 2c 20 74 68 65 20 62 6c 6f 62 20 69 73 20  ro, the blob is 
14790 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64 20  opened for read 
147a0 0a 2a 2a 20 61 63 63 65 73 73 2e 0a 2a 2a 0a 2a  .** access..**.*
147b0 2a 20 4f 6e 20 73 75 63 63 65 73 73 2c 20 53 51  * On success, SQ
147c0 4c 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72  LITE_OK is retur
147d0 6e 65 64 20 61 6e 64 20 74 68 65 20 6e 65 77 20  ned and the new 
147e0 62 6c 6f 62 2d 68 61 6e 64 6c 65 20 69 73 0a 2a  blob-handle is.*
147f0 2a 20 77 72 69 74 74 65 6e 20 74 6f 20 2a 70 70  * written to *pp
14800 42 6c 6f 62 2e 20 4f 74 68 65 72 77 69 73 65 20  Blob. Otherwise 
14810 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  an error code is
14820 20 72 65 74 75 72 6e 65 64 20 61 6e 64 20 0a 2a   returned and .*
14830 2a 20 61 6e 79 20 76 61 6c 75 65 20 77 72 69 74  * any value writ
14840 74 65 6e 20 74 6f 20 2a 70 70 42 6c 6f 62 20 73  ten to *ppBlob s
14850 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65  hould not be use
14860 64 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e  d by the caller.
14870 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f  .** This functio
14880 6e 20 73 65 74 73 20 74 68 65 20 64 61 74 61 62  n sets the datab
14890 61 73 65 2d 68 61 6e 64 6c 65 20 65 72 72 6f 72  ase-handle error
148a0 20 63 6f 64 65 20 61 6e 64 20 6d 65 73 73 61 67   code and messag
148b0 65 0a 2a 2a 20 61 63 63 65 73 73 69 62 6c 65 20  e.** accessible 
148c0 76 69 61 20 73 71 6c 69 74 65 33 5f 65 72 72 63  via sqlite3_errc
148d0 6f 64 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65  ode() and sqlite
148e0 33 5f 65 72 72 6d 73 67 28 29 2e 0a 2a 2f 0a 69  3_errmsg()..*/.i
148f0 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  nt sqlite3_blob_
14900 6f 70 65 6e 28 0a 20 20 73 71 6c 69 74 65 33 2a  open(.  sqlite3*
14910 2c 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  ,.  const char *
14920 7a 44 62 2c 0a 20 20 63 6f 6e 73 74 20 63 68 61  zDb,.  const cha
14930 72 20 2a 7a 54 61 62 6c 65 2c 0a 20 20 63 6f 6e  r *zTable,.  con
14940 73 74 20 63 68 61 72 20 2a 7a 43 6f 6c 75 6d 6e  st char *zColumn
14950 2c 0a 20 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  ,.  sqlite_int64
14960 20 69 52 6f 77 2c 0a 20 20 69 6e 74 20 66 6c 61   iRow,.  int fla
14970 67 73 2c 0a 20 20 73 71 6c 69 74 65 33 5f 62 6c  gs,.  sqlite3_bl
14980 6f 62 20 2a 2a 70 70 42 6c 6f 62 0a 29 3b 0a 0a  ob **ppBlob.);..
14990 2f 2a 0a 2a 2a 20 43 6c 6f 73 65 20 61 6e 20 6f  /*.** Close an o
149a0 70 65 6e 20 62 6c 6f 62 20 68 61 6e 64 6c 65 2e  pen blob handle.
149b0 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
149c0 62 6c 6f 62 5f 63 6c 6f 73 65 28 73 71 6c 69 74  blob_close(sqlit
149d0 65 33 5f 62 6c 6f 62 20 2a 29 3b 0a 0a 2f 2a 0a  e3_blob *);../*.
149e0 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 73 69  ** Return the si
149f0 7a 65 20 69 6e 20 62 79 74 65 73 20 6f 66 20 74  ze in bytes of t
14a00 68 65 20 62 6c 6f 62 20 61 63 63 65 73 73 69 62  he blob accessib
14a10 6c 65 20 76 69 61 20 74 68 65 20 6f 70 65 6e 20  le via the open 
14a20 0a 2a 2a 20 62 6c 6f 62 2d 68 61 6e 64 6c 65 20  .** blob-handle 
14a30 70 61 73 73 65 64 20 61 73 20 61 6e 20 61 72 67  passed as an arg
14a40 75 6d 65 6e 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71  ument..*/.int sq
14a50 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73  lite3_blob_bytes
14a60 28 73 71 6c 69 74 65 33 5f 62 6c 6f 62 20 2a 29  (sqlite3_blob *)
14a70 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66 75  ;../*.** This fu
14a80 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  nction is used t
14a90 6f 20 72 65 61 64 20 64 61 74 61 20 66 72 6f 6d  o read data from
14aa0 20 61 6e 20 6f 70 65 6e 20 62 6c 6f 62 2d 68 61   an open blob-ha
14ab0 6e 64 6c 65 20 69 6e 74 6f 0a 2a 2a 20 61 20 63  ndle into.** a c
14ac0 61 6c 6c 65 72 20 73 75 70 70 6c 69 65 64 20 62  aller supplied b
14ad0 75 66 66 65 72 2e 20 6e 20 62 79 74 65 73 20 6f  uffer. n bytes o
14ae0 66 20 64 61 74 61 20 61 72 65 20 63 6f 70 69 65  f data are copie
14af0 64 20 69 6e 74 6f 20 62 75 66 66 65 72 0a 2a 2a  d into buffer.**
14b00 20 7a 20 66 72 6f 6d 20 74 68 65 20 6f 70 65 6e   z from the open
14b10 20 62 6c 6f 62 2c 20 73 74 61 72 74 69 6e 67 20   blob, starting 
14b20 61 74 20 6f 66 66 73 65 74 20 69 4f 66 66 73 65  at offset iOffse
14b30 74 2e 0a 2a 2a 0a 2a 2a 20 4f 6e 20 73 75 63 63  t..**.** On succ
14b40 65 73 73 2c 20 53 51 4c 49 54 45 5f 4f 4b 20 69  ess, SQLITE_OK i
14b50 73 20 72 65 74 75 72 6e 65 64 2e 20 4f 74 68 65  s returned. Othe
14b60 72 77 69 73 65 2c 20 61 6e 20 53 51 4c 69 74 65  rwise, an SQLite
14b70 20 65 72 72 6f 72 20 0a 2a 2a 20 63 6f 64 65 2e   error .** code.
14b80 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
14b90 62 6c 6f 62 5f 72 65 61 64 28 73 71 6c 69 74 65  blob_read(sqlite
14ba0 33 5f 62 6c 6f 62 20 2a 2c 20 76 6f 69 64 20 2a  3_blob *, void *
14bb0 7a 2c 20 69 6e 74 20 6e 2c 20 69 6e 74 20 69 4f  z, int n, int iO
14bc0 66 66 73 65 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  ffset);../*.** T
14bd0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
14be0 75 73 65 64 20 74 6f 20 77 72 69 74 65 20 64 61  used to write da
14bf0 74 61 20 66 72 6f 6d 20 61 6e 20 6f 70 65 6e 20  ta from an open 
14c00 62 6c 6f 62 2d 68 61 6e 64 6c 65 20 69 6e 74 6f  blob-handle into
14c10 0a 2a 2a 20 61 20 75 73 65 72 20 73 75 70 70 6c  .** a user suppl
14c20 69 65 64 20 62 75 66 66 65 72 2e 20 6e 20 62 79  ied buffer. n by
14c30 74 65 73 20 6f 66 20 64 61 74 61 20 61 72 65 20  tes of data are 
14c40 63 6f 70 69 65 64 20 66 72 6f 6d 20 74 68 65 20  copied from the 
14c50 62 75 66 66 65 72 0a 2a 2a 20 70 6f 69 6e 74 65  buffer.** pointe
14c60 64 20 74 6f 20 62 79 20 7a 20 69 6e 74 6f 20 74  d to by z into t
14c70 68 65 20 6f 70 65 6e 20 62 6c 6f 62 2c 20 73 74  he open blob, st
14c80 61 72 74 69 6e 67 20 61 74 20 6f 66 66 73 65 74  arting at offset
14c90 20 69 4f 66 66 73 65 74 2e 0a 2a 2a 0a 2a 2a 20   iOffset..**.** 
14ca0 49 66 20 74 68 65 20 62 6c 6f 62 2d 68 61 6e 64  If the blob-hand
14cb0 6c 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  le passed as the
14cc0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
14cd0 77 61 73 20 6e 6f 74 20 6f 70 65 6e 65 64 20 66  was not opened f
14ce0 6f 72 0a 2a 2a 20 77 72 69 74 69 6e 67 20 28 74  or.** writing (t
14cf0 68 65 20 66 6c 61 67 73 20 70 61 72 61 6d 65 74  he flags paramet
14d00 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 6c  er to sqlite3_bl
14d10 6f 62 5f 6f 70 65 6e 20 77 61 73 20 7a 65 72 6f  ob_open was zero
14d20 29 2c 20 74 68 69 73 0a 2a 2a 20 66 75 6e 63 74  ), this.** funct
14d30 69 6f 6e 20 72 65 74 75 72 6e 73 20 53 51 4c 49  ion returns SQLI
14d40 54 45 5f 52 45 41 44 4f 4e 4c 59 2e 0a 2a 2a 0a  TE_READONLY..**.
14d50 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  ** This function
14d60 20 6d 61 79 20 6f 6e 6c 79 20 6d 6f 64 69 66 79   may only modify
14d70 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66   the contents of
14d80 20 74 68 65 20 62 6c 6f 62 2c 20 69 74 20 69 73   the blob, it is
14d90 0a 2a 2a 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65  .** not possible
14da0 20 74 6f 20 69 6e 63 72 65 61 73 65 20 74 68 65   to increase the
14db0 20 73 69 7a 65 20 6f 66 20 61 20 62 6c 6f 62 20   size of a blob 
14dc0 75 73 69 6e 67 20 74 68 69 73 20 41 50 49 2e 20  using this API. 
14dd0 49 66 0a 2a 2a 20 6f 66 66 73 65 74 20 69 4f 66  If.** offset iOf
14de0 66 73 65 74 20 69 73 20 6c 65 73 73 20 74 68 61  fset is less tha
14df0 6e 20 6e 20 62 79 74 65 73 20 66 72 6f 6d 20 74  n n bytes from t
14e00 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 6c  he end of the bl
14e10 6f 62 2c 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 45  ob, .** SQLITE_E
14e20 52 52 4f 52 20 69 73 20 72 65 74 75 72 6e 65 64  RROR is returned
14e30 20 61 6e 64 20 6e 6f 20 64 61 74 61 20 69 73 20   and no data is 
14e40 77 72 69 74 74 65 6e 2e 0a 2a 2a 0a 2a 2a 20 4f  written..**.** O
14e50 6e 20 73 75 63 63 65 73 73 2c 20 53 51 4c 49 54  n success, SQLIT
14e60 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e 65 64  E_OK is returned
14e70 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 61 6e 20  . Otherwise, an 
14e80 53 51 4c 69 74 65 20 65 72 72 6f 72 20 0a 2a 2a  SQLite error .**
14e90 20 63 6f 64 65 2e 20 49 66 20 61 6e 20 65 72 72   code. If an err
14ea0 6f 72 20 6f 63 63 75 72 73 2c 20 74 68 69 73 20  or occurs, this 
14eb0 66 75 6e 63 74 69 6f 6e 20 73 65 74 73 20 74 68  function sets th
14ec0 65 20 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  e .*/.int sqlite
14ed0 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28 73 71 6c  3_blob_write(sql
14ee0 69 74 65 33 5f 62 6c 6f 62 20 2a 2c 20 63 6f 6e  ite3_blob *, con
14ef0 73 74 20 76 6f 69 64 20 2a 7a 2c 20 69 6e 74 20  st void *z, int 
14f00 6e 2c 20 69 6e 74 20 69 4f 66 66 73 65 74 29 3b  n, int iOffset);
14f10 0a 0a 2f 2a 0a 2a 2a 20 55 6e 64 6f 20 74 68 65  ../*.** Undo the
14f20 20 68 61 63 6b 20 74 68 61 74 20 63 6f 6e 76 65   hack that conve
14f30 72 74 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  rts floating poi
14f40 6e 74 20 74 79 70 65 73 20 74 6f 20 69 6e 74 65  nt types to inte
14f50 67 65 72 20 66 6f 72 0a 2a 2a 20 62 75 69 6c 64  ger for.** build
14f60 73 20 6f 6e 20 70 72 6f 63 65 73 73 6f 72 73 20  s on processors 
14f70 77 69 74 68 6f 75 74 20 66 6c 6f 61 74 69 6e 67  without floating
14f80 20 70 6f 69 6e 74 20 73 75 70 70 6f 72 74 2e 0a   point support..
14f90 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  */.#ifdef SQLITE
14fa0 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50  _OMIT_FLOATING_P
14fb0 4f 49 4e 54 0a 23 20 75 6e 64 65 66 20 64 6f 75  OINT.# undef dou
14fc0 62 6c 65 0a 23 65 6e 64 69 66 0a 0a 23 69 66 64  ble.#endif..#ifd
14fd0 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 7d  ef __cplusplus.}
14fe0 20 20 2f 2a 20 45 6e 64 20 6f 66 20 74 68 65 20    /* End of the 
14ff0 27 65 78 74 65 72 6e 20 22 43 22 27 20 62 6c 6f  'extern "C"' blo
15000 63 6b 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 65 6e  ck */.#endif.#en
15010 64 69 66 0a                                      dif.