System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 220899a71daa1bdd9d915fb37f028ed3df9a488a:


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 33  (#) $Id: sqlite3
01f0: 2e 68 2c 76 20 31 2e 38 20 32 30 30 35 2f 30 38  .h,v 1.8 2005/08
0200: 2f 32 38 20 31 36 3a 34 30 3a 32 34 20 72 6d 73  /28 16:40:24 rms
0210: 69 6d 70 73 6f 6e 20 45 78 70 20 24 0a 2a 2f 0a  impson Exp $.*/.
0220: 23 69 66 6e 64 65 66 20 5f 53 51 4c 49 54 45 33  #ifndef _SQLITE3
0230: 5f 48 5f 0a 23 64 65 66 69 6e 65 20 5f 53 51 4c  _H_.#define _SQL
0240: 49 54 45 33 5f 48 5f 0a 23 69 6e 63 6c 75 64 65  ITE3_H_.#include
0250: 20 3c 73 74 64 61 72 67 2e 68 3e 20 20 20 20 20   <stdarg.h>     
0260: 2f 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 74 68  /* Needed for th
0270: 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20  e definition of 
0280: 76 61 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a 0a 2a  va_list */../*.*
0290: 2a 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 63  * Make sure we c
02a0: 61 6e 20 63 61 6c 6c 20 74 68 69 73 20 73 74 75  an call this stu
02b0: 66 66 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a 2f 0a  ff from C++..*/.
02c0: 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c  #ifdef __cpluspl
02d0: 75 73 0a 65 78 74 65 72 6e 20 22 43 22 20 7b 0a  us.extern "C" {.
02e0: 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54 68  #endif../*.** Th
02f0: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
0300: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
0310: 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54  .*/.#ifdef SQLIT
0320: 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64 65  E_VERSION.# unde
0330: 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  f SQLITE_VERSION
0340: 0a 23 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20  .#endif.#define 
0350: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20 20  SQLITE_VERSION  
0360: 20 20 20 20 20 20 20 22 33 2e 32 2e 35 22 0a 0a         "3.2.5"..
0370: 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 72 6d 61 74  /*.** The format
0380: 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f 6e 20   of the version 
0390: 73 74 72 69 6e 67 20 69 73 20 22 58 2e 59 2e 5a  string is "X.Y.Z
03a0: 3c 74 72 61 69 6c 69 6e 67 20 73 74 72 69 6e 67  <trailing string
03b0: 3e 22 2c 20 77 68 65 72 65 0a 2a 2a 20 58 20 69  >", where.** X i
03c0: 73 20 74 68 65 20 6d 61 6a 6f 72 20 76 65 72 73  s the major vers
03d0: 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 59 20 69 73  ion number, Y is
03e0: 20 74 68 65 20 6d 69 6e 6f 72 20 76 65 72 73 69   the minor versi
03f0: 6f 6e 20 6e 75 6d 62 65 72 20 61 6e 64 20 5a 0a  on number and Z.
0400: 2a 2a 20 69 73 20 74 68 65 20 72 65 6c 65 61 73  ** is the releas
0410: 65 20 6e 75 6d 62 65 72 2e 20 54 68 65 20 74 72  e number. The tr
0420: 61 69 6c 69 6e 67 20 73 74 72 69 6e 67 20 69 73  ailing string is
0430: 20 6f 66 74 65 6e 20 22 61 6c 70 68 61 22 20 6f   often "alpha" o
0440: 72 20 22 62 65 74 61 22 2e 0a 2a 2a 20 46 6f 72  r "beta"..** For
0450: 20 65 78 61 6d 70 6c 65 20 22 33 2e 31 2e 31 62   example "3.1.1b
0460: 65 74 61 22 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eta"..**.** The 
0470: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e  SQLITE_VERSION_N
0480: 55 4d 42 45 52 20 69 73 20 61 6e 20 69 6e 74 65  UMBER is an inte
0490: 67 65 72 20 77 69 74 68 20 74 68 65 20 76 61 6c  ger with the val
04a0: 75 65 20 0a 2a 2a 20 28 58 2a 31 30 30 30 30 30  ue .** (X*100000
04b0: 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a 29 2e 20   + Y*1000 + Z). 
04c0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 66 6f 72  For example, for
04d0: 20 76 65 72 73 69 6f 6e 20 22 33 2e 31 2e 31 62   version "3.1.1b
04e0: 65 74 61 22 2c 20 0a 2a 2a 20 53 51 4c 49 54 45  eta", .** SQLITE
04f0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20  _VERSION_NUMBER 
0500: 69 73 20 73 65 74 20 74 6f 20 33 30 30 31 30 30  is set to 300100
0510: 31 2e 20 54 6f 20 64 65 74 65 63 74 20 69 66 20  1. To detect if 
0520: 74 68 65 79 20 61 72 65 20 75 73 69 6e 67 20 0a  they are using .
0530: 2a 2a 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 31  ** version 3.1.1
0540: 20 6f 72 20 67 72 65 61 74 65 72 20 61 74 20 63   or greater at c
0550: 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 20 70 72 6f  ompile time, pro
0560: 67 72 61 6d 73 20 6d 61 79 20 75 73 65 20 74 68  grams may use th
0570: 65 20 74 65 73 74 20 0a 2a 2a 20 28 53 51 4c 49  e test .** (SQLI
0580: 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45  TE_VERSION_NUMBE
0590: 52 3e 3d 33 30 30 31 30 30 31 29 2e 0a 2a 2f 0a  R>=3001001)..*/.
05a0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 56 45  #ifdef SQLITE_VE
05b0: 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 20 75  RSION_NUMBER.# u
05c0: 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53  ndef SQLITE_VERS
05d0: 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 65 6e 64 69  ION_NUMBER.#endi
05e0: 66 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  f.#define SQLITE
05f0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20  _VERSION_NUMBER 
0600: 33 30 30 32 30 30 35 0a 0a 2f 2a 0a 2a 2a 20 54  3002005../*.** T
0610: 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e  he version strin
0620: 67 20 69 73 20 61 6c 73 6f 20 63 6f 6d 70 69 6c  g is also compil
0630: 65 64 20 69 6e 74 6f 20 74 68 65 20 6c 69 62 72  ed into the libr
0640: 61 72 79 20 73 6f 20 74 68 61 74 20 61 20 70 72  ary so that a pr
0650: 6f 67 72 61 6d 0a 2a 2a 20 63 61 6e 20 63 68 65  ogram.** can che
0660: 63 6b 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20  ck to make sure 
0670: 74 68 61 74 20 74 68 65 20 6c 69 62 2a 2e 61 20  that the lib*.a 
0680: 66 69 6c 65 20 61 6e 64 20 74 68 65 20 2a 2e 68  file and the *.h
0690: 20 66 69 6c 65 20 61 72 65 20 66 72 6f 6d 0a 2a   file are from.*
06a0: 2a 20 74 68 65 20 73 61 6d 65 20 76 65 72 73 69  * the same versi
06b0: 6f 6e 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33  on.  The sqlite3
06c0: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 20 66 75  _libversion() fu
06d0: 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
06e0: 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 74   pointer.** to t
06f0: 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72 73 69  he sqlite3_versi
0700: 6f 6e 20 76 61 72 69 61 62 6c 65 20 2d 20 75 73  on variable - us
0710: 65 66 75 6c 20 69 6e 20 44 4c 4c 73 20 77 68 69  eful in DLLs whi
0720: 63 68 20 63 61 6e 6e 6f 74 20 61 63 63 65 73 73  ch cannot access
0730: 0a 2a 2a 20 67 6c 6f 62 61 6c 20 76 61 72 69 61  .** global varia
0740: 62 6c 65 73 2e 0a 2a 2f 0a 65 78 74 65 72 6e 20  bles..*/.extern 
0750: 63 6f 6e 73 74 20 63 68 61 72 20 73 71 6c 69 74  const char sqlit
0760: 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 3b 0a 63 6f  e3_version[];.co
0770: 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
0780: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 76 6f 69  3_libversion(voi
0790: 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72  d);../*.** Retur
07a0: 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  n the value of t
07b0: 68 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  he SQLITE_VERSIO
07c0: 4e 5f 4e 55 4d 42 45 52 20 6d 61 63 72 6f 20 77  N_NUMBER macro w
07d0: 68 65 6e 20 74 68 65 0a 2a 2a 20 6c 69 62 72 61  hen the.** libra
07e0: 72 79 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 2e  ry was compiled.
07f0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
0800: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
0810: 72 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20  r(void);../*.** 
0820: 45 61 63 68 20 6f 70 65 6e 20 73 71 6c 69 74 65  Each open sqlite
0830: 20 64 61 74 61 62 61 73 65 20 69 73 20 72 65 70   database is rep
0840: 72 65 73 65 6e 74 65 64 20 62 79 20 61 6e 20 69  resented by an i
0850: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 0a 2a  nstance of the.*
0860: 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 61 71  * following opaq
0870: 75 65 20 73 74 72 75 63 74 75 72 65 2e 0a 2a 2f  ue structure..*/
0880: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
0890: 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 3b  sqlite3 sqlite3;
08a0: 0a 0a 0a 2f 2a 0a 2a 2a 20 53 6f 6d 65 20 63 6f  .../*.** Some co
08b0: 6d 70 69 6c 65 72 73 20 64 6f 20 6e 6f 74 20 73  mpilers do not s
08c0: 75 70 70 6f 72 74 20 74 68 65 20 22 6c 6f 6e 67  upport the "long
08d0: 20 6c 6f 6e 67 22 20 64 61 74 61 74 79 70 65 2e   long" datatype.
08e0: 20 20 53 6f 20 77 65 20 68 61 76 65 0a 2a 2a 20    So we have.** 
08f0: 74 6f 20 64 6f 20 61 20 74 79 70 65 64 65 66 20  to do a typedef 
0900: 74 68 61 74 20 66 6f 72 20 36 34 2d 62 69 74 20  that for 64-bit 
0910: 69 6e 74 65 67 65 72 73 20 74 68 61 74 20 64 65  integers that de
0920: 70 65 6e 64 73 20 6f 6e 20 77 68 61 74 20 63 6f  pends on what co
0930: 6d 70 69 6c 65 72 0a 2a 2a 20 69 73 20 62 65 69  mpiler.** is bei
0940: 6e 67 20 75 73 65 64 2e 0a 2a 2f 0a 23 69 66 20  ng used..*/.#if 
0950: 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52  defined(_MSC_VER
0960: 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 42  ) || defined(__B
0970: 4f 52 4c 41 4e 44 43 5f 5f 29 0a 20 20 74 79 70  ORLANDC__).  typ
0980: 65 64 65 66 20 5f 5f 69 6e 74 36 34 20 73 71 6c  edef __int64 sql
0990: 69 74 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79 70  ite_int64;.  typ
09a0: 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20 5f 5f  edef unsigned __
09b0: 69 6e 74 36 34 20 73 71 6c 69 74 65 5f 75 69 6e  int64 sqlite_uin
09c0: 74 36 34 3b 0a 23 65 6c 73 65 0a 20 20 74 79 70  t64;.#else.  typ
09d0: 65 64 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20 69  edef long long i
09e0: 6e 74 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b  nt sqlite_int64;
09f0: 0a 20 20 74 79 70 65 64 65 66 20 75 6e 73 69 67  .  typedef unsig
0a00: 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e  ned long long in
0a10: 74 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b  t sqlite_uint64;
0a20: 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 2a 2a 20  .#endif.../*.** 
0a30: 41 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6c  A function to cl
0a40: 6f 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ose the database
0a50: 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 20 74 68 69  ..**.** Call thi
0a60: 73 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20  s function with 
0a70: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73  a pointer to a s
0a80: 74 72 75 63 74 75 72 65 20 74 68 61 74 20 77 61  tructure that wa
0a90: 73 20 70 72 65 76 69 6f 75 73 6c 79 0a 2a 2a 20  s previously.** 
0aa0: 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 73 71  returned from sq
0ab0: 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64  lite3_open() and
0ac0: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
0ad0: 6e 67 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c  ng database will
0ae0: 20 62 79 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a   by closed..**.*
0af0: 2a 20 41 6c 6c 20 53 51 4c 20 73 74 61 74 65 6d  * All SQL statem
0b00: 65 6e 74 73 20 70 72 65 70 61 72 65 64 20 75 73  ents prepared us
0b10: 69 6e 67 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ing sqlite3_prep
0b20: 61 72 65 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69  are() or.** sqli
0b30: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 20  te3_prepare16() 
0b40: 6d 75 73 74 20 62 65 20 64 65 61 6c 6c 6f 63 61  must be dealloca
0b50: 74 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74 65  ted using sqlite
0b60: 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 62 65 66  3_finalize() bef
0b70: 6f 72 65 0a 2a 2a 20 74 68 69 73 20 72 6f 75 74  ore.** this rout
0b80: 69 6e 65 20 69 73 20 63 61 6c 6c 65 64 2e 20 4f  ine is called. O
0b90: 74 68 65 72 77 69 73 65 2c 20 53 51 4c 49 54 45  therwise, SQLITE
0ba0: 5f 42 55 53 59 20 69 73 20 72 65 74 75 72 6e 65  _BUSY is returne
0bb0: 64 20 61 6e 64 20 74 68 65 0a 2a 2a 20 64 61 74  d and the.** dat
0bc0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
0bd0: 20 72 65 6d 61 69 6e 73 20 6f 70 65 6e 2e 0a 2a   remains open..*
0be0: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c  /.int sqlite3_cl
0bf0: 6f 73 65 28 73 71 6c 69 74 65 33 20 2a 29 3b 0a  ose(sqlite3 *);.
0c00: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 74 79 70 65 20  ./*.** The type 
0c10: 66 6f 72 20 61 20 63 61 6c 6c 62 61 63 6b 20 66  for a callback f
0c20: 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 74 79 70 65  unction..*/.type
0c30: 64 65 66 20 69 6e 74 20 28 2a 73 71 6c 69 74 65  def int (*sqlite
0c40: 33 5f 63 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64  3_callback)(void
0c50: 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a 2c 20 63 68  *,int,char**, ch
0c60: 61 72 2a 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 20  ar**);../*.** A 
0c70: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 65 78 65 63  function to exec
0c80: 75 74 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  utes one or more
0c90: 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 66 20 53   statements of S
0ca0: 51 4c 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 6f 6e 65  QL..**.** If one
0cb0: 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20   or more of the 
0cc0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61  SQL statements a
0cd0: 72 65 20 71 75 65 72 69 65 73 2c 20 74 68 65 6e  re queries, then
0ce0: 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  .** the callback
0cf0: 20 66 75 6e 63 74 69 6f 6e 20 73 70 65 63 69 66   function specif
0d00: 69 65 64 20 62 79 20 74 68 65 20 33 72 64 20 70  ied by the 3rd p
0d10: 61 72 61 6d 65 74 65 72 20 69 73 0a 2a 2a 20 69  arameter is.** i
0d20: 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20  nvoked once for 
0d30: 65 61 63 68 20 72 6f 77 20 6f 66 20 74 68 65 20  each row of the 
0d40: 71 75 65 72 79 20 72 65 73 75 6c 74 2e 20 20 54  query result.  T
0d50: 68 69 73 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  his callback.** 
0d60: 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20  should normally 
0d70: 72 65 74 75 72 6e 20 30 2e 20 20 49 66 20 74 68  return 0.  If th
0d80: 65 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72  e callback retur
0d90: 6e 73 20 61 20 6e 6f 6e 2d 7a 65 72 6f 0a 2a 2a  ns a non-zero.**
0da0: 20 76 61 6c 75 65 20 74 68 65 6e 20 74 68 65 20   value then the 
0db0: 71 75 65 72 79 20 69 73 20 61 62 6f 72 74 65 64  query is aborted
0dc0: 2c 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  , all subsequent
0dd0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a   SQL statements.
0de0: 2a 2a 20 61 72 65 20 73 6b 69 70 70 65 64 20 61  ** are skipped a
0df0: 6e 64 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65  nd the sqlite3_e
0e00: 78 65 63 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  xec() function r
0e10: 65 74 75 72 6e 73 20 74 68 65 20 53 51 4c 49 54  eturns the SQLIT
0e20: 45 5f 41 42 4f 52 54 2e 0a 2a 2a 0a 2a 2a 20 54  E_ABORT..**.** T
0e30: 68 65 20 34 74 68 20 70 61 72 61 6d 65 74 65 72  he 4th parameter
0e40: 20 69 73 20 61 6e 20 61 72 62 69 74 72 61 72 79   is an arbitrary
0e50: 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 69 73   pointer that is
0e60: 20 70 61 73 73 65 64 0a 2a 2a 20 74 6f 20 74 68   passed.** to th
0e70: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
0e80: 69 6f 6e 20 61 73 20 69 74 73 20 66 69 72 73 74  ion as its first
0e90: 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
0ea0: 2a 20 54 68 65 20 32 6e 64 20 70 61 72 61 6d 65  * The 2nd parame
0eb0: 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ter to the callb
0ec0: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  ack function is 
0ed0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a  the number of.**
0ee0: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
0ef0: 71 75 65 72 79 20 72 65 73 75 6c 74 2e 20 20 54  query result.  T
0f00: 68 65 20 33 72 64 20 70 61 72 61 6d 65 74 65 72  he 3rd parameter
0f10: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
0f20: 0a 2a 2a 20 69 73 20 61 6e 20 61 72 72 61 79 20  .** is an array 
0f30: 6f 66 20 73 74 72 69 6e 67 73 20 68 6f 6c 64 69  of strings holdi
0f40: 6e 67 20 74 68 65 20 76 61 6c 75 65 73 20 66 6f  ng the values fo
0f50: 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e 2e 0a 2a  r each column..*
0f60: 2a 20 54 68 65 20 34 74 68 20 70 61 72 61 6d 65  * The 4th parame
0f70: 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ter to the callb
0f80: 61 63 6b 20 69 73 20 61 6e 20 61 72 72 61 79 20  ack is an array 
0f90: 6f 66 20 73 74 72 69 6e 67 73 20 68 6f 6c 64 69  of strings holdi
0fa0: 6e 67 0a 2a 2a 20 74 68 65 20 6e 61 6d 65 73 20  ng.** the names 
0fb0: 6f 66 20 65 61 63 68 20 63 6f 6c 75 6d 6e 2e 0a  of each column..
0fc0: 2a 2a 0a 2a 2a 20 54 68 65 20 63 61 6c 6c 62 61  **.** The callba
0fd0: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20  ck function may 
0fe0: 62 65 20 4e 55 4c 4c 2c 20 65 76 65 6e 20 66 6f  be NULL, even fo
0ff0: 72 20 71 75 65 72 69 65 73 2e 20 20 41 20 4e 55  r queries.  A NU
1000: 4c 4c 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69  LL.** callback i
1010: 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 2e 20  s not an error. 
1020: 20 49 74 20 6a 75 73 74 20 6d 65 61 6e 73 20 74   It just means t
1030: 68 61 74 20 6e 6f 20 63 61 6c 6c 62 61 63 6b 0a  hat no callback.
1040: 2a 2a 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b  ** will be invok
1050: 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20  ed..**.** If an 
1060: 65 72 72 6f 72 20 6f 63 63 75 72 73 20 77 68 69  error occurs whi
1070: 6c 65 20 70 61 72 73 69 6e 67 20 6f 72 20 65 76  le parsing or ev
1080: 61 6c 75 61 74 69 6e 67 20 74 68 65 20 53 51 4c  aluating the SQL
1090: 20 28 62 75 74 0a 2a 2a 20 6e 6f 74 20 77 68 69   (but.** not whi
10a0: 6c 65 20 65 78 65 63 75 74 69 6e 67 20 74 68 65  le executing the
10b0: 20 63 61 6c 6c 62 61 63 6b 29 20 74 68 65 6e 20   callback) then 
10c0: 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 65  an appropriate e
10d0: 72 72 6f 72 0a 2a 2a 20 6d 65 73 73 61 67 65 20  rror.** message 
10e0: 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20  is written into 
10f0: 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20  memory obtained 
1100: 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 20 61 6e  from malloc() an
1110: 64 0a 2a 2a 20 2a 65 72 72 6d 73 67 20 69 73 20  d.** *errmsg is 
1120: 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f  made to point to
1130: 20 74 68 61 74 20 6d 65 73 73 61 67 65 2e 20 20   that message.  
1140: 54 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63  The calling func
1150: 74 69 6f 6e 0a 2a 2a 20 69 73 20 72 65 73 70 6f  tion.** is respo
1160: 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69  nsible for freei
1170: 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 74 68  ng the memory th
1180: 61 74 20 68 6f 6c 64 73 20 74 68 65 20 65 72 72  at holds the err
1190: 6f 72 0a 2a 2a 20 6d 65 73 73 61 67 65 2e 20 20  or.** message.  
11a0: 20 55 73 65 20 73 71 6c 69 74 65 33 5f 66 72 65   Use sqlite3_fre
11b0: 65 28 29 20 66 6f 72 20 74 68 69 73 2e 20 20 49  e() for this.  I
11c0: 66 20 65 72 72 6d 73 67 3d 3d 4e 55 4c 4c 2c 0a  f errmsg==NULL,.
11d0: 2a 2a 20 74 68 65 6e 20 6e 6f 20 65 72 72 6f 72  ** then no error
11e0: 20 6d 65 73 73 61 67 65 20 69 73 20 65 76 65 72   message is ever
11f0: 20 77 72 69 74 74 65 6e 2e 0a 2a 2a 0a 2a 2a 20   written..**.** 
1200: 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65  The return value
1210: 20 69 73 20 69 73 20 53 51 4c 49 54 45 5f 4f 4b   is is SQLITE_OK
1220: 20 69 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f   if there are no
1230: 20 65 72 72 6f 72 73 20 61 6e 64 0a 2a 2a 20 73   errors and.** s
1240: 6f 6d 65 20 6f 74 68 65 72 20 72 65 74 75 72 6e  ome other return
1250: 20 63 6f 64 65 20 69 66 20 74 68 65 72 65 20 69   code if there i
1260: 73 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 65  s an error.  The
1270: 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20 72   particular.** r
1280: 65 74 75 72 6e 20 76 61 6c 75 65 20 64 65 70 65  eturn value depe
1290: 6e 64 73 20 6f 6e 20 74 68 65 20 74 79 70 65 20  nds on the type 
12a0: 6f 66 20 65 72 72 6f 72 2e 20 0a 2a 2a 0a 2a 2a  of error. .**.**
12b0: 20 49 66 20 74 68 65 20 71 75 65 72 79 20 63 6f   If the query co
12c0: 75 6c 64 20 6e 6f 74 20 62 65 20 65 78 65 63 75  uld not be execu
12d0: 74 65 64 20 62 65 63 61 75 73 65 20 61 20 64 61  ted because a da
12e0: 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 0a 2a  tabase file is.*
12f0: 2a 20 6c 6f 63 6b 65 64 20 6f 72 20 62 75 73 79  * locked or busy
1300: 2c 20 74 68 65 6e 20 74 68 69 73 20 66 75 6e 63  , then this func
1310: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 53 51 4c  tion returns SQL
1320: 49 54 45 5f 42 55 53 59 2e 20 20 28 54 68 69 73  ITE_BUSY.  (This
1330: 0a 2a 2a 20 62 65 68 61 76 69 6f 72 20 63 61 6e  .** behavior can
1340: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 73 6f 6d   be modified som
1350: 65 77 68 61 74 20 75 73 69 6e 67 20 74 68 65 20  ewhat using the 
1360: 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e  sqlite3_busy_han
1370: 64 6c 65 72 28 29 0a 2a 2a 20 61 6e 64 20 73 71  dler().** and sq
1380: 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
1390: 75 74 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 62  ut() functions b
13a0: 65 6c 6f 77 2e 29 0a 2a 2f 0a 69 6e 74 20 73 71  elow.).*/.int sq
13b0: 6c 69 74 65 33 5f 65 78 65 63 28 0a 20 20 73 71  lite3_exec(.  sq
13c0: 6c 69 74 65 33 2a 2c 20 20 20 20 20 20 20 20 20  lite3*,         
13d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41              /* A
13e0: 6e 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20  n open database 
13f0: 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  */.  const char 
1400: 2a 73 71 6c 2c 20 20 20 20 20 20 20 20 20 20 20  *sql,           
1410: 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20 62 65 20     /* SQL to be 
1420: 65 78 65 63 75 74 65 64 20 2a 2f 0a 20 20 73 71  executed */.  sq
1430: 6c 69 74 65 33 5f 63 61 6c 6c 62 61 63 6b 2c 20  lite3_callback, 
1440: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 43              /* C
1450: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
1460: 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c 20 20 20   */.  void *,   
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1480: 20 20 20 20 2f 2a 20 31 73 74 20 61 72 67 75 6d      /* 1st argum
1490: 65 6e 74 20 74 6f 20 63 61 6c 6c 62 61 63 6b 20  ent to callback 
14a0: 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 63 68  function */.  ch
14b0: 61 72 20 2a 2a 65 72 72 6d 73 67 20 20 20 20 20  ar **errmsg     
14c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45              /* E
14d0: 72 72 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e  rror msg written
14e0: 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a   here */.);../*.
14f0: 2a 2a 20 52 65 74 75 72 6e 20 76 61 6c 75 65 73  ** Return values
1500: 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 65 78 65   for sqlite3_exe
1510: 63 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  c() and sqlite3_
1520: 73 74 65 70 28 29 0a 2a 2f 0a 23 64 65 66 69 6e  step().*/.#defin
1530: 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20 20  e SQLITE_OK     
1540: 20 20 20 20 20 20 30 20 20 20 2f 2a 20 53 75 63        0   /* Suc
1550: 63 65 73 73 66 75 6c 20 72 65 73 75 6c 74 20 2a  cessful result *
1560: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1570: 5f 45 52 52 4f 52 20 20 20 20 20 20 20 20 31 20  _ERROR        1 
1580: 20 20 2f 2a 20 53 51 4c 20 65 72 72 6f 72 20 6f    /* SQL error o
1590: 72 20 6d 69 73 73 69 6e 67 20 64 61 74 61 62 61  r missing databa
15a0: 73 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  se */.#define SQ
15b0: 4c 49 54 45 5f 49 4e 54 45 52 4e 41 4c 20 20 20  LITE_INTERNAL   
15c0: 20 20 32 20 20 20 2f 2a 20 4e 4f 54 20 55 53 45    2   /* NOT USE
15d0: 44 2e 20 49 6e 74 65 72 6e 61 6c 20 6c 6f 67 69  D. Internal logi
15e0: 63 20 65 72 72 6f 72 20 69 6e 20 53 51 4c 69 74  c error in SQLit
15f0: 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
1600: 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20 20  ITE_PERM        
1610: 20 33 20 20 20 2f 2a 20 41 63 63 65 73 73 20 70   3   /* Access p
1620: 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64  ermission denied
1630: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1640: 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20 20  TE_ABORT        
1650: 34 20 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20  4   /* Callback 
1660: 72 6f 75 74 69 6e 65 20 72 65 71 75 65 73 74 65  routine requeste
1670: 64 20 61 6e 20 61 62 6f 72 74 20 2a 2f 0a 23 64  d an abort */.#d
1680: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55 53  efine SQLITE_BUS
1690: 59 20 20 20 20 20 20 20 20 20 35 20 20 20 2f 2a  Y         5   /*
16a0: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 66 69   The database fi
16b0: 6c 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a  le is locked */.
16c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
16d0: 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20 20 20  OCKED       6   
16e0: 2f 2a 20 41 20 74 61 62 6c 65 20 69 6e 20 74 68  /* A table in th
16f0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6c 6f  e database is lo
1700: 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  cked */.#define 
1710: 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20 20 20  SQLITE_NOMEM    
1720: 20 20 20 20 37 20 20 20 2f 2a 20 41 20 6d 61 6c      7   /* A mal
1730: 6c 6f 63 28 29 20 66 61 69 6c 65 64 20 2a 2f 0a  loc() failed */.
1740: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
1750: 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20 20 20  EADONLY     8   
1760: 2f 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 77 72  /* Attempt to wr
1770: 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 64  ite a readonly d
1780: 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66 69  atabase */.#defi
1790: 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 52  ne SQLITE_INTERR
17a0: 55 50 54 20 20 20 20 39 20 20 20 2f 2a 20 4f 70  UPT    9   /* Op
17b0: 65 72 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61 74  eration terminat
17c0: 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69 6e  ed by sqlite3_in
17d0: 74 65 72 72 75 70 74 28 29 2a 2f 0a 23 64 65 66  terrupt()*/.#def
17e0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
17f0: 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 53         10   /* S
1800: 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 64 69 73 6b  ome kind of disk
1810: 20 49 2f 4f 20 65 72 72 6f 72 20 6f 63 63 75 72   I/O error occur
1820: 72 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  red */.#define S
1830: 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20  QLITE_CORRUPT   
1840: 20 20 31 31 20 20 20 2f 2a 20 54 68 65 20 64 61    11   /* The da
1850: 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61 67  tabase disk imag
1860: 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 20 2a  e is malformed *
1870: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1880: 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31 32 20  _NOTFOUND    12 
1890: 20 20 2f 2a 20 4e 4f 54 20 55 53 45 44 2e 20 54    /* NOT USED. T
18a0: 61 62 6c 65 20 6f 72 20 72 65 63 6f 72 64 20 6e  able or record n
18b0: 6f 74 20 66 6f 75 6e 64 20 2a 2f 0a 23 64 65 66  ot found */.#def
18c0: 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20  ine SQLITE_FULL 
18d0: 20 20 20 20 20 20 20 31 33 20 20 20 2f 2a 20 49         13   /* I
18e0: 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c 65 64 20  nsertion failed 
18f0: 62 65 63 61 75 73 65 20 64 61 74 61 62 61 73 65  because database
1900: 20 69 73 20 66 75 6c 6c 20 2a 2f 0a 23 64 65 66   is full */.#def
1910: 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f  ine SQLITE_CANTO
1920: 50 45 4e 20 20 20 20 31 34 20 20 20 2f 2a 20 55  PEN    14   /* U
1930: 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 74 68  nable to open th
1940: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
1950: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1960: 45 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 31 35  E_PROTOCOL    15
1970: 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 6c     /* Database l
1980: 6f 63 6b 20 70 72 6f 74 6f 63 6f 6c 20 65 72 72  ock protocol err
1990: 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  or */.#define SQ
19a0: 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20 20  LITE_EMPTY      
19b0: 20 31 36 20 20 20 2f 2a 20 44 61 74 61 62 61 73   16   /* Databas
19c0: 65 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a 23 64  e is empty */.#d
19d0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 43 48  efine SQLITE_SCH
19e0: 45 4d 41 20 20 20 20 20 20 31 37 20 20 20 2f 2a  EMA      17   /*
19f0: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 73 63   The database sc
1a00: 68 65 6d 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a  hema changed */.
1a10: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
1a20: 4f 4f 42 49 47 20 20 20 20 20 20 31 38 20 20 20  OOBIG      18   
1a30: 2f 2a 20 4e 4f 54 20 55 53 45 44 2e 20 54 6f 6f  /* NOT USED. Too
1a40: 20 6d 75 63 68 20 64 61 74 61 20 66 6f 72 20 6f   much data for o
1a50: 6e 65 20 72 6f 77 20 2a 2f 0a 23 64 65 66 69 6e  ne row */.#defin
1a60: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
1a70: 49 4e 54 20 20 31 39 20 20 20 2f 2a 20 41 62 6f  INT  19   /* Abo
1a80: 72 74 20 64 75 65 20 74 6f 20 63 6f 6e 74 72 61  rt due to contra
1a90: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f  int violation */
1aa0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1ab0: 4d 49 53 4d 41 54 43 48 20 20 20 20 32 30 20 20  MISMATCH    20  
1ac0: 20 2f 2a 20 44 61 74 61 20 74 79 70 65 20 6d 69   /* Data type mi
1ad0: 73 6d 61 74 63 68 20 2a 2f 0a 23 64 65 66 69 6e  smatch */.#defin
1ae0: 65 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20  e SQLITE_MISUSE 
1af0: 20 20 20 20 20 32 31 20 20 20 2f 2a 20 4c 69 62       21   /* Lib
1b00: 72 61 72 79 20 75 73 65 64 20 69 6e 63 6f 72 72  rary used incorr
1b10: 65 63 74 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65  ectly */.#define
1b20: 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20   SQLITE_NOLFS   
1b30: 20 20 20 20 32 32 20 20 20 2f 2a 20 55 73 65 73      22   /* Uses
1b40: 20 4f 53 20 66 65 61 74 75 72 65 73 20 6e 6f 74   OS features not
1b50: 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 68 6f   supported on ho
1b60: 73 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  st */.#define SQ
1b70: 4c 49 54 45 5f 41 55 54 48 20 20 20 20 20 20 20  LITE_AUTH       
1b80: 20 32 33 20 20 20 2f 2a 20 41 75 74 68 6f 72 69   23   /* Authori
1b90: 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 20 2a 2f  zation denied */
1ba0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1bb0: 46 4f 52 4d 41 54 20 20 20 20 20 20 32 34 20 20  FORMAT      24  
1bc0: 20 2f 2a 20 41 75 78 69 6c 69 61 72 79 20 64 61   /* Auxiliary da
1bd0: 74 61 62 61 73 65 20 66 6f 72 6d 61 74 20 65 72  tabase format er
1be0: 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ror */.#define S
1bf0: 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20 20 20  QLITE_RANGE     
1c00: 20 20 32 35 20 20 20 2f 2a 20 32 6e 64 20 70 61    25   /* 2nd pa
1c10: 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
1c20: 65 33 5f 62 69 6e 64 20 6f 75 74 20 6f 66 20 72  e3_bind out of r
1c30: 61 6e 67 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ange */.#define 
1c40: 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20  SQLITE_NOTADB   
1c50: 20 20 20 32 36 20 20 20 2f 2a 20 46 69 6c 65 20     26   /* File 
1c60: 6f 70 65 6e 65 64 20 74 68 61 74 20 69 73 20 6e  opened that is n
1c70: 6f 74 20 61 20 64 61 74 61 62 61 73 65 20 66 69  ot a database fi
1c80: 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  le */.#define SQ
1c90: 4c 49 54 45 5f 52 4f 57 20 20 20 20 20 20 20 20  LITE_ROW        
1ca0: 20 31 30 30 20 20 2f 2a 20 73 71 6c 69 74 65 33   100  /* sqlite3
1cb0: 5f 73 74 65 70 28 29 20 68 61 73 20 61 6e 6f 74  _step() has anot
1cc0: 68 65 72 20 72 6f 77 20 72 65 61 64 79 20 2a 2f  her row ready */
1cd0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1ce0: 44 4f 4e 45 20 20 20 20 20 20 20 20 31 30 31 20  DONE        101 
1cf0: 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70   /* sqlite3_step
1d00: 28 29 20 68 61 73 20 66 69 6e 69 73 68 65 64 20  () has finished 
1d10: 65 78 65 63 75 74 69 6e 67 20 2a 2f 0a 0a 2f 2a  executing */../*
1d20: 0a 2a 2a 20 45 61 63 68 20 65 6e 74 72 79 20 69  .** Each entry i
1d30: 6e 20 61 6e 20 53 51 4c 69 74 65 20 74 61 62 6c  n an SQLite tabl
1d40: 65 20 68 61 73 20 61 20 75 6e 69 71 75 65 20 69  e has a unique i
1d50: 6e 74 65 67 65 72 20 6b 65 79 2e 20 20 28 54 68  nteger key.  (Th
1d60: 65 20 6b 65 79 20 69 73 0a 2a 2a 20 74 68 65 20  e key is.** the 
1d70: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 49 4e 54  value of the INT
1d80: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
1d90: 20 63 6f 6c 75 6d 6e 20 69 66 20 74 68 65 72 65   column if there
1da0: 20 69 73 20 73 75 63 68 20 61 20 63 6f 6c 75 6d   is such a colum
1db0: 6e 2c 0a 2a 2a 20 6f 74 68 65 72 77 69 73 65 20  n,.** otherwise 
1dc0: 74 68 65 20 6b 65 79 20 69 73 20 67 65 6e 65 72  the key is gener
1dd0: 61 74 65 64 20 61 74 20 72 61 6e 64 6f 6d 2e 20  ated at random. 
1de0: 20 54 68 65 20 75 6e 69 71 75 65 20 6b 65 79 20   The unique key 
1df0: 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20 61 76 61  is always.** ava
1e00: 69 6c 61 62 6c 65 20 61 73 20 74 68 65 20 52 4f  ilable as the RO
1e10: 57 49 44 2c 20 4f 49 44 2c 20 6f 72 20 5f 52 4f  WID, OID, or _RO
1e20: 57 49 44 5f 20 63 6f 6c 75 6d 6e 2e 29 20 20 54  WID_ column.)  T
1e30: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75  he following rou
1e40: 74 69 6e 65 0a 2a 2a 20 72 65 74 75 72 6e 73 20  tine.** returns 
1e50: 74 68 65 20 69 6e 74 65 67 65 72 20 6b 65 79 20  the integer key 
1e60: 6f 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  of the most rece
1e70: 6e 74 20 69 6e 73 65 72 74 20 69 6e 20 74 68 65  nt insert in the
1e80: 20 64 61 74 61 62 61 73 65 2e 0a 2a 2a 0a 2a 2a   database..**.**
1e90: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
1ea0: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 65  s similar to the
1eb0: 20 6d 79 73 71 6c 5f 69 6e 73 65 72 74 5f 69 64   mysql_insert_id
1ec0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d  () function from
1ed0: 20 4d 79 53 51 4c 2e 0a 2a 2f 0a 73 71 6c 69 74   MySQL..*/.sqlit
1ee0: 65 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  e_int64 sqlite3_
1ef0: 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
1f00: 64 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a  d(sqlite3*);../*
1f10: 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f  .** This functio
1f20: 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  n returns the nu
1f30: 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65  mber of database
1f40: 20 72 6f 77 73 20 74 68 61 74 20 77 65 72 65 20   rows that were 
1f50: 63 68 61 6e 67 65 64 0a 2a 2a 20 28 6f 72 20 69  changed.** (or i
1f60: 6e 73 65 72 74 65 64 20 6f 72 20 64 65 6c 65 74  nserted or delet
1f70: 65 64 29 20 62 79 20 74 68 65 20 6d 6f 73 74 20  ed) by the most 
1f80: 72 65 63 65 6e 74 20 63 61 6c 6c 65 64 20 73 71  recent called sq
1f90: 6c 69 74 65 33 5f 65 78 65 63 28 29 2e 0a 2a 2a  lite3_exec()..**
1fa0: 0a 2a 2a 20 41 6c 6c 20 63 68 61 6e 67 65 73 20  .** All changes 
1fb0: 61 72 65 20 63 6f 75 6e 74 65 64 2c 20 65 76 65  are counted, eve
1fc0: 6e 20 69 66 20 74 68 65 79 20 77 65 72 65 20 6c  n if they were l
1fd0: 61 74 65 72 20 75 6e 64 6f 6e 65 20 62 79 20 61  ater undone by a
1fe0: 0a 2a 2a 20 52 4f 4c 4c 42 41 43 4b 20 6f 72 20  .** ROLLBACK or 
1ff0: 41 42 4f 52 54 2e 20 20 45 78 63 65 70 74 2c 20  ABORT.  Except, 
2000: 63 68 61 6e 67 65 73 20 61 73 73 6f 63 69 61 74  changes associat
2010: 65 64 20 77 69 74 68 20 63 72 65 61 74 69 6e 67  ed with creating
2020: 20 61 6e 64 0a 2a 2a 20 64 72 6f 70 70 69 6e 67   and.** dropping
2030: 20 74 61 62 6c 65 73 20 61 72 65 20 6e 6f 74 20   tables are not 
2040: 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 49  counted..**.** I
2050: 66 20 61 20 63 61 6c 6c 62 61 63 6b 20 69 6e 76  f a callback inv
2060: 6f 6b 65 73 20 73 71 6c 69 74 65 33 5f 65 78 65  okes sqlite3_exe
2070: 63 28 29 20 72 65 63 75 72 73 69 76 65 6c 79 2c  c() recursively,
2080: 20 74 68 65 6e 20 74 68 65 20 63 68 61 6e 67 65   then the change
2090: 73 0a 2a 2a 20 69 6e 20 74 68 65 20 69 6e 6e 65  s.** in the inne
20a0: 72 2c 20 72 65 63 75 72 73 69 76 65 20 63 61 6c  r, recursive cal
20b0: 6c 20 61 72 65 20 63 6f 75 6e 74 65 64 20 74 6f  l are counted to
20c0: 67 65 74 68 65 72 20 77 69 74 68 20 74 68 65 20  gether with the 
20d0: 63 68 61 6e 67 65 73 0a 2a 2a 20 69 6e 20 74 68  changes.** in th
20e0: 65 20 6f 75 74 65 72 20 63 61 6c 6c 2e 0a 2a 2a  e outer call..**
20f0: 0a 2a 2a 20 53 51 4c 69 74 65 20 69 6d 70 6c 65  .** SQLite imple
2100: 6d 65 6e 74 73 20 74 68 65 20 63 6f 6d 6d 61 6e  ments the comman
2110: 64 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74  d "DELETE FROM t
2120: 61 62 6c 65 22 20 77 69 74 68 6f 75 74 20 61 20  able" without a 
2130: 57 48 45 52 45 20 63 6c 61 75 73 65 0a 2a 2a 20  WHERE clause.** 
2140: 62 79 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20  by dropping and 
2150: 72 65 63 72 65 61 74 69 6e 67 20 74 68 65 20 74  recreating the t
2160: 61 62 6c 65 2e 20 20 28 54 68 69 73 20 69 73 20  able.  (This is 
2170: 6d 75 63 68 20 66 61 73 74 65 72 20 74 68 61 6e  much faster than
2180: 20 67 6f 69 6e 67 0a 2a 2a 20 74 68 72 6f 75 67   going.** throug
2190: 68 20 61 6e 64 20 64 65 6c 65 74 69 6e 67 20 69  h and deleting i
21a0: 6e 64 69 76 69 64 75 61 6c 20 65 6c 65 6d 65 6e  ndividual elemen
21b0: 74 73 20 66 6f 72 6d 20 74 68 65 20 74 61 62 6c  ts form the tabl
21c0: 65 2e 29 20 20 42 65 63 61 75 73 65 20 6f 66 0a  e.)  Because of.
21d0: 2a 2a 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61  ** this optimiza
21e0: 74 69 6f 6e 2c 20 74 68 65 20 63 68 61 6e 67 65  tion, the change
21f0: 20 63 6f 75 6e 74 20 66 6f 72 20 22 44 45 4c 45   count for "DELE
2200: 54 45 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 77  TE FROM table" w
2210: 69 6c 6c 20 62 65 0a 2a 2a 20 7a 65 72 6f 20 72  ill be.** zero r
2220: 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65  egardless of the
2230: 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65   number of eleme
2240: 6e 74 73 20 74 68 61 74 20 77 65 72 65 20 6f 72  nts that were or
2250: 69 67 69 6e 61 6c 6c 79 20 69 6e 20 74 68 65 0a  iginally in the.
2260: 2a 2a 20 74 61 62 6c 65 2e 20 54 6f 20 67 65 74  ** table. To get
2270: 20 61 6e 20 61 63 63 75 72 61 74 65 20 63 6f 75   an accurate cou
2280: 6e 74 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72  nt of the number
2290: 20 6f 66 20 72 6f 77 73 20 64 65 6c 65 74 65 64   of rows deleted
22a0: 2c 20 75 73 65 0a 2a 2a 20 22 44 45 4c 45 54 45  , use.** "DELETE
22b0: 20 46 52 4f 4d 20 74 61 62 6c 65 20 57 48 45 52   FROM table WHER
22c0: 45 20 31 22 20 69 6e 73 74 65 61 64 2e 0a 2a 2f  E 1" instead..*/
22d0: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61  .int sqlite3_cha
22e0: 6e 67 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a  nges(sqlite3*);.
22f0: 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63  ./*.** This func
2300: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
2310: 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62   number of datab
2320: 61 73 65 20 72 6f 77 73 20 74 68 61 74 20 68 61  ase rows that ha
2330: 76 65 20 62 65 65 6e 0a 2a 2a 20 6d 6f 64 69 66  ve been.** modif
2340: 69 65 64 20 62 79 20 49 4e 53 45 52 54 2c 20 55  ied by INSERT, U
2350: 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20  PDATE or DELETE 
2360: 73 74 61 74 65 6d 65 6e 74 73 20 73 69 6e 63 65  statements since
2370: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 68 61   the database ha
2380: 6e 64 6c 65 0a 2a 2a 20 77 61 73 20 6f 70 65 6e  ndle.** was open
2390: 65 64 2e 20 54 68 69 73 20 69 6e 63 6c 75 64 65  ed. This include
23a0: 73 20 55 50 44 41 54 45 2c 20 49 4e 53 45 52 54  s UPDATE, INSERT
23b0: 20 61 6e 64 20 44 45 4c 45 54 45 20 73 74 61 74   and DELETE stat
23c0: 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65 64 0a  ements executed.
23d0: 2a 2a 20 61 73 20 70 61 72 74 20 6f 66 20 74 72  ** as part of tr
23e0: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 2e 20  igger programs. 
23f0: 41 6c 6c 20 63 68 61 6e 67 65 73 20 61 72 65 20  All changes are 
2400: 63 6f 75 6e 74 65 64 20 61 73 20 73 6f 6f 6e 20  counted as soon 
2410: 61 73 20 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d  as the.** statem
2420: 65 6e 74 20 74 68 61 74 20 6d 61 6b 65 73 20 74  ent that makes t
2430: 68 65 6d 20 69 73 20 63 6f 6d 70 6c 65 74 65 64  hem is completed
2440: 20 28 77 68 65 6e 20 74 68 65 20 73 74 61 74 65   (when the state
2450: 6d 65 6e 74 20 68 61 6e 64 6c 65 20 69 73 0a 2a  ment handle is.*
2460: 2a 20 70 61 73 73 65 64 20 74 6f 20 73 71 6c 69  * passed to sqli
2470: 74 65 33 5f 72 65 73 65 74 28 29 20 6f 72 20 73  te3_reset() or s
2480: 71 6c 69 74 65 5f 66 69 6e 61 6c 69 73 65 28 29  qlite_finalise()
2490: 29 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20  )..**.** SQLite 
24a0: 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 63  implements the c
24b0: 6f 6d 6d 61 6e 64 20 22 44 45 4c 45 54 45 20 46  ommand "DELETE F
24c0: 52 4f 4d 20 74 61 62 6c 65 22 20 77 69 74 68 6f  ROM table" witho
24d0: 75 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  ut a WHERE claus
24e0: 65 0a 2a 2a 20 62 79 20 64 72 6f 70 70 69 6e 67  e.** by dropping
24f0: 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20   and recreating 
2500: 74 68 65 20 74 61 62 6c 65 2e 20 20 28 54 68 69  the table.  (Thi
2510: 73 20 69 73 20 6d 75 63 68 20 66 61 73 74 65 72  s is much faster
2520: 20 74 68 61 6e 20 67 6f 69 6e 67 0a 2a 2a 20 74   than going.** t
2530: 68 72 6f 75 67 68 20 61 6e 64 20 64 65 6c 65 74  hrough and delet
2540: 69 6e 67 20 69 6e 64 69 76 69 64 75 61 6c 20 65  ing individual e
2550: 6c 65 6d 65 6e 74 73 20 66 6f 72 6d 20 74 68 65  lements form the
2560: 20 74 61 62 6c 65 2e 29 20 20 42 65 63 61 75 73   table.)  Becaus
2570: 65 20 6f 66 0a 2a 2a 20 74 68 69 73 20 6f 70 74  e of.** this opt
2580: 69 6d 69 7a 61 74 69 6f 6e 2c 20 74 68 65 20 63  imization, the c
2590: 68 61 6e 67 65 20 63 6f 75 6e 74 20 66 6f 72 20  hange count for 
25a0: 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 61 62  "DELETE FROM tab
25b0: 6c 65 22 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 7a  le" will be.** z
25c0: 65 72 6f 20 72 65 67 61 72 64 6c 65 73 73 20 6f  ero regardless o
25d0: 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  f the number of 
25e0: 65 6c 65 6d 65 6e 74 73 20 74 68 61 74 20 77 65  elements that we
25f0: 72 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 69 6e  re originally in
2600: 20 74 68 65 0a 2a 2a 20 74 61 62 6c 65 2e 20 54   the.** table. T
2610: 6f 20 67 65 74 20 61 6e 20 61 63 63 75 72 61 74  o get an accurat
2620: 65 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e  e count of the n
2630: 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 64 65  umber of rows de
2640: 6c 65 74 65 64 2c 20 75 73 65 0a 2a 2a 20 22 44  leted, use.** "D
2650: 45 4c 45 54 45 20 46 52 4f 4d 20 74 61 62 6c 65  ELETE FROM table
2660: 20 57 48 45 52 45 20 31 22 20 69 6e 73 74 65 61   WHERE 1" instea
2670: 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  d..*/.int sqlite
2680: 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
2690: 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 20 54  sqlite3*);../* T
26a0: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 75  his function cau
26b0: 73 65 73 20 61 6e 79 20 70 65 6e 64 69 6e 67 20  ses any pending 
26c0: 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
26d0: 6f 6e 20 74 6f 20 61 62 6f 72 74 20 61 6e 64 0a  on to abort and.
26e0: 2a 2a 20 72 65 74 75 72 6e 20 61 74 20 69 74 73  ** return at its
26f0: 20 65 61 72 6c 69 65 73 74 20 6f 70 70 6f 72 74   earliest opport
2700: 75 6e 69 74 79 2e 20 20 54 68 69 73 20 72 6f 75  unity.  This rou
2710: 74 69 6e 65 20 69 73 20 74 79 70 69 63 61 6c 6c  tine is typicall
2720: 79 0a 2a 2a 20 63 61 6c 6c 65 64 20 69 6e 20 72  y.** called in r
2730: 65 73 70 6f 6e 73 65 20 74 6f 20 61 20 75 73 65  esponse to a use
2740: 72 20 61 63 74 69 6f 6e 20 73 75 63 68 20 61 73  r action such as
2750: 20 70 72 65 73 73 69 6e 67 20 22 43 61 6e 63 65   pressing "Cance
2760: 6c 22 0a 2a 2a 20 6f 72 20 43 74 72 6c 2d 43 20  l".** or Ctrl-C 
2770: 77 68 65 72 65 20 74 68 65 20 75 73 65 72 20 77  where the user w
2780: 61 6e 74 73 20 61 20 6c 6f 6e 67 20 71 75 65 72  ants a long quer
2790: 79 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 68  y operation to h
27a0: 61 6c 74 0a 2a 2a 20 69 6d 6d 65 64 69 61 74 65  alt.** immediate
27b0: 6c 79 2e 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69  ly..*/.void sqli
27c0: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 73 71  te3_interrupt(sq
27d0: 6c 69 74 65 33 2a 29 3b 0a 0a 0a 2f 2a 20 54 68  lite3*);.../* Th
27e0: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65  ese functions re
27f0: 74 75 72 6e 20 74 72 75 65 20 69 66 20 74 68 65  turn true if the
2800: 20 67 69 76 65 6e 20 69 6e 70 75 74 20 73 74 72   given input str
2810: 69 6e 67 20 63 6f 6d 70 72 69 73 65 73 0a 2a 2a  ing comprises.**
2820: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 63 6f 6d   one or more com
2830: 70 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d  plete SQL statem
2840: 65 6e 74 73 2e 20 46 6f 72 20 74 68 65 20 73 71  ents. For the sq
2850: 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29  lite3_complete()
2860: 20 63 61 6c 6c 2c 0a 2a 2a 20 74 68 65 20 70 61   call,.** the pa
2870: 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
2880: 61 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 65 64  a nul-terminated
2890: 20 55 54 46 2d 38 20 73 74 72 69 6e 67 2e 20 46   UTF-8 string. F
28a0: 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f  or.** sqlite3_co
28b0: 6d 70 6c 65 74 65 31 36 28 29 2c 20 61 20 6e 75  mplete16(), a nu
28c0: 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20 6d 61 63  l-terminated mac
28d0: 68 69 6e 65 20 62 79 74 65 20 6f 72 64 65 72 20  hine byte order 
28e0: 55 54 46 2d 31 36 20 73 74 72 69 6e 67 0a 2a 2a  UTF-16 string.**
28f0: 20 69 73 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a   is required..**
2900: 0a 2a 2a 20 54 68 65 20 61 6c 67 6f 72 69 74 68  .** The algorith
2910: 6d 20 69 73 20 73 69 6d 70 6c 65 2e 20 20 49 66  m is simple.  If
2920: 20 74 68 65 20 6c 61 73 74 20 74 6f 6b 65 6e 20   the last token 
2930: 6f 74 68 65 72 20 74 68 61 6e 20 73 70 61 63 65  other than space
2940: 73 0a 2a 2a 20 61 6e 64 20 63 6f 6d 6d 65 6e 74  s.** and comment
2950: 73 20 69 73 20 61 20 73 65 6d 69 63 6f 6c 6f 6e  s is a semicolon
2960: 2c 20 74 68 65 6e 20 72 65 74 75 72 6e 20 74 72  , then return tr
2970: 75 65 2e 20 20 6f 74 68 65 72 77 69 73 65 20 72  ue.  otherwise r
2980: 65 74 75 72 6e 0a 2a 2a 20 66 61 6c 73 65 2e 0a  eturn.** false..
2990: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  */.int sqlite3_c
29a0: 6f 6d 70 6c 65 74 65 28 63 6f 6e 73 74 20 63 68  omplete(const ch
29b0: 61 72 20 2a 73 71 6c 29 3b 0a 69 6e 74 20 73 71  ar *sql);.int sq
29c0: 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36  lite3_complete16
29d0: 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  (const void *sql
29e0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72  );../*.** This r
29f0: 6f 75 74 69 6e 65 20 69 64 65 6e 74 69 66 69 65  outine identifie
2a00: 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  s a callback fun
2a10: 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 69 6e  ction that is in
2a20: 76 6f 6b 65 64 0a 2a 2a 20 77 68 65 6e 65 76 65  voked.** wheneve
2a30: 72 20 61 6e 20 61 74 74 65 6d 70 74 20 69 73 20  r an attempt is 
2a40: 6d 61 64 65 20 74 6f 20 6f 70 65 6e 20 61 20 64  made to open a d
2a50: 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 74 68  atabase table th
2a60: 61 74 20 69 73 0a 2a 2a 20 63 75 72 72 65 6e 74  at is.** current
2a70: 6c 79 20 6c 6f 63 6b 65 64 20 62 79 20 61 6e 6f  ly locked by ano
2a80: 74 68 65 72 20 70 72 6f 63 65 73 73 20 6f 72 20  ther process or 
2a90: 74 68 72 65 61 64 2e 20 20 49 66 20 74 68 65 20  thread.  If the 
2aa0: 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  busy callback.**
2ab0: 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 73   is NULL, then s
2ac0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 72 65  qlite3_exec() re
2ad0: 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 42 55 53  turns SQLITE_BUS
2ae0: 59 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 69 66  Y immediately if
2af0: 0a 2a 2a 20 69 74 20 66 69 6e 64 73 20 61 20 6c  .** it finds a l
2b00: 6f 63 6b 65 64 20 74 61 62 6c 65 2e 20 20 49 66  ocked table.  If
2b10: 20 74 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61   the busy callba
2b20: 63 6b 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20  ck is not NULL, 
2b30: 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  then.** sqlite3_
2b40: 65 78 65 63 28 29 20 69 6e 76 6f 6b 65 73 20 74  exec() invokes t
2b50: 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68  he callback with
2b60: 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73   three arguments
2b70: 2e 20 20 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64  .  The.** second
2b80: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
2b90: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6c 6f 63   name of the loc
2ba0: 6b 65 64 20 74 61 62 6c 65 20 61 6e 64 20 74 68  ked table and th
2bb0: 65 20 74 68 69 72 64 0a 2a 2a 20 61 72 67 75 6d  e third.** argum
2bc0: 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ent is the numbe
2bd0: 72 20 6f 66 20 74 69 6d 65 73 20 74 68 65 20 74  r of times the t
2be0: 61 62 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75  able has been bu
2bf0: 73 79 2e 20 20 49 66 20 74 68 65 0a 2a 2a 20 62  sy.  If the.** b
2c00: 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  usy callback ret
2c10: 75 72 6e 73 20 30 2c 20 74 68 65 6e 20 73 71 6c  urns 0, then sql
2c20: 69 74 65 33 5f 65 78 65 63 28 29 20 69 6d 6d 65  ite3_exec() imme
2c30: 64 69 61 74 65 6c 79 20 72 65 74 75 72 6e 73 0a  diately returns.
2c40: 2a 2a 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 20  ** SQLITE_BUSY. 
2c50: 20 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   If the callback
2c60: 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   returns non-zer
2c70: 6f 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  o, then sqlite3_
2c80: 65 78 65 63 28 29 0a 2a 2a 20 74 72 69 65 73 20  exec().** tries 
2c90: 74 6f 20 6f 70 65 6e 20 74 68 65 20 74 61 62 6c  to open the tabl
2ca0: 65 20 61 67 61 69 6e 20 61 6e 64 20 74 68 65 20  e again and the 
2cb0: 63 79 63 6c 65 20 72 65 70 65 61 74 73 2e 0a 2a  cycle repeats..*
2cc0: 2a 0a 2a 2a 20 54 68 65 20 64 65 66 61 75 6c 74  *.** The default
2cd0: 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 69   busy callback i
2ce0: 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 53 71  s NULL..**.** Sq
2cf0: 6c 69 74 65 20 69 73 20 72 65 2d 65 6e 74 72 61  lite is re-entra
2d00: 6e 74 2c 20 73 6f 20 74 68 65 20 62 75 73 79 20  nt, so the busy 
2d10: 68 61 6e 64 6c 65 72 20 6d 61 79 20 73 74 61 72  handler may star
2d20: 74 20 61 20 6e 65 77 20 71 75 65 72 79 2e 20 0a  t a new query. .
2d30: 2a 2a 20 28 49 74 20 69 73 20 6e 6f 74 20 63 6c  ** (It is not cl
2d40: 65 61 72 20 77 68 79 20 61 6e 79 6f 6e 65 20 77  ear why anyone w
2d50: 6f 75 6c 64 20 65 76 65 72 79 20 77 61 6e 74 20  ould every want 
2d60: 74 6f 20 64 6f 20 74 68 69 73 2c 20 62 75 74 20  to do this, but 
2d70: 69 74 0a 2a 2a 20 69 73 20 61 6c 6c 6f 77 65 64  it.** is allowed
2d80: 2c 20 69 6e 20 74 68 65 6f 72 79 2e 29 20 20 42  , in theory.)  B
2d90: 75 74 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  ut the busy hand
2da0: 6c 65 72 20 6d 61 79 20 6e 6f 74 20 63 6c 6f 73  ler may not clos
2db0: 65 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73  e the.** databas
2dc0: 65 2e 20 20 43 6c 6f 73 69 6e 67 20 74 68 65 20  e.  Closing the 
2dd0: 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20 61 20  database from a 
2de0: 62 75 73 79 20 68 61 6e 64 6c 65 72 20 77 69 6c  busy handler wil
2df0: 6c 20 64 65 6c 65 74 65 20 0a 2a 2a 20 64 61 74  l delete .** dat
2e00: 61 20 73 74 72 75 63 74 75 72 65 73 20 6f 75 74  a structures out
2e10: 20 66 72 6f 6d 20 75 6e 64 65 72 20 74 68 65 20   from under the 
2e20: 65 78 65 63 75 74 69 6e 67 20 71 75 65 72 79 20  executing query 
2e30: 61 6e 64 20 77 69 6c 6c 20 0a 2a 2a 20 70 72 6f  and will .** pro
2e40: 62 61 62 6c 79 20 72 65 73 75 6c 74 20 69 6e 20  bably result in 
2e50: 61 20 63 6f 72 65 64 75 6d 70 2e 0a 2a 2f 0a 69  a coredump..*/.i
2e60: 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  nt sqlite3_busy_
2e70: 68 61 6e 64 6c 65 72 28 73 71 6c 69 74 65 33 2a  handler(sqlite3*
2e80: 2c 20 69 6e 74 28 2a 29 28 76 6f 69 64 2a 2c 69  , int(*)(void*,i
2e90: 6e 74 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a  nt), void*);../*
2ea0: 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65  .** This routine
2eb0: 20 73 65 74 73 20 61 20 62 75 73 79 20 68 61 6e   sets a busy han
2ec0: 64 6c 65 72 20 74 68 61 74 20 73 6c 65 65 70 73  dler that sleeps
2ed0: 20 66 6f 72 20 61 20 77 68 69 6c 65 20 77 68 65   for a while whe
2ee0: 6e 20 61 0a 2a 2a 20 74 61 62 6c 65 20 69 73 20  n a.** table is 
2ef0: 6c 6f 63 6b 65 64 2e 20 20 54 68 65 20 68 61 6e  locked.  The han
2f00: 64 6c 65 72 20 77 69 6c 6c 20 73 6c 65 65 70 20  dler will sleep 
2f10: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75  multiple times u
2f20: 6e 74 69 6c 20 0a 2a 2a 20 61 74 20 6c 65 61 73  ntil .** at leas
2f30: 74 20 22 6d 73 22 20 6d 69 6c 6c 65 73 65 63 6f  t "ms" milleseco
2f40: 6e 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 20  nds of sleeping 
2f50: 68 61 76 65 20 62 65 65 6e 20 64 6f 6e 65 2e 20  have been done. 
2f60: 20 41 66 74 65 72 0a 2a 2a 20 22 6d 73 22 20 6d   After.** "ms" m
2f70: 69 6c 6c 65 73 65 63 6f 6e 64 73 20 6f 66 20 73  illeseconds of s
2f80: 6c 65 65 70 69 6e 67 2c 20 74 68 65 20 68 61 6e  leeping, the han
2f90: 64 6c 65 72 20 72 65 74 75 72 6e 73 20 30 20 77  dler returns 0 w
2fa0: 68 69 63 68 0a 2a 2a 20 63 61 75 73 65 73 20 73  hich.** causes s
2fb0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 74 6f  qlite3_exec() to
2fc0: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 42   return SQLITE_B
2fd0: 55 53 59 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 69  USY..**.** Calli
2fe0: 6e 67 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  ng this routine 
2ff0: 77 69 74 68 20 61 6e 20 61 72 67 75 6d 65 6e 74  with an argument
3000: 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71   less than or eq
3010: 75 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74  ual to zero.** t
3020: 75 72 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75 73  urns off all bus
3030: 79 20 68 61 6e 64 6c 65 72 73 2e 0a 2a 2f 0a 69  y handlers..*/.i
3040: 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  nt sqlite3_busy_
3050: 74 69 6d 65 6f 75 74 28 73 71 6c 69 74 65 33 2a  timeout(sqlite3*
3060: 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a 2f 2a 0a 2a  , int ms);../*.*
3070: 2a 20 54 68 69 73 20 6e 65 78 74 20 72 6f 75 74  * This next rout
3080: 69 6e 65 20 69 73 20 72 65 61 6c 6c 79 20 6a 75  ine is really ju
3090: 73 74 20 61 20 77 72 61 70 70 65 72 20 61 72 6f  st a wrapper aro
30a0: 75 6e 64 20 73 71 6c 69 74 65 33 5f 65 78 65 63  und sqlite3_exec
30b0: 28 29 2e 0a 2a 2a 20 49 6e 73 74 65 61 64 20 6f  ()..** Instead o
30c0: 66 20 69 6e 76 6f 6b 69 6e 67 20 61 20 75 73 65  f invoking a use
30d0: 72 2d 73 75 70 70 6c 69 65 64 20 63 61 6c 6c 62  r-supplied callb
30e0: 61 63 6b 20 66 6f 72 20 65 61 63 68 20 72 6f 77  ack for each row
30f0: 20 6f 66 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c   of the.** resul
3100: 74 2c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  t, this routine 
3110: 72 65 6d 65 6d 62 65 72 73 20 65 61 63 68 20 72  remembers each r
3120: 6f 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ow of the result
3130: 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a 2a 20 6f 62   in memory.** ob
3140: 74 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c  tained from mall
3150: 6f 63 28 29 2c 20 74 68 65 6e 20 72 65 74 75 72  oc(), then retur
3160: 6e 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65  ns all of the re
3170: 73 75 6c 74 20 61 66 74 65 72 20 74 68 65 0a 2a  sult after the.*
3180: 2a 20 71 75 65 72 79 20 68 61 73 20 66 69 6e 69  * query has fini
3190: 73 68 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 41 73 20  shed. .**.** As 
31a0: 61 6e 20 65 78 61 6d 70 6c 65 2c 20 73 75 70 70  an example, supp
31b0: 6f 73 65 20 74 68 65 20 71 75 65 72 79 20 72 65  ose the query re
31c0: 73 75 6c 74 20 77 68 65 72 65 20 74 68 69 73 20  sult where this 
31d0: 74 61 62 6c 65 3a 0a 2a 2a 0a 2a 2a 20 20 20 20  table:.**.**    
31e0: 20 20 20 20 4e 61 6d 65 20 20 20 20 20 20 20 20      Name        
31f0: 7c 20 41 67 65 0a 2a 2a 20 20 20 20 20 20 20 20  | Age.**        
3200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3210: 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20 20  -------.**      
3220: 20 20 41 6c 69 63 65 20 20 20 20 20 20 20 7c 20    Alice       | 
3230: 34 33 0a 2a 2a 20 20 20 20 20 20 20 20 42 6f 62  43.**        Bob
3240: 20 20 20 20 20 20 20 20 20 7c 20 32 38 0a 2a 2a           | 28.**
3250: 20 20 20 20 20 20 20 20 43 69 6e 64 79 20 20 20          Cindy   
3260: 20 20 20 20 7c 20 32 31 0a 2a 2a 0a 2a 2a 20 49      | 21.**.** I
3270: 66 20 74 68 65 20 33 72 64 20 61 72 67 75 6d 65  f the 3rd argume
3280: 6e 74 20 77 65 72 65 20 26 61 7a 52 65 73 75 6c  nt were &azResul
3290: 74 20 74 68 65 6e 20 61 66 74 65 72 20 74 68 65  t then after the
32a0: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
32b0: 73 0a 2a 2a 20 61 7a 52 65 73 75 6c 74 20 77 69  s.** azResult wi
32c0: 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 66  ll contain the f
32d0: 6f 6c 6c 6f 77 69 6e 67 20 64 61 74 61 3a 0a 2a  ollowing data:.*
32e0: 2a 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  *.**        azRe
32f0: 73 75 6c 74 5b 30 5d 20 3d 20 22 4e 61 6d 65 22  sult[0] = "Name"
3300: 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
3310: 73 75 6c 74 5b 31 5d 20 3d 20 22 41 67 65 22 3b  sult[1] = "Age";
3320: 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
3330: 75 6c 74 5b 32 5d 20 3d 20 22 41 6c 69 63 65 22  ult[2] = "Alice"
3340: 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
3350: 73 75 6c 74 5b 33 5d 20 3d 20 22 34 33 22 3b 0a  sult[3] = "43";.
3360: 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75  **        azResu
3370: 6c 74 5b 34 5d 20 3d 20 22 42 6f 62 22 3b 0a 2a  lt[4] = "Bob";.*
3380: 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
3390: 74 5b 35 5d 20 3d 20 22 32 38 22 3b 0a 2a 2a 20  t[5] = "28";.** 
33a0: 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 5b         azResult[
33b0: 36 5d 20 3d 20 22 43 69 6e 64 79 22 3b 0a 2a 2a  6] = "Cindy";.**
33c0: 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
33d0: 5b 37 5d 20 3d 20 22 32 31 22 3b 0a 2a 2a 0a 2a  [7] = "21";.**.*
33e0: 2a 20 4e 6f 74 69 63 65 20 74 68 61 74 20 74 68  * Notice that th
33f0: 65 72 65 20 69 73 20 61 6e 20 65 78 74 72 61 20  ere is an extra 
3400: 72 6f 77 20 6f 66 20 64 61 74 61 20 63 6f 6e 74  row of data cont
3410: 61 69 6e 69 6e 67 20 74 68 65 20 63 6f 6c 75 6d  aining the colum
3420: 6e 0a 2a 2a 20 68 65 61 64 65 72 73 2e 20 20 42  n.** headers.  B
3430: 75 74 20 74 68 65 20 2a 6e 72 6f 77 20 72 65 74  ut the *nrow ret
3440: 75 72 6e 20 76 61 6c 75 65 20 69 73 20 73 74 69  urn value is sti
3450: 6c 6c 20 33 2e 20 20 2a 6e 63 6f 6c 75 6d 6e 20  ll 3.  *ncolumn 
3460: 69 73 0a 2a 2a 20 73 65 74 20 74 6f 20 32 2e 20  is.** set to 2. 
3470: 20 49 6e 20 67 65 6e 65 72 61 6c 2c 20 74 68 65   In general, the
3480: 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
3490: 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20  s inserted into 
34a0: 61 7a 52 65 73 75 6c 74 0a 2a 2a 20 77 69 6c 6c  azResult.** will
34b0: 20 62 65 20 28 28 2a 6e 72 6f 77 29 20 2b 20 31   be ((*nrow) + 1
34c0: 29 2a 28 2a 6e 63 6f 6c 75 6d 6e 29 2e 0a 2a 2a  )*(*ncolumn)..**
34d0: 0a 2a 2a 20 41 66 74 65 72 20 74 68 65 20 63 61  .** After the ca
34e0: 6c 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 68  lling function h
34f0: 61 73 20 66 69 6e 69 73 68 65 64 20 75 73 69 6e  as finished usin
3500: 67 20 74 68 65 20 72 65 73 75 6c 74 2c 20 69 74  g the result, it
3510: 20 73 68 6f 75 6c 64 20 0a 2a 2a 20 70 61 73 73   should .** pass
3520: 20 74 68 65 20 72 65 73 75 6c 74 20 64 61 74 61   the result data
3530: 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69   pointer to sqli
3540: 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
3550: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 0a 2a 2a   in order to .**
3560: 20 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d   release the mem
3570: 6f 72 79 20 74 68 61 74 20 77 61 73 20 6d 61 6c  ory that was mal
3580: 6c 6f 63 2d 65 64 2e 20 20 42 65 63 61 75 73 65  loc-ed.  Because
3590: 20 6f 66 20 74 68 65 20 77 61 79 20 74 68 65 20   of the way the 
35a0: 0a 2a 2a 20 6d 61 6c 6c 6f 63 28 29 20 68 61 70  .** malloc() hap
35b0: 70 65 6e 73 2c 20 74 68 65 20 63 61 6c 6c 69 6e  pens, the callin
35c0: 67 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20  g function must 
35d0: 6e 6f 74 20 74 72 79 20 74 6f 20 63 61 6c 6c 20  not try to call 
35e0: 0a 2a 2a 20 66 72 65 65 28 29 20 64 69 72 65 63  .** free() direc
35f0: 74 6c 79 2e 20 20 4f 6e 6c 79 20 73 71 6c 69 74  tly.  Only sqlit
3600: 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 20  e3_free_table() 
3610: 69 73 20 61 62 6c 65 20 74 6f 20 72 65 6c 65 61  is able to relea
3620: 73 65 20 0a 2a 2a 20 74 68 65 20 6d 65 6d 6f 72  se .** the memor
3630: 79 20 70 72 6f 70 65 72 6c 79 20 61 6e 64 20 73  y properly and s
3640: 61 66 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  afely..**.** The
3650: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66   return value of
3660: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73   this routine is
3670: 20 74 68 65 20 73 61 6d 65 20 61 73 20 66 72 6f   the same as fro
3680: 6d 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  m sqlite3_exec()
3690: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
36a0: 5f 67 65 74 5f 74 61 62 6c 65 28 0a 20 20 73 71  _get_table(.  sq
36b0: 6c 69 74 65 33 2a 2c 20 20 20 20 20 20 20 20 20  lite3*,         
36c0: 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70 65 6e        /* An open
36d0: 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20 20 63   database */.  c
36e0: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 2c 20  onst char *sql, 
36f0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20        /* SQL to 
3700: 62 65 20 65 78 65 63 75 74 65 64 20 2a 2f 0a 20  be executed */. 
3710: 20 63 68 61 72 20 2a 2a 2a 72 65 73 75 6c 74 70   char ***resultp
3720: 2c 20 20 20 20 20 20 20 2f 2a 20 52 65 73 75 6c  ,       /* Resul
3730: 74 20 77 72 69 74 74 65 6e 20 74 6f 20 61 20 63  t written to a c
3740: 68 61 72 20 2a 5b 5d 20 20 74 68 61 74 20 74 68  har *[]  that th
3750: 69 73 20 70 6f 69 6e 74 73 20 74 6f 20 2a 2f 0a  is points to */.
3760: 20 20 69 6e 74 20 2a 6e 72 6f 77 2c 20 20 20 20    int *nrow,    
3770: 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
3780: 65 72 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77  er of result row
3790: 73 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a  s written here *
37a0: 2f 0a 20 20 69 6e 74 20 2a 6e 63 6f 6c 75 6d 6e  /.  int *ncolumn
37b0: 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75  ,          /* Nu
37c0: 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63  mber of result c
37d0: 6f 6c 75 6d 6e 73 20 77 72 69 74 74 65 6e 20 68  olumns written h
37e0: 65 72 65 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a  ere */.  char **
37f0: 65 72 72 6d 73 67 20 20 20 20 20 20 20 20 20 20  errmsg          
3800: 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69  /* Error msg wri
3810: 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a  tten here */.);.
3820: 0a 2f 2a 0a 2a 2a 20 43 61 6c 6c 20 74 68 69 73  ./*.** Call this
3830: 20 72 6f 75 74 69 6e 65 20 74 6f 20 66 72 65 65   routine to free
3840: 20 74 68 65 20 6d 65 6d 6f 72 79 20 74 68 61 74   the memory that
3850: 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
3860: 6c 65 28 29 20 61 6c 6c 6f 63 61 74 65 64 2e 0a  le() allocated..
3870: 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  */.void sqlite3_
3880: 66 72 65 65 5f 74 61 62 6c 65 28 63 68 61 72 20  free_table(char 
3890: 2a 2a 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a  **result);../*.*
38a0: 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  * The following 
38b0: 72 6f 75 74 69 6e 65 73 20 61 72 65 20 76 61 72  routines are var
38c0: 69 61 6e 74 73 20 6f 66 20 74 68 65 20 22 73 70  iants of the "sp
38d0: 72 69 6e 74 66 28 29 22 20 66 72 6f 6d 20 74 68  rintf()" from th
38e0: 65 0a 2a 2a 20 73 74 61 6e 64 61 72 64 20 43 20  e.** standard C 
38f0: 6c 69 62 72 61 72 79 2e 20 20 54 68 65 20 72 65  library.  The re
3900: 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 20 69  sulting string i
3910: 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d  s written into m
3920: 65 6d 6f 72 79 0a 2a 2a 20 6f 62 74 61 69 6e 65  emory.** obtaine
3930: 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 20  d from malloc() 
3940: 73 6f 20 74 68 61 74 20 74 68 65 72 65 20 69 73  so that there is
3950: 20 6e 65 76 65 72 20 61 20 70 6f 73 73 69 62 6c   never a possibl
3960: 69 74 79 20 6f 66 20 62 75 66 66 65 72 0a 2a 2a  ity of buffer.**
3970: 20 6f 76 65 72 66 6c 6f 77 2e 20 20 54 68 65 73   overflow.  Thes
3980: 65 20 72 6f 75 74 69 6e 65 73 20 61 6c 73 6f 20  e routines also 
3990: 69 6d 70 6c 65 6d 65 6e 74 20 73 6f 6d 65 20 61  implement some a
39a0: 64 64 69 74 69 6f 6e 61 6c 20 66 6f 72 6d 61 74  dditional format
39b0: 74 69 6e 67 0a 2a 2a 20 6f 70 74 69 6f 6e 73 20  ting.** options 
39c0: 74 68 61 74 20 61 72 65 20 75 73 65 66 75 6c 20  that are useful 
39d0: 66 6f 72 20 63 6f 6e 73 74 72 75 63 74 69 6e 67  for constructing
39e0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
39f0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e  .**.** The strin
3a00: 67 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  gs returned by t
3a10: 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 73 68  hese routines sh
3a20: 6f 75 6c 64 20 62 65 20 66 72 65 65 64 20 62 79  ould be freed by
3a30: 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69   calling.** sqli
3a40: 74 65 33 5f 66 72 65 65 28 29 2e 0a 2a 2a 0a 2a  te3_free()..**.*
3a50: 2a 20 41 6c 6c 20 6f 66 20 74 68 65 20 75 73 75  * All of the usu
3a60: 61 6c 20 70 72 69 6e 74 66 20 66 6f 72 6d 61 74  al printf format
3a70: 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 61 70 70  ting options app
3a80: 6c 79 2e 20 20 49 6e 20 61 64 64 69 74 69 6f 6e  ly.  In addition
3a90: 2c 20 74 68 65 72 65 0a 2a 2a 20 69 73 20 61 20  , there.** is a 
3aa0: 22 25 71 22 20 6f 70 74 69 6f 6e 2e 20 20 25 71  "%q" option.  %q
3ab0: 20 77 6f 72 6b 73 20 6c 69 6b 65 20 25 73 20 69   works like %s i
3ac0: 6e 20 74 68 61 74 20 69 74 20 73 75 62 73 74 69  n that it substi
3ad0: 74 75 74 65 73 20 61 20 6e 75 6c 6c 2d 74 65 72  tutes a null-ter
3ae0: 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e  minated.** strin
3af0: 67 20 66 72 6f 6d 20 74 68 65 20 61 72 67 75 6d  g from the argum
3b00: 65 6e 74 20 6c 69 73 74 2e 20 20 42 75 74 20 25  ent list.  But %
3b10: 71 20 61 6c 73 6f 20 64 6f 75 62 6c 65 73 20 65  q also doubles e
3b20: 76 65 72 79 20 27 5c 27 27 20 63 68 61 72 61 63  very '\'' charac
3b30: 74 65 72 2e 0a 2a 2a 20 25 71 20 69 73 20 64 65  ter..** %q is de
3b40: 73 69 67 6e 65 64 20 66 6f 72 20 75 73 65 20 69  signed for use i
3b50: 6e 73 69 64 65 20 61 20 73 74 72 69 6e 67 20 6c  nside a string l
3b60: 69 74 65 72 61 6c 2e 20 20 42 79 20 64 6f 75 62  iteral.  By doub
3b70: 6c 69 6e 67 20 65 61 63 68 20 27 5c 27 27 0a 2a  ling each '\''.*
3b80: 2a 20 63 68 61 72 61 63 74 65 72 20 69 74 20 65  * character it e
3b90: 73 63 61 70 65 73 20 74 68 61 74 20 63 68 61 72  scapes that char
3ba0: 61 63 74 65 72 20 61 6e 64 20 61 6c 6c 6f 77 73  acter and allows
3bb0: 20 69 74 20 74 6f 20 62 65 20 69 6e 73 65 72 74   it to be insert
3bc0: 65 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73  ed into.** the s
3bd0: 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 46 6f 72  tring..**.** For
3be0: 20 65 78 61 6d 70 6c 65 2c 20 73 6f 20 73 6f 6d   example, so som
3bf0: 65 20 73 74 72 69 6e 67 20 76 61 72 69 61 62 6c  e string variabl
3c00: 65 20 63 6f 6e 74 61 69 6e 73 20 74 65 78 74 20  e contains text 
3c10: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a  as follows:.**.*
3c20: 2a 20 20 20 20 20 20 63 68 61 72 20 2a 7a 54 65  *      char *zTe
3c30: 78 74 20 3d 20 22 49 74 27 73 20 61 20 68 61 70  xt = "It's a hap
3c40: 70 79 20 64 61 79 21 22 3b 0a 2a 2a 0a 2a 2a 20  py day!";.**.** 
3c50: 57 65 20 63 61 6e 20 75 73 65 20 74 68 69 73 20  We can use this 
3c60: 74 65 78 74 20 69 6e 20 61 6e 20 53 51 4c 20 73  text in an SQL s
3c70: 74 61 74 65 6d 65 6e 74 20 61 73 20 66 6f 6c 6c  tatement as foll
3c80: 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20  ows:.**.**      
3c90: 73 71 6c 69 74 65 33 5f 65 78 65 63 5f 70 72 69  sqlite3_exec_pri
3ca0: 6e 74 66 28 64 62 2c 20 22 49 4e 53 45 52 54 20  ntf(db, "INSERT 
3cb0: 49 4e 54 4f 20 74 61 62 6c 65 20 56 41 4c 55 45  INTO table VALUE
3cc0: 53 28 27 25 71 27 29 22 2c 0a 2a 2a 20 20 20 20  S('%q')",.**    
3cd0: 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 31 2c        callback1,
3ce0: 20 30 2c 20 30 2c 20 7a 54 65 78 74 29 3b 0a 2a   0, 0, zText);.*
3cf0: 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65  *.** Because the
3d00: 20 25 71 20 66 6f 72 6d 61 74 20 73 74 72 69 6e   %q format strin
3d10: 67 20 69 73 20 75 73 65 64 2c 20 74 68 65 20 27  g is used, the '
3d20: 5c 27 27 20 63 68 61 72 61 63 74 65 72 20 69 6e  \'' character in
3d30: 20 7a 54 65 78 74 0a 2a 2a 20 69 73 20 65 73 63   zText.** is esc
3d40: 61 70 65 64 20 61 6e 64 20 74 68 65 20 53 51 4c  aped and the SQL
3d50: 20 67 65 6e 65 72 61 74 65 64 20 69 73 20 61 73   generated is as
3d60: 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20   follows:.**.** 
3d70: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
3d80: 20 74 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27   table1 VALUES('
3d90: 49 74 27 27 73 20 61 20 68 61 70 70 79 20 64 61  It''s a happy da
3da0: 79 21 27 29 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  y!').**.** This 
3db0: 69 73 20 63 6f 72 72 65 63 74 2e 20 20 48 61 64  is correct.  Had
3dc0: 20 77 65 20 75 73 65 64 20 25 73 20 69 6e 73 74   we used %s inst
3dd0: 65 61 64 20 6f 66 20 25 71 2c 20 74 68 65 20 67  ead of %q, the g
3de0: 65 6e 65 72 61 74 65 64 20 53 51 4c 0a 2a 2a 20  enerated SQL.** 
3df0: 77 6f 75 6c 64 20 68 61 76 65 20 6c 6f 6f 6b 65  would have looke
3e00: 64 20 6c 69 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a  d like this:.**.
3e10: 2a 2a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  **      INSERT I
3e20: 4e 54 4f 20 74 61 62 6c 65 31 20 56 41 4c 55 45  NTO table1 VALUE
3e30: 53 28 27 49 74 27 73 20 61 20 68 61 70 70 79 20  S('It's a happy 
3e40: 64 61 79 21 27 29 3b 0a 2a 2a 0a 2a 2a 20 54 68  day!');.**.** Th
3e50: 69 73 20 73 65 63 6f 6e 64 20 65 78 61 6d 70 6c  is second exampl
3e60: 65 20 69 73 20 61 6e 20 53 51 4c 20 73 79 6e 74  e is an SQL synt
3e70: 61 78 20 65 72 72 6f 72 2e 20 20 41 73 20 61 20  ax error.  As a 
3e80: 67 65 6e 65 72 61 6c 20 72 75 6c 65 20 79 6f 75  general rule you
3e90: 0a 2a 2a 20 73 68 6f 75 6c 64 20 61 6c 77 61 79  .** should alway
3ea0: 73 20 75 73 65 20 25 71 20 69 6e 73 74 65 61 64  s use %q instead
3eb0: 20 6f 66 20 25 73 20 77 68 65 6e 20 69 6e 73 65   of %s when inse
3ec0: 72 74 69 6e 67 20 74 65 78 74 20 69 6e 74 6f 20  rting text into 
3ed0: 61 20 73 74 72 69 6e 67 20 0a 2a 2a 20 6c 69 74  a string .** lit
3ee0: 65 72 61 6c 2e 0a 2a 2f 0a 63 68 61 72 20 2a 73  eral..*/.char *s
3ef0: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 63  qlite3_mprintf(c
3f00: 6f 6e 73 74 20 63 68 61 72 2a 2c 2e 2e 2e 29 3b  onst char*,...);
3f10: 0a 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 76  .char *sqlite3_v
3f20: 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20 63 68  mprintf(const ch
3f30: 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 76  ar*, va_list);.v
3f40: 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65  oid sqlite3_free
3f50: 28 63 68 61 72 20 2a 7a 29 3b 0a 63 68 61 72 20  (char *z);.char 
3f60: 2a 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74  *sqlite3_snprint
3f70: 66 28 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73  f(int,char*,cons
3f80: 74 20 63 68 61 72 2a 2c 20 2e 2e 2e 29 3b 0a 0a  t char*, ...);..
3f90: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f  #ifndef SQLITE_O
3fa0: 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f  MIT_AUTHORIZATIO
3fb0: 4e 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75  N./*.** This rou
3fc0: 74 69 6e 65 20 72 65 67 69 73 74 65 72 73 20 61  tine registers a
3fd0: 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 74   callback with t
3fe0: 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
3ff0: 79 2e 20 20 54 68 65 0a 2a 2a 20 63 61 6c 6c 62  y.  The.** callb
4000: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 28  ack is invoked (
4010: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
4020: 20 6e 6f 74 20 61 74 20 72 75 6e 2d 74 69 6d 65   not at run-time
4030: 29 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 61 74  ) for each.** at
4040: 74 65 6d 70 74 20 74 6f 20 61 63 63 65 73 73 20  tempt to access 
4050: 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 61 20 74 61  a column of a ta
4060: 62 6c 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ble in the datab
4070: 61 73 65 2e 20 20 54 68 65 20 63 61 6c 6c 62 61  ase.  The callba
4080: 63 6b 0a 2a 2a 20 72 65 74 75 72 6e 73 20 53 51  ck.** returns SQ
4090: 4c 49 54 45 5f 4f 4b 20 69 66 20 61 63 63 65 73  LITE_OK if acces
40a0: 73 20 69 73 20 61 6c 6c 6f 77 65 64 2c 20 53 51  s is allowed, SQ
40b0: 4c 49 54 45 5f 44 45 4e 59 20 69 66 20 74 68 65  LITE_DENY if the
40c0: 20 65 6e 74 69 72 65 0a 2a 2a 20 53 51 4c 20 73   entire.** SQL s
40d0: 74 61 74 65 6d 65 6e 74 20 73 68 6f 75 6c 64 20  tatement should 
40e0: 62 65 20 61 62 6f 72 74 65 64 20 77 69 74 68 20  be aborted with 
40f0: 61 6e 20 65 72 72 6f 72 20 61 6e 64 20 53 51 4c  an error and SQL
4100: 49 54 45 5f 49 47 4e 4f 52 45 0a 2a 2a 20 69 66  ITE_IGNORE.** if
4110: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 73 68 6f 75   the column shou
4120: 6c 64 20 62 65 20 74 72 65 61 74 65 64 20 61 73  ld be treated as
4130: 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 2e 0a 2a   a NULL value..*
4140: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 65  /.int sqlite3_se
4150: 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 0a 20 20  t_authorizer(.  
4160: 73 71 6c 69 74 65 33 2a 2c 0a 20 20 69 6e 74 20  sqlite3*,.  int 
4170: 28 2a 78 41 75 74 68 29 28 76 6f 69 64 2a 2c 69  (*xAuth)(void*,i
4180: 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63  nt,const char*,c
4190: 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74  onst char*,const
41a0: 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61   char*,const cha
41b0: 72 2a 29 2c 0a 20 20 76 6f 69 64 20 2a 70 55 73  r*),.  void *pUs
41c0: 65 72 44 61 74 61 0a 29 3b 0a 23 65 6e 64 69 66  erData.);.#endif
41d0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f  ../*.** The seco
41e0: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  nd parameter to 
41f0: 74 68 65 20 61 63 63 65 73 73 20 61 75 74 68 6f  the access autho
4200: 72 69 7a 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  rization functio
4210: 6e 20 61 62 6f 76 65 20 77 69 6c 6c 0a 2a 2a 20  n above will.** 
4220: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 61  be one of the va
4230: 6c 75 65 73 20 62 65 6c 6f 77 2e 20 20 54 68 65  lues below.  The
4240: 73 65 20 76 61 6c 75 65 73 20 73 69 67 6e 69 66  se values signif
4250: 79 20 77 68 61 74 20 6b 69 6e 64 20 6f 66 20 6f  y what kind of o
4260: 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 69 73 20 74  peration.** is t
4270: 6f 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e  o be authorized.
4280: 20 20 54 68 65 20 33 72 64 20 61 6e 64 20 34 74    The 3rd and 4t
4290: 68 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20  h parameters to 
42a0: 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f  the authorizatio
42b0: 6e 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77 69  n.** function wi
42c0: 6c 6c 20 62 65 20 70 61 72 61 6d 65 74 65 72 73  ll be parameters
42d0: 20 6f 72 20 4e 55 4c 4c 20 64 65 70 65 6e 64 69   or NULL dependi
42e0: 6e 67 20 6f 6e 20 77 68 69 63 68 20 6f 66 20 74  ng on which of t
42f0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 2a 2a 20  he following.** 
4300: 63 6f 64 65 73 20 69 73 20 75 73 65 64 20 61 73  codes is used as
4310: 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   the second para
4320: 6d 65 74 65 72 2e 20 20 54 68 65 20 35 74 68 20  meter.  The 5th 
4330: 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65  parameter is the
4340: 20 6e 61 6d 65 0a 2a 2a 20 6f 66 20 74 68 65 20   name.** of the 
4350: 64 61 74 61 62 61 73 65 20 28 22 6d 61 69 6e 22  database ("main"
4360: 2c 20 22 74 65 6d 70 22 2c 20 65 74 63 2e 29 20  , "temp", etc.) 
4370: 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 20 20  if applicable.  
4380: 54 68 65 20 36 74 68 20 70 61 72 61 6d 65 74 65  The 6th paramete
4390: 72 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65  r.** is the name
43a0: 20 6f 66 20 74 68 65 20 69 6e 6e 65 72 2d 6d 6f   of the inner-mo
43b0: 73 74 20 74 72 69 67 67 65 72 20 6f 72 20 76 69  st trigger or vi
43c0: 65 77 20 74 68 61 74 20 69 73 20 72 65 73 70 6f  ew that is respo
43d0: 6e 73 69 62 6c 65 20 66 6f 72 0a 2a 2a 20 74 68  nsible for.** th
43e0: 65 20 61 63 63 65 73 73 20 61 74 74 65 6d 70 74  e access attempt
43f0: 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 69 73   or NULL if this
4400: 20 61 63 63 65 73 73 20 61 74 74 65 6d 70 74 20   access attempt 
4410: 69 73 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d  is directly from
4420: 20 0a 2a 2a 20 69 6e 70 75 74 20 53 51 4c 20 63   .** input SQL c
4430: 6f 64 65 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20  ode..**.**      
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4460: 20 20 20 20 41 72 67 2d 33 20 20 20 20 20 20 20      Arg-3       
4470: 20 20 20 20 41 72 67 2d 34 0a 2a 2f 0a 23 64 65      Arg-4.*/.#de
4480: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 50 59  fine SQLITE_COPY
4490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44a0: 20 20 30 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e    0   /* Table N
44b0: 61 6d 65 20 20 20 20 20 20 46 69 6c 65 20 4e 61  ame      File Na
44c0: 6d 65 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  me       */.#def
44d0: 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
44e0: 45 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20  E_INDEX         
44f0: 20 31 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61   1   /* Index Na
4500: 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61  me      Table Na
4510: 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
4520: 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
4530: 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20  _TABLE          
4540: 32 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  2   /* Table Nam
4550: 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
4560: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
4570: 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
4580: 54 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 33  TEMP_INDEX     3
4590: 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65     /* Index Name
45a0: 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65        Table Name
45b0: 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
45c0: 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
45d0: 45 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 34 20  EMP_TABLE     4 
45e0: 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
45f0: 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
4600: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
4610: 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45  SQLITE_CREATE_TE
4620: 4d 50 5f 54 52 49 47 47 45 52 20 20 20 35 20 20  MP_TRIGGER   5  
4630: 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65   /* Trigger Name
4640: 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20      Table Name  
4650: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
4660: 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d  QLITE_CREATE_TEM
4670: 50 5f 56 49 45 57 20 20 20 20 20 20 36 20 20 20  P_VIEW      6   
4680: 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20  /* View Name    
4690: 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
46a0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
46b0: 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 52 49 47  LITE_CREATE_TRIG
46c0: 47 45 52 20 20 20 20 20 20 20 20 37 20 20 20 2f  GER        7   /
46d0: 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20  * Trigger Name  
46e0: 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
46f0: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
4700: 49 54 45 5f 43 52 45 41 54 45 5f 56 49 45 57 20  ITE_CREATE_VIEW 
4710: 20 20 20 20 20 20 20 20 20 20 38 20 20 20 2f 2a            8   /*
4720: 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20   View Name      
4730: 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
4740: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
4750: 54 45 5f 44 45 4c 45 54 45 20 20 20 20 20 20 20  TE_DELETE       
4760: 20 20 20 20 20 20 20 20 20 39 20 20 20 2f 2a 20           9   /* 
4770: 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
4780: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
4790: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
47a0: 45 5f 44 52 4f 50 5f 49 4e 44 45 58 20 20 20 20  E_DROP_INDEX    
47b0: 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 49         10   /* I
47c0: 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54  ndex Name      T
47d0: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
47e0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
47f0: 5f 44 52 4f 50 5f 54 41 42 4c 45 20 20 20 20 20  _DROP_TABLE     
4800: 20 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 61        11   /* Ta
4810: 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  ble Name      NU
4820: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
4830: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
4840: 44 52 4f 50 5f 54 45 4d 50 5f 49 4e 44 45 58 20  DROP_TEMP_INDEX 
4850: 20 20 20 20 20 31 32 20 20 20 2f 2a 20 49 6e 64       12   /* Ind
4860: 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62  ex Name      Tab
4870: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a  le Name      */.
4880: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
4890: 52 4f 50 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20  ROP_TEMP_TABLE  
48a0: 20 20 20 20 31 33 20 20 20 2f 2a 20 54 61 62 6c      13   /* Tabl
48b0: 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
48c0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
48d0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
48e0: 4f 50 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20  OP_TEMP_TRIGGER 
48f0: 20 20 20 31 34 20 20 20 2f 2a 20 54 72 69 67 67     14   /* Trigg
4900: 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65  er Name    Table
4910: 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
4920: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
4930: 50 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20  P_TEMP_VIEW     
4940: 20 20 31 35 20 20 20 2f 2a 20 56 69 65 77 20 4e    15   /* View N
4950: 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  ame       NULL  
4960: 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
4970: 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
4980: 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20  _TRIGGER        
4990: 20 31 36 20 20 20 2f 2a 20 54 72 69 67 67 65 72   16   /* Trigger
49a0: 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e   Name    Table N
49b0: 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
49c0: 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
49d0: 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20 20  VIEW            
49e0: 31 37 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d  17   /* View Nam
49f0: 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  e       NULL    
4a00: 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
4a10: 6e 65 20 53 51 4c 49 54 45 5f 49 4e 53 45 52 54  ne SQLITE_INSERT
4a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31                 1
4a30: 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  8   /* Table Nam
4a40: 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
4a50: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
4a60: 65 20 53 51 4c 49 54 45 5f 50 52 41 47 4d 41 20  e SQLITE_PRAGMA 
4a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 39                19
4a80: 20 20 20 2f 2a 20 50 72 61 67 6d 61 20 4e 61 6d     /* Pragma Nam
4a90: 65 20 20 20 20 20 31 73 74 20 61 72 67 20 6f 72  e     1st arg or
4aa0: 20 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66 69 6e 65   NULL */.#define
4ab0: 20 53 51 4c 49 54 45 5f 52 45 41 44 20 20 20 20   SQLITE_READ    
4ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 32 30 20               20 
4ad0: 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
4ae0: 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65       Column Name
4af0: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
4b00: 53 51 4c 49 54 45 5f 53 45 4c 45 43 54 20 20 20  SQLITE_SELECT   
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 32 31 20 20              21  
4b20: 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20   /* NULL        
4b30: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
4b40: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
4b50: 51 4c 49 54 45 5f 54 52 41 4e 53 41 43 54 49 4f  QLITE_TRANSACTIO
4b60: 4e 20 20 20 20 20 20 20 20 20 20 32 32 20 20 20  N          22   
4b70: 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20  /* NULL         
4b80: 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
4b90: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
4ba0: 4c 49 54 45 5f 55 50 44 41 54 45 20 20 20 20 20  LITE_UPDATE     
4bb0: 20 20 20 20 20 20 20 20 20 20 32 33 20 20 20 2f            23   /
4bc0: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
4bd0: 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20    Column Name   
4be0: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
4bf0: 49 54 45 5f 41 54 54 41 43 48 20 20 20 20 20 20  ITE_ATTACH      
4c00: 20 20 20 20 20 20 20 20 20 32 34 20 20 20 2f 2a           24   /*
4c10: 20 46 69 6c 65 6e 61 6d 65 20 20 20 20 20 20 20   Filename       
4c20: 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
4c30: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
4c40: 54 45 5f 44 45 54 41 43 48 20 20 20 20 20 20 20  TE_DETACH       
4c50: 20 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20          25   /* 
4c60: 44 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20  Database Name   
4c70: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
4c80: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
4c90: 45 5f 41 4c 54 45 52 5f 54 41 42 4c 45 20 20 20  E_ALTER_TABLE   
4ca0: 20 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20 44         26   /* D
4cb0: 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 54  atabase Name   T
4cc0: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
4cd0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
4ce0: 5f 52 45 49 4e 44 45 58 20 20 20 20 20 20 20 20  _REINDEX        
4cf0: 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 49 6e        27   /* In
4d00: 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  dex Name      NU
4d10: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
4d20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
4d30: 41 4e 41 4c 59 5a 45 20 20 20 20 20 20 20 20 20  ANALYZE         
4d40: 20 20 20 20 20 32 38 20 20 20 2f 2a 20 54 61 62       28   /* Tab
4d50: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
4d60: 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
4d70: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75  ../*.** The retu
4d80: 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  rn value of the 
4d90: 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 66 75  authorization fu
4da0: 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65  nction should be
4db0: 20 6f 6e 65 20 6f 66 20 74 68 65 0a 2a 2a 20 66   one of the.** f
4dc0: 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e  ollowing constan
4dd0: 74 73 3a 0a 2a 2f 0a 2f 2a 20 23 64 65 66 69 6e  ts:.*/./* #defin
4de0: 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20 30 20 20  e SQLITE_OK  0  
4df0: 20 2f 2f 20 41 6c 6c 6f 77 20 61 63 63 65 73 73   // Allow access
4e00: 20 28 54 68 69 73 20 69 73 20 61 63 74 75 61 6c   (This is actual
4e10: 6c 79 20 64 65 66 69 6e 65 64 20 61 62 6f 76 65  ly defined above
4e20: 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ) */.#define SQL
4e30: 49 54 45 5f 44 45 4e 59 20 20 20 31 20 20 20 2f  ITE_DENY   1   /
4e40: 2a 20 41 62 6f 72 74 20 74 68 65 20 53 51 4c 20  * Abort the SQL 
4e50: 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20 61  statement with a
4e60: 6e 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69  n error */.#defi
4e70: 6e 65 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  ne SQLITE_IGNORE
4e80: 20 32 20 20 20 2f 2a 20 44 6f 6e 27 74 20 61 6c   2   /* Don't al
4e90: 6c 6f 77 20 61 63 63 65 73 73 2c 20 62 75 74 20  low access, but 
4ea0: 64 6f 6e 27 74 20 67 65 6e 65 72 61 74 65 20 61  don't generate a
4eb0: 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a  n error */../*.*
4ec0: 2a 20 52 65 67 69 73 74 65 72 20 61 20 66 75 6e  * Register a fun
4ed0: 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 61  ction that is ca
4ee0: 6c 6c 65 64 20 61 74 20 65 76 65 72 79 20 69 6e  lled at every in
4ef0: 76 6f 63 61 74 69 6f 6e 20 6f 66 20 73 71 6c 69  vocation of sqli
4f00: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 6f 72  te3_exec().** or
4f10: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
4f20: 28 29 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69  ().  This functi
4f30: 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 28  on can be used (
4f40: 66 6f 72 20 65 78 61 6d 70 6c 65 29 20 74 6f 20  for example) to 
4f50: 67 65 6e 65 72 61 74 65 0a 2a 2a 20 61 20 6c 6f  generate.** a lo
4f60: 67 20 66 69 6c 65 20 6f 66 20 61 6c 6c 20 53 51  g file of all SQ
4f70: 4c 20 65 78 65 63 75 74 65 64 20 61 67 61 69 6e  L executed again
4f80: 73 74 20 61 20 64 61 74 61 62 61 73 65 2e 0a 2a  st a database..*
4f90: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
4fa0: 74 72 61 63 65 28 73 71 6c 69 74 65 33 2a 2c 20  trace(sqlite3*, 
4fb0: 76 6f 69 64 28 2a 78 54 72 61 63 65 29 28 76 6f  void(*xTrace)(vo
4fc0: 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29  id*,const char*)
4fd0: 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  , void*);../*.**
4fe0: 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63 6f   This routine co
4ff0: 6e 66 69 67 75 72 65 73 20 61 20 63 61 6c 6c 62  nfigures a callb
5000: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2d 20 74  ack function - t
5010: 68 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c  he progress call
5020: 62 61 63 6b 20 2d 20 74 68 61 74 0a 2a 2a 20 69  back - that.** i
5030: 73 20 69 6e 76 6f 6b 65 64 20 70 65 72 69 6f 64  s invoked period
5040: 69 63 61 6c 6c 79 20 64 75 72 69 6e 67 20 6c 6f  ically during lo
5050: 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61 6c 6c 73  ng running calls
5060: 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63   to sqlite3_exec
5070: 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73  (),.** sqlite3_s
5080: 74 65 70 28 29 20 61 6e 64 20 73 71 6c 69 74 65  tep() and sqlite
5090: 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2e 20 41  3_get_table(). A
50a0: 6e 20 65 78 61 6d 70 6c 65 20 75 73 65 20 66 6f  n example use fo
50b0: 72 20 74 68 69 73 20 41 50 49 20 69 73 20 74 6f  r this API is to
50c0: 20 0a 2a 2a 20 6b 65 65 70 20 61 20 47 55 49 20   .** keep a GUI 
50d0: 75 70 64 61 74 65 64 20 64 75 72 69 6e 67 20 61  updated during a
50e0: 20 6c 61 72 67 65 20 71 75 65 72 79 2e 0a 2a 2a   large query..**
50f0: 0a 2a 2a 20 54 68 65 20 70 72 6f 67 72 65 73 73  .** The progress
5100: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
5110: 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 76  oked once for ev
5120: 65 72 79 20 4e 20 76 69 72 74 75 61 6c 20 6d 61  ery N virtual ma
5130: 63 68 69 6e 65 20 6f 70 63 6f 64 65 73 2c 0a 2a  chine opcodes,.*
5140: 2a 20 77 68 65 72 65 20 4e 20 69 73 20 74 68 65  * where N is the
5150: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
5160: 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f   to this functio
5170: 6e 2e 20 54 68 65 20 70 72 6f 67 72 65 73 73 20  n. The progress 
5180: 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 74 73 65  callback.** itse
5190: 6c 66 20 69 73 20 69 64 65 6e 74 69 66 69 65 64  lf is identified
51a0: 20 62 79 20 74 68 65 20 74 68 69 72 64 20 61 72   by the third ar
51b0: 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 66  gument to this f
51c0: 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 66 6f 75  unction. The fou
51d0: 72 74 68 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  rth.** argument 
51e0: 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  to this function
51f0: 20 69 73 20 61 20 76 6f 69 64 20 70 6f 69 6e 74   is a void point
5200: 65 72 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  er passed to the
5210: 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61   progress callba
5220: 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 65  ck.** function e
5230: 61 63 68 20 74 69 6d 65 20 69 74 20 69 73 20 69  ach time it is i
5240: 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66  nvoked..**.** If
5250: 20 61 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74   a call to sqlit
5260: 65 33 5f 65 78 65 63 28 29 2c 20 73 71 6c 69 74  e3_exec(), sqlit
5270: 65 33 5f 73 74 65 70 28 29 20 6f 72 20 73 71 6c  e3_step() or sql
5280: 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
5290: 20 72 65 73 75 6c 74 73 20 0a 2a 2a 20 69 6e 20   results .** in 
52a0: 6c 65 73 73 20 74 68 61 6e 20 4e 20 6f 70 63 6f  less than N opco
52b0: 64 65 73 20 62 65 69 6e 67 20 65 78 65 63 75 74  des being execut
52c0: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 70 72 6f  ed, then the pro
52d0: 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 69  gress callback i
52e0: 73 20 6e 6f 74 0a 2a 2a 20 69 6e 76 6f 6b 65 64  s not.** invoked
52f0: 2e 0a 2a 2a 20 0a 2a 2a 20 54 6f 20 72 65 6d 6f  ..** .** To remo
5300: 76 65 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  ve the progress 
5310: 63 61 6c 6c 62 61 63 6b 20 61 6c 74 6f 67 65 74  callback altoget
5320: 68 65 72 2c 20 70 61 73 73 20 4e 55 4c 4c 20 61  her, pass NULL a
5330: 73 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 61  s the third.** a
5340: 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20  rgument to this 
5350: 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  function..**.** 
5360: 49 66 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  If the progress 
5370: 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
5380: 20 61 20 72 65 73 75 6c 74 20 6f 74 68 65 72 20   a result other 
5390: 74 68 61 6e 20 30 2c 20 74 68 65 6e 20 74 68 65  than 0, then the
53a0: 20 63 75 72 72 65 6e 74 20 0a 2a 2a 20 71 75 65   current .** que
53b0: 72 79 20 69 73 20 69 6d 6d 65 64 69 61 74 65 6c  ry is immediatel
53c0: 79 20 74 65 72 6d 69 6e 61 74 65 64 20 61 6e 64  y terminated and
53d0: 20 61 6e 79 20 64 61 74 61 62 61 73 65 20 63 68   any database ch
53e0: 61 6e 67 65 73 20 72 6f 6c 6c 65 64 20 62 61 63  anges rolled bac
53f0: 6b 2e 20 49 66 20 74 68 65 0a 2a 2a 20 71 75 65  k. If the.** que
5400: 72 79 20 77 61 73 20 70 61 72 74 20 6f 66 20 61  ry was part of a
5410: 20 6c 61 72 67 65 72 20 74 72 61 6e 73 61 63 74   larger transact
5420: 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 74 72  ion, then the tr
5430: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 6e 6f 74  ansaction is not
5440: 20 72 6f 6c 6c 65 64 0a 2a 2a 20 62 61 63 6b 20   rolled.** back 
5450: 61 6e 64 20 72 65 6d 61 69 6e 73 20 61 63 74 69  and remains acti
5460: 76 65 2e 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ve. The sqlite3_
5470: 65 78 65 63 28 29 20 63 61 6c 6c 20 72 65 74 75  exec() call retu
5480: 72 6e 73 20 53 51 4c 49 54 45 5f 41 42 4f 52 54  rns SQLITE_ABORT
5490: 2e 20 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 20 54 48  . .**.******* TH
54a0: 49 53 20 49 53 20 41 4e 20 45 58 50 45 52 49 4d  IS IS AN EXPERIM
54b0: 45 4e 54 41 4c 20 41 50 49 20 41 4e 44 20 49 53  ENTAL API AND IS
54c0: 20 53 55 42 4a 45 43 54 20 54 4f 20 43 48 41 4e   SUBJECT TO CHAN
54d0: 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 76 6f 69  GE ******.*/.voi
54e0: 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  d sqlite3_progre
54f0: 73 73 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69 74  ss_handler(sqlit
5500: 65 33 2a 2c 20 69 6e 74 2c 20 69 6e 74 28 2a 29  e3*, int, int(*)
5510: 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29 3b  (void*), void*);
5520: 0a 0a 2f 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72  ../*.** Register
5530: 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63   a callback func
5540: 74 69 6f 6e 20 74 6f 20 62 65 20 69 6e 76 6f 6b  tion to be invok
5550: 65 64 20 77 68 65 6e 65 76 65 72 20 61 20 6e 65  ed whenever a ne
5560: 77 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 2a 2a  w transaction.**
5570: 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 2e 20 20   is committed.  
5580: 54 68 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e  The pArg argumen
5590: 74 20 69 73 20 70 61 73 73 65 64 20 74 68 72 6f  t is passed thro
55a0: 75 67 68 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ugh to the callb
55b0: 61 63 6b 2e 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b  ack..** callback
55c0: 2e 20 20 49 66 20 74 68 65 20 63 61 6c 6c 62 61  .  If the callba
55d0: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  ck function retu
55e0: 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68  rns non-zero, th
55f0: 65 6e 20 74 68 65 20 63 6f 6d 6d 69 74 0a 2a 2a  en the commit.**
5600: 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
5610: 74 6f 20 61 20 72 6f 6c 6c 62 61 63 6b 2e 0a 2a  to a rollback..*
5620: 2a 0a 2a 2a 20 49 66 20 61 6e 6f 74 68 65 72 20  *.** If another 
5630: 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 70 72 65  function was pre
5640: 76 69 6f 75 73 6c 79 20 72 65 67 69 73 74 65 72  viously register
5650: 65 64 2c 20 69 74 73 20 70 41 72 67 20 76 61 6c  ed, its pArg val
5660: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a  ue is returned..
5670: 2a 2a 20 4f 74 68 65 72 77 69 73 65 20 4e 55 4c  ** Otherwise NUL
5680: 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  L is returned..*
5690: 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 69 6e 67  *.** Registering
56a0: 20 61 20 4e 55 4c 4c 20 66 75 6e 63 74 69 6f 6e   a NULL function
56b0: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 63 61   disables the ca
56c0: 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a  llback..**.*****
56d0: 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45 58  ** THIS IS AN EX
56e0: 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41  PERIMENTAL API A
56f0: 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f  ND IS SUBJECT TO
5700: 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a   CHANGE ******.*
5710: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
5720: 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 73 71 6c 69  commit_hook(sqli
5730: 74 65 33 2a 2c 20 69 6e 74 28 2a 29 28 76 6f 69  te3*, int(*)(voi
5740: 64 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a  d*), void*);../*
5750: 0a 2a 2a 20 4f 70 65 6e 20 74 68 65 20 73 71 6c  .** Open the sql
5760: 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ite database fil
5770: 65 20 22 66 69 6c 65 6e 61 6d 65 22 2e 20 20 54  e "filename".  T
5780: 68 65 20 22 66 69 6c 65 6e 61 6d 65 22 20 69 73  he "filename" is
5790: 20 55 54 46 2d 38 0a 2a 2a 20 65 6e 63 6f 64 65   UTF-8.** encode
57a0: 64 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  d for sqlite3_op
57b0: 65 6e 28 29 20 61 6e 64 20 55 54 46 2d 31 36 20  en() and UTF-16 
57c0: 65 6e 63 6f 64 65 64 20 69 6e 20 74 68 65 20 6e  encoded in the n
57d0: 61 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72  ative byte order
57e0: 0a 2a 2a 20 66 6f 72 20 73 71 6c 69 74 65 33 5f  .** for sqlite3_
57f0: 6f 70 65 6e 31 36 28 29 2e 20 20 41 6e 20 73 71  open16().  An sq
5800: 6c 69 74 65 33 2a 20 68 61 6e 64 6c 65 20 69 73  lite3* handle is
5810: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 2a 70 70   returned in *pp
5820: 44 62 2c 20 65 76 65 6e 0a 2a 2a 20 69 66 20 61  Db, even.** if a
5830: 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 20  n error occurs. 
5840: 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  If the database 
5850: 69 73 20 6f 70 65 6e 65 64 20 28 6f 72 20 63 72  is opened (or cr
5860: 65 61 74 65 64 29 20 73 75 63 63 65 73 73 66 75  eated) successfu
5870: 6c 6c 79 2c 0a 2a 2a 20 74 68 65 6e 20 53 51 4c  lly,.** then SQL
5880: 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e  ITE_OK is return
5890: 65 64 2e 20 4f 74 68 65 72 77 69 73 65 20 61 6e  ed. Otherwise an
58a0: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72   error code is r
58b0: 65 74 75 72 6e 65 64 2e 20 54 68 65 0a 2a 2a 20  eturned. The.** 
58c0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29  sqlite3_errmsg()
58d0: 20 6f 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d   or sqlite3_errm
58e0: 73 67 31 36 28 29 20 20 72 6f 75 74 69 6e 65 73  sg16()  routines
58f0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
5900: 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20 45 6e 67  obtain.** an Eng
5910: 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20 64 65  lish language de
5920: 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65  scription of the
5930: 20 65 72 72 6f 72 2e 0a 2a 2a 0a 2a 2a 20 49 66   error..**.** If
5940: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
5950: 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  le does not exis
5960: 74 2c 20 74 68 65 6e 20 61 20 6e 65 77 20 64 61  t, then a new da
5970: 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65  tabase is create
5980: 64 2e 0a 2a 2a 20 54 68 65 20 65 6e 63 6f 64 69  d..** The encodi
5990: 6e 67 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  ng for the datab
59a0: 61 73 65 20 69 73 20 55 54 46 2d 38 20 69 66 20  ase is UTF-8 if 
59b0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 69  sqlite3_open() i
59c0: 73 20 63 61 6c 6c 65 64 20 61 6e 64 0a 2a 2a 20  s called and.** 
59d0: 55 54 46 2d 31 36 20 69 66 20 73 71 6c 69 74 65  UTF-16 if sqlite
59e0: 33 5f 6f 70 65 6e 31 36 20 69 73 20 75 73 65 64  3_open16 is used
59f0: 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68 65 72 20  ..**.** Whether 
5a00: 6f 72 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20  or not an error 
5a10: 6f 63 63 75 72 73 20 77 68 65 6e 20 69 74 20 69  occurs when it i
5a20: 73 20 6f 70 65 6e 65 64 2c 20 72 65 73 6f 75 72  s opened, resour
5a30: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a 2a  ces associated.*
5a40: 2a 20 77 69 74 68 20 74 68 65 20 73 71 6c 69 74  * with the sqlit
5a50: 65 33 2a 20 68 61 6e 64 6c 65 20 73 68 6f 75 6c  e3* handle shoul
5a60: 64 20 62 65 20 72 65 6c 65 61 73 65 64 20 62 79  d be released by
5a70: 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 0a 2a   passing it to.*
5a80: 2a 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  * sqlite3_close(
5a90: 29 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 20  ) when it is no 
5aa0: 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65 64 2e  longer required.
5ab0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
5ac0: 6f 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20 63 68  open(.  const ch
5ad0: 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20  ar *filename,   
5ae0: 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c 65  /* Database file
5af0: 6e 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a  name (UTF-8) */.
5b00: 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62    sqlite3 **ppDb
5b10: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54            /* OUT
5b20: 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64  : SQLite db hand
5b30: 6c 65 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c  le */.);.int sql
5b40: 69 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20 63  ite3_open16(.  c
5b50: 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65 6e  onst void *filen
5b60: 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61  ame,   /* Databa
5b70: 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46  se filename (UTF
5b80: 2d 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65  -16) */.  sqlite
5b90: 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20  3 **ppDb        
5ba0: 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65    /* OUT: SQLite
5bb0: 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b   db handle */.);
5bc0: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
5bd0: 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 66 6f  he error code fo
5be0: 72 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  r the most recen
5bf0: 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49 20  t sqlite3_* API 
5c00: 63 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 0a  call associated.
5c10: 2a 2a 20 77 69 74 68 20 73 71 6c 69 74 65 33 20  ** with sqlite3 
5c20: 68 61 6e 64 6c 65 20 27 64 62 27 2e 20 53 51 4c  handle 'db'. SQL
5c30: 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e  ITE_OK is return
5c40: 65 64 20 69 66 20 74 68 65 20 6d 6f 73 74 20 72  ed if the most r
5c50: 65 63 65 6e 74 20 0a 2a 2a 20 41 50 49 20 63 61  ecent .** API ca
5c60: 6c 6c 20 77 61 73 20 73 75 63 63 65 73 73 66 75  ll was successfu
5c70: 6c 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 73 20 74  l..**.** Calls t
5c80: 6f 20 6d 61 6e 79 20 73 71 6c 69 74 65 33 5f 2a  o many sqlite3_*
5c90: 20 66 75 6e 63 74 69 6f 6e 73 20 73 65 74 20 74   functions set t
5ca0: 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e  he error code an
5cb0: 64 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65  d string returne
5cc0: 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33 5f  d.** by sqlite3_
5cd0: 65 72 72 63 6f 64 65 28 29 2c 20 73 71 6c 69 74  errcode(), sqlit
5ce0: 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64 20  e3_errmsg() and 
5cf0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
5d00: 28 29 0a 2a 2a 20 28 6f 76 65 72 77 72 69 74 69  ().** (overwriti
5d10: 6e 67 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  ng the previous 
5d20: 76 61 6c 75 65 73 29 2e 20 4e 6f 74 65 20 74 68  values). Note th
5d30: 61 74 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69  at calls to sqli
5d40: 74 65 33 5f 65 72 72 63 6f 64 65 28 29 2c 0a 2a  te3_errcode(),.*
5d50: 2a 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  * sqlite3_errmsg
5d60: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65  () and sqlite3_e
5d70: 72 72 6d 73 67 31 36 28 29 20 74 68 65 6d 73 65  rrmsg16() themse
5d80: 6c 76 65 73 20 64 6f 20 6e 6f 74 20 61 66 66 65  lves do not affe
5d90: 63 74 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74  ct the.** result
5da0: 73 20 6f 66 20 66 75 74 75 72 65 20 69 6e 76 6f  s of future invo
5db0: 63 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41  cations..**.** A
5dc0: 73 73 75 6d 69 6e 67 20 6e 6f 20 6f 74 68 65 72  ssuming no other
5dd0: 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 73 71 6c   intervening sql
5de0: 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c 73  ite3_* API calls
5df0: 20 61 72 65 20 6d 61 64 65 2c 20 74 68 65 20 65   are made, the e
5e00: 72 72 6f 72 0a 2a 2a 20 63 6f 64 65 20 72 65 74  rror.** code ret
5e10: 75 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75  urned by this fu
5e20: 6e 63 74 69 6f 6e 20 69 73 20 61 73 73 6f 63 69  nction is associ
5e30: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 61  ated with the sa
5e40: 6d 65 20 65 72 72 6f 72 20 61 73 0a 2a 2a 20 74  me error as.** t
5e50: 68 65 20 73 74 72 69 6e 67 73 20 20 72 65 74 75  he strings  retu
5e60: 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
5e70: 65 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71 6c  errmsg() and sql
5e80: 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 2e  ite3_errmsg16().
5e90: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
5ea0: 65 72 72 63 6f 64 65 28 73 71 6c 69 74 65 33 20  errcode(sqlite3 
5eb0: 2a 64 62 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  *db);../*.** Ret
5ec0: 75 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  urn a pointer to
5ed0: 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64   a UTF-8 encoded
5ee0: 20 73 74 72 69 6e 67 20 64 65 73 63 72 69 62 69   string describi
5ef0: 6e 67 20 69 6e 20 65 6e 67 6c 69 73 68 20 74 68  ng in english th
5f00: 65 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 6e 64 69  e.** error condi
5f10: 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6d 6f 73  tion for the mos
5f20: 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33  t recent sqlite3
5f30: 5f 2a 20 41 50 49 20 63 61 6c 6c 2e 20 54 68 65  _* API call. The
5f40: 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 73 74 72   returned.** str
5f50: 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20 74 65  ing is always te
5f60: 72 6d 69 6e 61 74 65 64 20 62 79 20 61 6e 20 30  rminated by an 0
5f70: 78 30 30 20 62 79 74 65 2e 0a 2a 2a 0a 2a 2a 20  x00 byte..**.** 
5f80: 54 68 65 20 73 74 72 69 6e 67 20 22 6e 6f 74 20  The string "not 
5f90: 61 6e 20 65 72 72 6f 72 22 20 69 73 20 72 65 74  an error" is ret
5fa0: 75 72 6e 65 64 20 77 68 65 6e 20 74 68 65 20 6d  urned when the m
5fb0: 6f 73 74 20 72 65 63 65 6e 74 20 41 50 49 20 63  ost recent API c
5fc0: 61 6c 6c 20 77 61 73 0a 2a 2a 20 73 75 63 63 65  all was.** succe
5fd0: 73 73 66 75 6c 2e 0a 2a 2f 0a 63 6f 6e 73 74 20  ssful..*/.const 
5fe0: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72  char *sqlite3_er
5ff0: 72 6d 73 67 28 73 71 6c 69 74 65 33 2a 29 3b 0a  rmsg(sqlite3*);.
6000: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 61 20  ./*.** Return a 
6010: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54 46  pointer to a UTF
6020: 2d 31 36 20 6e 61 74 69 76 65 20 62 79 74 65 20  -16 native byte 
6030: 6f 72 64 65 72 20 65 6e 63 6f 64 65 64 20 73 74  order encoded st
6040: 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67 0a  ring describing.
6050: 2a 2a 20 69 6e 20 65 6e 67 6c 69 73 68 20 74 68  ** in english th
6060: 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f  e error conditio
6070: 6e 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20 72  n for the most r
6080: 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20  ecent sqlite3_* 
6090: 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 54 68 65  API call..** The
60a0: 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67   returned string
60b0: 20 69 73 20 61 6c 77 61 79 73 20 74 65 72 6d 69   is always termi
60c0: 6e 61 74 65 64 20 62 79 20 61 20 70 61 69 72 20  nated by a pair 
60d0: 6f 66 20 30 78 30 30 20 62 79 74 65 73 2e 0a 2a  of 0x00 bytes..*
60e0: 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67 20  *.** The string 
60f0: 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 20 69  "not an error" i
6100: 73 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20  s returned when 
6110: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
6120: 41 50 49 20 63 61 6c 6c 20 77 61 73 0a 2a 2a 20  API call was.** 
6130: 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a 63  successful..*/.c
6140: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
6150: 65 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c 69  e3_errmsg16(sqli
6160: 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 6e  te3*);../*.** An
6170: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
6180: 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 61 71 75   following opaqu
6190: 65 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  e structure is u
61a0: 73 65 64 20 74 6f 20 72 65 70 72 65 73 65 6e 74  sed to represent
61b0: 0a 2a 2a 20 61 20 63 6f 6d 70 69 6c 65 64 20 53  .** a compiled S
61c0: 51 4c 20 73 74 61 74 6d 65 6e 74 2e 0a 2a 2f 0a  QL statment..*/.
61d0: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
61e0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 73 71 6c 69  qlite3_stmt sqli
61f0: 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a 2a 2a  te3_stmt;../*.**
6200: 20 54 6f 20 65 78 65 63 75 74 65 20 61 6e 20 53   To execute an S
6210: 51 4c 20 71 75 65 72 79 2c 20 69 74 20 6d 75 73  QL query, it mus
6220: 74 20 66 69 72 73 74 20 62 65 20 63 6f 6d 70 69  t first be compi
6230: 6c 65 64 20 69 6e 74 6f 20 61 20 62 79 74 65 2d  led into a byte-
6240: 63 6f 64 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20  code.** program 
6250: 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  using one of the
6260: 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69   following routi
6270: 6e 65 73 2e 20 54 68 65 20 6f 6e 6c 79 20 64 69  nes. The only di
6280: 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e  fference between
6290: 0a 2a 2a 20 74 68 65 6d 20 69 73 20 74 68 61 74  .** them is that
62a0: 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
62b0: 6d 65 6e 74 2c 20 73 70 65 63 69 66 79 69 6e 67  ment, specifying
62c0: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
62d0: 6e 74 20 74 6f 0a 2a 2a 20 63 6f 6d 70 69 6c 65  nt to.** compile
62e0: 2c 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20  , is assumed to 
62f0: 62 65 20 65 6e 63 6f 64 65 64 20 69 6e 20 55 54  be encoded in UT
6300: 46 2d 38 20 66 6f 72 20 74 68 65 20 73 71 6c 69  F-8 for the sqli
6310: 74 65 33 5f 70 72 65 70 61 72 65 28 29 0a 2a 2a  te3_prepare().**
6320: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 55 54   function and UT
6330: 46 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65 33  F-16 for sqlite3
6340: 5f 70 72 65 70 61 72 65 31 36 28 29 2e 0a 2a 2a  _prepare16()..**
6350: 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 61  .** The first pa
6360: 72 61 6d 65 74 65 72 20 22 64 62 22 20 69 73 20  rameter "db" is 
6370: 61 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  an SQLite databa
6380: 73 65 20 68 61 6e 64 6c 65 2e 20 54 68 65 20 73  se handle. The s
6390: 65 63 6f 6e 64 0a 2a 2a 20 70 61 72 61 6d 65 74  econd.** paramet
63a0: 65 72 20 22 7a 53 71 6c 22 20 69 73 20 74 68 65  er "zSql" is the
63b0: 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65   statement to be
63c0: 20 63 6f 6d 70 69 6c 65 64 2c 20 65 6e 63 6f 64   compiled, encod
63d0: 65 64 20 61 73 20 65 69 74 68 65 72 0a 2a 2a 20  ed as either.** 
63e0: 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 20  UTF-8 or UTF-16 
63f0: 28 73 65 65 20 61 62 6f 76 65 29 2e 20 49 66 20  (see above). If 
6400: 74 68 65 20 6e 65 78 74 20 70 61 72 61 6d 65 74  the next paramet
6410: 65 72 2c 20 22 6e 42 79 74 65 73 22 2c 20 69 73  er, "nBytes", is
6420: 20 6c 65 73 73 0a 2a 2a 20 74 68 61 6e 20 7a 65   less.** than ze
6430: 72 6f 2c 20 74 68 65 6e 20 7a 53 71 6c 20 69 73  ro, then zSql is
6440: 20 72 65 61 64 20 75 70 20 74 6f 20 74 68 65 20   read up to the 
6450: 66 69 72 73 74 20 6e 75 6c 20 74 65 72 6d 69 6e  first nul termin
6460: 61 74 6f 72 2e 20 20 49 66 0a 2a 2a 20 22 6e 42  ator.  If.** "nB
6470: 79 74 65 73 22 20 69 73 20 6e 6f 74 20 6c 65 73  ytes" is not les
6480: 73 20 74 68 61 6e 20 7a 65 72 6f 2c 20 74 68 65  s than zero, the
6490: 6e 20 69 74 20 69 73 20 74 68 65 20 6c 65 6e 67  n it is the leng
64a0: 74 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67  th of the string
64b0: 20 7a 53 71 6c 0a 2a 2a 20 69 6e 20 62 79 74 65   zSql.** in byte
64c0: 73 20 28 6e 6f 74 20 63 68 61 72 61 63 74 65 72  s (not character
64d0: 73 29 2e 0a 2a 2a 0a 2a 2a 20 2a 70 7a 54 61 69  s)..**.** *pzTai
64e0: 6c 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69  l is made to poi
64f0: 6e 74 20 74 6f 20 74 68 65 20 66 69 72 73 74 20  nt to the first 
6500: 62 79 74 65 20 70 61 73 74 20 74 68 65 20 65 6e  byte past the en
6510: 64 20 6f 66 20 74 68 65 20 66 69 72 73 74 0a 2a  d of the first.*
6520: 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  * SQL statement 
6530: 69 6e 20 7a 53 71 6c 2e 20 20 54 68 69 73 20 72  in zSql.  This r
6540: 6f 75 74 69 6e 65 20 6f 6e 6c 79 20 63 6f 6d 70  outine only comp
6550: 69 6c 65 73 20 74 68 65 20 66 69 72 73 74 20 73  iles the first s
6560: 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69 6e 20 7a  tatement.** in z
6570: 53 71 6c 2c 20 73 6f 20 2a 70 7a 54 61 69 6c 20  Sql, so *pzTail 
6580: 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67  is left pointing
6590: 20 74 6f 20 77 68 61 74 20 72 65 6d 61 69 6e 73   to what remains
65a0: 20 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2a 0a   uncompiled..**.
65b0: 2a 2a 20 2a 70 70 53 74 6d 74 20 69 73 20 6c 65  ** *ppStmt is le
65c0: 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 61  ft pointing to a
65d0: 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74   compiled SQL st
65e0: 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 6e  atement that can
65f0: 20 62 65 0a 2a 2a 20 65 78 65 63 75 74 65 64 20   be.** executed 
6600: 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 73 74  using sqlite3_st
6610: 65 70 28 29 2e 20 20 4f 72 20 69 66 20 74 68 65  ep().  Or if the
6620: 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2c 20  re is an error, 
6630: 2a 70 70 53 74 6d 74 20 6d 61 79 20 62 65 0a 2a  *ppStmt may be.*
6640: 2a 20 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 20 20  * set to NULL.  
6650: 49 66 20 74 68 65 20 69 6e 70 75 74 20 74 65 78  If the input tex
6660: 74 20 63 6f 6e 74 61 69 6e 65 64 20 6e 6f 20 53  t contained no S
6670: 51 4c 20 28 69 66 20 74 68 65 20 69 6e 70 75 74  QL (if the input
6680: 20 69 73 20 61 6e 64 0a 2a 2a 20 65 6d 70 74 79   is and.** empty
6690: 20 73 74 72 69 6e 67 20 6f 72 20 61 20 63 6f 6d   string or a com
66a0: 6d 65 6e 74 29 20 74 68 65 6e 20 2a 70 70 53 74  ment) then *ppSt
66b0: 6d 74 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c  mt is set to NUL
66c0: 4c 2e 0a 2a 2a 0a 2a 2a 20 4f 6e 20 73 75 63 63  L..**.** On succ
66d0: 65 73 73 2c 20 53 51 4c 49 54 45 5f 4f 4b 20 69  ess, SQLITE_OK i
66e0: 73 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 74 68  s returned.  Oth
66f0: 65 72 77 69 73 65 20 61 6e 20 65 72 72 6f 72 20  erwise an error 
6700: 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65 64  code is returned
6710: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
6720: 5f 70 72 65 70 61 72 65 28 0a 20 20 73 71 6c 69  _prepare(.  sqli
6730: 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
6740: 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
6750: 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
6760: 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20  t char *zSql,   
6770: 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65      /* SQL state
6780: 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f  ment, UTF-8 enco
6790: 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79  ded */.  int nBy
67a0: 74 65 73 2c 20 20 20 20 20 20 20 20 20 20 20 20  tes,            
67b0: 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66 20 7a 53   /* Length of zS
67c0: 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
67d0: 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a    sqlite3_stmt *
67e0: 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54  *ppStmt,  /* OUT
67f0: 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  : Statement hand
6800: 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
6810: 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20  ar **pzTail     
6820: 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20  /* OUT: Pointer 
6830: 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f  to unused portio
6840: 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a  n of zSql */.);.
6850: 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  int sqlite3_prep
6860: 61 72 65 31 36 28 0a 20 20 73 71 6c 69 74 65 33  are16(.  sqlite3
6870: 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
6880: 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
6890: 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
68a0: 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  oid *zSql,      
68b0: 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
68c0: 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  t, UTF-16 encode
68d0: 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65  d */.  int nByte
68e0: 73 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  s,             /
68f0: 2a 20 4c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  * Length of zSql
6900: 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
6910: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
6920: 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20  pStmt,  /* OUT: 
6930: 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65  Statement handle
6940: 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64   */.  const void
6950: 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a   **pzTail     /*
6960: 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f   OUT: Pointer to
6970: 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20   unused portion 
6980: 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a 2f  of zSql */.);../
6990: 2a 0a 2a 2a 20 50 6f 69 6e 74 65 72 73 20 74 6f  *.** Pointers to
69a0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74   the following t
69b0: 77 6f 20 6f 70 61 71 75 65 20 73 74 72 75 63 74  wo opaque struct
69c0: 75 72 65 73 20 61 72 65 20 75 73 65 64 20 74 6f  ures are used to
69d0: 20 63 6f 6d 6d 75 6e 69 63 61 74 65 0a 2a 2a 20   communicate.** 
69e0: 77 69 74 68 20 74 68 65 20 69 6d 70 6c 65 6d 65  with the impleme
69f0: 6e 74 61 74 69 6f 6e 73 20 6f 66 20 75 73 65 72  ntations of user
6a00: 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f  -defined functio
6a10: 6e 73 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  ns..*/.typedef s
6a20: 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 63 6f  truct sqlite3_co
6a30: 6e 74 65 78 74 20 73 71 6c 69 74 65 33 5f 63 6f  ntext sqlite3_co
6a40: 6e 74 65 78 74 3b 0a 74 79 70 65 64 65 66 20 73  ntext;.typedef s
6a50: 74 72 75 63 74 20 4d 65 6d 20 73 71 6c 69 74 65  truct Mem sqlite
6a60: 33 5f 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a 2a 20  3_value;../*.** 
6a70: 49 6e 20 74 68 65 20 53 51 4c 20 73 74 72 69 6e  In the SQL strin
6a80: 67 73 20 69 6e 70 75 74 20 74 6f 20 73 71 6c 69  gs input to sqli
6a90: 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 61 6e  te3_prepare() an
6aa0: 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  d sqlite3_prepar
6ab0: 65 31 36 28 29 2c 0a 2a 2a 20 6f 6e 65 20 6f 72  e16(),.** one or
6ac0: 20 6d 6f 72 65 20 6c 69 74 65 72 61 6c 73 20 63   more literals c
6ad0: 61 6e 20 62 65 20 72 65 70 6c 61 63 65 20 62 79  an be replace by
6ae0: 20 70 61 72 61 6d 65 74 65 72 73 20 22 3f 22 20   parameters "?" 
6af0: 6f 72 20 22 3a 41 41 41 22 20 6f 72 0a 2a 2a 20  or ":AAA" or.** 
6b00: 22 24 56 56 56 22 20 77 68 65 72 65 20 41 41 41  "$VVV" where AAA
6b10: 20 69 73 20 61 6e 20 69 64 65 6e 74 69 66 65 72   is an identifer
6b20: 20 61 6e 64 20 56 56 56 20 69 73 20 61 20 76 61   and VVV is a va
6b30: 72 69 61 62 6c 65 20 6e 61 6d 65 20 61 63 63 6f  riable name acco
6b40: 72 64 69 6e 67 0a 2a 2a 20 74 6f 20 74 68 65 20  rding.** to the 
6b50: 73 79 6e 74 61 78 20 72 75 6c 65 73 20 6f 66 20  syntax rules of 
6b60: 74 68 65 20 54 43 4c 20 70 72 6f 67 72 61 6d 6d  the TCL programm
6b70: 69 6e 67 20 6c 61 6e 67 75 61 67 65 2e 0a 2a 2a  ing language..**
6b80: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
6b90: 65 73 65 20 70 61 72 61 6d 65 74 65 72 73 20 28  ese parameters (
6ba0: 61 6c 73 6f 20 63 61 6c 6c 65 64 20 22 68 6f 73  also called "hos
6bb0: 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65  t parameter name
6bc0: 73 22 29 20 63 61 6e 0a 2a 2a 20 62 65 20 73 65  s") can.** be se
6bd0: 74 20 75 73 69 6e 67 20 74 68 65 20 72 6f 75 74  t using the rout
6be0: 69 6e 65 73 20 6c 69 73 74 65 64 20 62 65 6c 6f  ines listed belo
6bf0: 77 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 65 76 65 72  w..**.** In ever
6c00: 79 20 63 61 73 65 2c 20 74 68 65 20 66 69 72 73  y case, the firs
6c10: 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  t parameter is a
6c20: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
6c30: 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 20  sqlite3_stmt.** 
6c40: 73 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e  structure return
6c50: 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ed from sqlite3_
6c60: 70 72 65 70 61 72 65 28 29 2e 20 20 54 68 65 20  prepare().  The 
6c70: 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
6c80: 20 69 73 20 74 68 65 0a 2a 2a 20 69 6e 64 65 78   is the.** index
6c90: 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65   of the paramete
6ca0: 72 2e 20 20 54 68 65 20 66 69 72 73 74 20 70 61  r.  The first pa
6cb0: 72 61 6d 65 74 65 72 20 61 73 20 61 6e 20 69 6e  rameter as an in
6cc0: 64 65 78 20 6f 66 20 31 2e 20 20 46 6f 72 0a 2a  dex of 1.  For.*
6cd0: 2a 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74 65  * named paramete
6ce0: 72 73 20 28 22 3a 41 41 41 22 20 6f 72 20 22 24  rs (":AAA" or "$
6cf0: 56 56 56 22 29 20 79 6f 75 20 63 61 6e 20 75 73  VVV") you can us
6d00: 65 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 62 69  e .** sqlite3_bi
6d10: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
6d20: 65 78 28 29 20 74 6f 20 67 65 74 20 74 68 65 20  ex() to get the 
6d30: 63 6f 72 72 65 63 74 20 69 6e 64 65 78 20 76 61  correct index va
6d40: 6c 75 65 20 67 69 76 65 6e 0a 2a 2a 20 74 68 65  lue given.** the
6d50: 20 70 61 72 61 6d 65 74 65 72 73 20 6e 61 6d 65   parameters name
6d60: 2e 20 20 49 66 20 74 68 65 20 73 61 6d 65 20 6e  .  If the same n
6d70: 61 6d 65 64 20 70 61 72 61 6d 65 74 65 72 20 6f  amed parameter o
6d80: 63 63 75 72 73 20 6d 6f 72 65 20 74 68 61 6e 0a  ccurs more than.
6d90: 2a 2a 20 6f 6e 63 65 2c 20 69 74 20 69 73 20 61  ** once, it is a
6da0: 73 73 69 67 6e 65 64 20 74 68 65 20 73 61 6d 65  ssigned the same
6db0: 20 69 6e 64 65 78 20 65 61 63 68 20 74 69 6d 65   index each time
6dc0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 66 74  ..**.** The fift
6dd0: 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  h parameter to s
6de0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
6df0: 28 29 2c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  (), sqlite3_bind
6e00: 5f 74 65 78 74 28 29 2c 20 61 6e 64 0a 2a 2a 20  _text(), and.** 
6e10: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
6e20: 74 31 36 28 29 20 69 73 20 61 20 64 65 73 74 72  t16() is a destr
6e30: 75 63 74 6f 72 20 75 73 65 64 20 74 6f 20 64 69  uctor used to di
6e40: 73 70 6f 73 65 20 6f 66 20 74 68 65 20 42 4c 4f  spose of the BLO
6e50: 42 20 6f 72 0a 2a 2a 20 74 65 78 74 20 61 66 74  B or.** text aft
6e60: 65 72 20 53 51 4c 69 74 65 20 68 61 73 20 66 69  er SQLite has fi
6e70: 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2e 20  nished with it. 
6e80: 20 49 66 20 74 68 65 20 66 69 66 74 68 20 61 72   If the fifth ar
6e90: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a  gument is the.**
6ea0: 20 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20 53   special value S
6eb0: 51 4c 49 54 45 5f 53 54 41 54 49 43 2c 20 74 68  QLITE_STATIC, th
6ec0: 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 61  en the library a
6ed0: 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 20  ssumes that the 
6ee0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 69  information.** i
6ef0: 73 20 69 6e 20 73 74 61 74 69 63 2c 20 75 6e 6d  s in static, unm
6f00: 61 6e 61 67 65 64 20 73 70 61 63 65 20 61 6e 64  anaged space and
6f10: 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74   does not need t
6f20: 6f 20 62 65 20 66 72 65 65 64 2e 20 20 49 66 20  o be freed.  If 
6f30: 74 68 65 0a 2a 2a 20 66 69 66 74 68 20 61 72 67  the.** fifth arg
6f40: 75 6d 65 6e 74 20 68 61 73 20 74 68 65 20 76 61  ument has the va
6f50: 6c 75 65 20 53 51 4c 49 54 45 5f 54 52 41 4e 53  lue SQLITE_TRANS
6f60: 49 45 4e 54 2c 20 74 68 65 6e 20 53 51 4c 69 74  IENT, then SQLit
6f70: 65 20 6d 61 6b 65 73 20 69 74 73 0a 2a 2a 20 6f  e makes its.** o
6f80: 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20  wn private copy 
6f90: 6f 66 20 74 68 65 20 64 61 74 61 2e 0a 2a 2a 0a  of the data..**.
6fa0: 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62  ** The sqlite3_b
6fb0: 69 6e 64 5f 2a 20 72 6f 75 74 69 6e 65 20 6d 75  ind_* routine mu
6fc0: 73 74 20 62 65 20 63 61 6c 6c 65 64 20 62 65 66  st be called bef
6fd0: 6f 72 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ore sqlite3_step
6fe0: 28 29 20 61 66 74 65 72 0a 2a 2a 20 61 6e 20 73  () after.** an s
6ff0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
7000: 20 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 73 65   or sqlite3_rese
7010: 74 28 29 2e 20 20 55 6e 62 6f 75 6e 64 20 70 61  t().  Unbound pa
7020: 72 61 6d 65 74 65 72 73 73 20 61 72 65 0a 2a 2a  rameterss are.**
7030: 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
7040: 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  NULL..*/.int sql
7050: 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 73  ite3_bind_blob(s
7060: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
7070: 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20  t, const void*, 
7080: 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76  int n, void(*)(v
7090: 6f 69 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69  oid*));.int sqli
70a0: 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
70b0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
70c0: 6e 74 2c 20 64 6f 75 62 6c 65 29 3b 0a 69 6e 74  nt, double);.int
70d0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
70e0: 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  t(sqlite3_stmt*,
70f0: 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e 74 20   int, int);.int 
7100: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
7110: 36 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  64(sqlite3_stmt*
7120: 2c 20 69 6e 74 2c 20 73 71 6c 69 74 65 5f 69 6e  , int, sqlite_in
7130: 74 36 34 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  t64);.int sqlite
7140: 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73 71 6c 69  3_bind_null(sqli
7150: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29 3b  te3_stmt*, int);
7160: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e  .int sqlite3_bin
7170: 64 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f 73  d_text(sqlite3_s
7180: 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74  tmt*, int, const
7190: 20 63 68 61 72 2a 2c 20 69 6e 74 20 6e 2c 20 76   char*, int n, v
71a0: 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a  oid(*)(void*));.
71b0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
71c0: 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65 33 5f  _text16(sqlite3_
71d0: 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73  stmt*, int, cons
71e0: 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f  t void*, int, vo
71f0: 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 69  id(*)(void*));.i
7200: 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
7210: 76 61 6c 75 65 28 73 71 6c 69 74 65 33 5f 73 74  value(sqlite3_st
7220: 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20  mt*, int, const 
7230: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
7240: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
7250: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72  he number of par
7260: 61 6d 65 74 65 72 73 20 69 6e 20 61 20 63 6f 6d  ameters in a com
7270: 70 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d  piled SQL statem
7280: 65 6e 74 2e 20 20 54 68 69 73 0a 2a 2a 20 72 6f  ent.  This.** ro
7290: 75 74 69 6e 65 20 77 61 73 20 61 64 64 65 64 20  utine was added 
72a0: 74 6f 20 73 75 70 70 6f 72 74 20 44 42 44 3a 3a  to support DBD::
72b0: 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73  SQLite..*/.int s
72c0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
72d0: 6d 65 74 65 72 5f 63 6f 75 6e 74 28 73 71 6c 69  meter_count(sqli
72e0: 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
72f0: 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 61  ** Return the na
7300: 6d 65 20 6f 66 20 74 68 65 20 69 2d 74 68 20 70  me of the i-th p
7310: 61 72 61 6d 65 74 65 72 2e 20 20 4f 72 64 69 6e  arameter.  Ordin
7320: 61 72 79 20 70 61 72 61 6d 65 74 65 72 73 20 22  ary parameters "
7330: 3f 22 20 61 72 65 0a 2a 2a 20 6e 61 6d 65 6c 65  ?" are.** namele
7340: 73 73 20 61 6e 64 20 61 20 4e 55 4c 4c 20 69 73  ss and a NULL is
7350: 20 72 65 74 75 72 6e 65 64 2e 20 20 46 6f 72 20   returned.  For 
7360: 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68  parameters of th
7370: 65 20 66 6f 72 6d 20 3a 41 41 41 20 6f 72 0a 2a  e form :AAA or.*
7380: 2a 20 24 56 56 56 20 74 68 65 20 63 6f 6d 70 6c  * $VVV the compl
7390: 65 74 65 20 74 65 78 74 20 6f 66 20 74 68 65 20  ete text of the 
73a0: 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 20 69  parameter name i
73b0: 73 20 72 65 74 75 72 6e 65 64 2c 20 69 6e 63 6c  s returned, incl
73c0: 75 64 69 6e 67 0a 2a 2a 20 74 68 65 20 69 6e 69  uding.** the ini
73d0: 74 69 61 6c 20 22 3a 22 20 6f 72 20 22 24 22 2e  tial ":" or "$".
73e0: 20 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e    NULL is return
73f0: 65 64 20 69 66 20 74 68 65 20 69 6e 64 65 78 20  ed if the index 
7400: 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2e  is out of range.
7410: 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a  .*/.const char *
7420: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
7430: 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73 71 6c 69  ameter_name(sqli
7440: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29 3b  te3_stmt*, int);
7450: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
7460: 68 65 20 69 6e 64 65 78 20 6f 66 20 61 20 70 61  he index of a pa
7470: 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65  rameter with the
7480: 20 67 69 76 65 6e 20 6e 61 6d 65 2e 20 20 54 68   given name.  Th
7490: 65 20 6e 61 6d 65 0a 2a 2a 20 6d 75 73 74 20 6d  e name.** must m
74a0: 61 74 63 68 20 65 78 61 63 74 6c 79 2e 20 20 49  atch exactly.  I
74b0: 66 20 6e 6f 20 70 61 72 61 6d 65 74 65 72 20 77  f no parameter w
74c0: 69 74 68 20 74 68 65 20 67 69 76 65 6e 20 6e 61  ith the given na
74d0: 6d 65 20 69 73 20 66 6f 75 6e 64 2c 0a 2a 2a 20  me is found,.** 
74e0: 72 65 74 75 72 6e 20 30 2e 0a 2a 2f 0a 69 6e 74  return 0..*/.int
74f0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
7500: 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 73 71  rameter_index(sq
7510: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 63 6f 6e  lite3_stmt*, con
7520: 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b  st char *zName);
7530: 0a 0a 2f 2a 0a 2a 2a 20 53 65 74 20 61 6c 6c 20  ../*.** Set all 
7540: 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 69  the parameters i
7550: 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 53  n the compiled S
7560: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20  QL statement to 
7570: 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  NULL..*/.int sql
7580: 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69  ite3_clear_bindi
7590: 6e 67 73 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ngs(sqlite3_stmt
75a0: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72  *);../*.** Retur
75b0: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
75c0: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
75d0: 65 73 75 6c 74 20 73 65 74 20 72 65 74 75 72 6e  esult set return
75e0: 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 69 6c  ed by the compil
75f0: 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d  ed.** SQL statem
7600: 65 6e 74 2e 20 54 68 69 73 20 72 6f 75 74 69 6e  ent. This routin
7610: 65 20 72 65 74 75 72 6e 73 20 30 20 69 66 20 70  e returns 0 if p
7620: 53 74 6d 74 20 69 73 20 61 6e 20 53 51 4c 20 73  Stmt is an SQL s
7630: 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 74 68 61 74  tatement.** that
7640: 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e   does not return
7650: 20 64 61 74 61 20 28 66 6f 72 20 65 78 61 6d 70   data (for examp
7660: 6c 65 20 61 6e 20 55 50 44 41 54 45 29 2e 0a 2a  le an UPDATE)..*
7670: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  /.int sqlite3_co
7680: 6c 75 6d 6e 5f 63 6f 75 6e 74 28 73 71 6c 69 74  lumn_count(sqlit
7690: 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b  e3_stmt *pStmt);
76a0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73  ../*.** The firs
76b0: 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  t parameter is a
76c0: 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74   compiled SQL st
76d0: 61 74 65 6d 65 6e 74 2e 20 54 68 69 73 20 66 75  atement. This fu
76e0: 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a 2a  nction returns.*
76f0: 2a 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 65 61  * the column hea
7700: 64 69 6e 67 20 66 6f 72 20 74 68 65 20 4e 74 68  ding for the Nth
7710: 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 61 74 20   column of that 
7720: 73 74 61 74 65 6d 65 6e 74 2c 20 77 68 65 72 65  statement, where
7730: 20 4e 20 69 73 20 74 68 65 0a 2a 2a 20 73 65 63   N is the.** sec
7740: 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20 70 61 72  ond function par
7750: 61 6d 65 74 65 72 2e 20 20 54 68 65 20 73 74 72  ameter.  The str
7760: 69 6e 67 20 72 65 74 75 72 6e 65 64 20 69 73 20  ing returned is 
7770: 55 54 46 2d 38 20 66 6f 72 0a 2a 2a 20 73 71 6c  UTF-8 for.** sql
7780: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
7790: 28 29 20 61 6e 64 20 55 54 46 2d 31 36 20 66 6f  () and UTF-16 fo
77a0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
77b0: 5f 6e 61 6d 65 31 36 28 29 2e 0a 2a 2f 0a 63 6f  _name16()..*/.co
77c0: 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
77d0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 73 71  3_column_name(sq
77e0: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29  lite3_stmt*,int)
77f0: 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  ;.const void *sq
7800: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
7810: 65 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  e16(sqlite3_stmt
7820: 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  *,int);../*.** T
7830: 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
7840: 65 72 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 64  er is a compiled
7850: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20   SQL statement. 
7860: 49 66 20 74 68 69 73 20 73 74 61 74 65 6d 65 6e  If this statemen
7870: 74 0a 2a 2a 20 69 73 20 61 20 53 45 4c 45 43 54  t.** is a SELECT
7880: 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 65 20   statement, the 
7890: 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68  Nth column of th
78a0: 65 20 72 65 74 75 72 6e 65 64 20 72 65 73 75 6c  e returned resul
78b0: 74 20 73 65 74 20 0a 2a 2a 20 6f 66 20 74 68 65  t set .** of the
78c0: 20 53 45 4c 45 43 54 20 69 73 20 61 20 74 61 62   SELECT is a tab
78d0: 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 65 6e 20 74  le column then t
78e0: 68 65 20 64 65 63 6c 61 72 65 64 20 74 79 70 65  he declared type
78f0: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 0a 2a 2a   of the table.**
7900: 20 63 6f 6c 75 6d 6e 20 69 73 20 72 65 74 75 72   column is retur
7910: 6e 65 64 2e 20 49 66 20 74 68 65 20 4e 74 68 20  ned. If the Nth 
7920: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65  column of the re
7930: 73 75 6c 74 20 73 65 74 20 69 73 20 6e 6f 74 20  sult set is not 
7940: 61 74 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75  at table.** colu
7950: 6d 6e 2c 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20  mn, then a NULL 
7960: 70 6f 69 6e 74 65 72 20 69 73 20 72 65 74 75 72  pointer is retur
7970: 6e 65 64 2e 20 54 68 65 20 72 65 74 75 72 6e 65  ned. The returne
7980: 64 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77 61  d string is alwa
7990: 79 73 0a 2a 2a 20 55 54 46 2d 38 20 65 6e 63 6f  ys.** UTF-8 enco
79a0: 64 65 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65  ded. For example
79b0: 2c 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  , in the databas
79c0: 65 20 73 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20  e schema:.**.** 
79d0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28  CREATE TABLE t1(
79e0: 63 31 20 56 41 52 49 41 4e 54 29 3b 0a 2a 2a 0a  c1 VARIANT);.**.
79f0: 2a 2a 20 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f  ** And the follo
7a00: 77 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63  wing statement c
7a10: 6f 6d 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53  ompiled:.**.** S
7a20: 45 4c 45 43 54 20 63 31 20 2b 20 31 2c 20 30 20  ELECT c1 + 1, 0 
7a30: 46 52 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54  FROM t1;.**.** T
7a40: 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65  hen this routine
7a50: 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68   would return th
7a60: 65 20 73 74 72 69 6e 67 20 22 56 41 52 49 41 4e  e string "VARIAN
7a70: 54 22 20 66 6f 72 20 74 68 65 20 73 65 63 6f 6e  T" for the secon
7a80: 64 0a 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c 75  d.** result colu
7a90: 6d 6e 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20 61  mn (i==1), and a
7aa0: 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f   NULL pointer fo
7ab0: 72 20 74 68 65 20 66 69 72 73 74 20 72 65 73 75  r the first resu
7ac0: 6c 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d  lt column.** (i=
7ad0: 3d 30 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68  =0)..*/.const ch
7ae0: 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ar *sqlite3_colu
7af0: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 73 71 6c 69  mn_decltype(sqli
7b00: 74 65 33 5f 73 74 6d 74 20 2a 2c 20 69 6e 74 20  te3_stmt *, int 
7b10: 69 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66  i);../*.** The f
7b20: 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
7b30: 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  s a compiled SQL
7b40: 20 73 74 61 74 65 6d 65 6e 74 2e 20 49 66 20 74   statement. If t
7b50: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  his statement.**
7b60: 20 69 73 20 61 20 53 45 4c 45 43 54 20 73 74 61   is a SELECT sta
7b70: 74 65 6d 65 6e 74 2c 20 74 68 65 20 4e 74 68 20  tement, the Nth 
7b80: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65  column of the re
7b90: 74 75 72 6e 65 64 20 72 65 73 75 6c 74 20 73 65  turned result se
7ba0: 74 20 0a 2a 2a 20 6f 66 20 74 68 65 20 53 45 4c  t .** of the SEL
7bb0: 45 43 54 20 69 73 20 61 20 74 61 62 6c 65 20 63  ECT is a table c
7bc0: 6f 6c 75 6d 6e 20 74 68 65 6e 20 74 68 65 20 64  olumn then the d
7bd0: 65 63 6c 61 72 65 64 20 74 79 70 65 20 6f 66 20  eclared type of 
7be0: 74 68 65 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c  the table.** col
7bf0: 75 6d 6e 20 69 73 20 72 65 74 75 72 6e 65 64 2e  umn is returned.
7c00: 20 49 66 20 74 68 65 20 4e 74 68 20 63 6f 6c 75   If the Nth colu
7c10: 6d 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  mn of the result
7c20: 20 73 65 74 20 69 73 20 6e 6f 74 20 61 74 20 74   set is not at t
7c30: 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c 20  able.** column, 
7c40: 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  then a NULL poin
7c50: 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ter is returned.
7c60: 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73 74   The returned st
7c70: 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 0a 2a  ring is always.*
7c80: 2a 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64  * UTF-16 encoded
7c90: 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  . For example, i
7ca0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  n the database s
7cb0: 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43 52 45  chema:.**.** CRE
7cc0: 41 54 45 20 54 41 42 4c 45 20 74 31 28 63 31 20  ATE TABLE t1(c1 
7cd0: 49 4e 54 45 47 45 52 29 3b 0a 2a 2a 0a 2a 2a 20  INTEGER);.**.** 
7ce0: 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  And the followin
7cf0: 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70  g statement comp
7d00: 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c 45  iled:.**.** SELE
7d10: 43 54 20 63 31 20 2b 20 31 2c 20 30 20 46 52 4f  CT c1 + 1, 0 FRO
7d20: 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54 68 65 6e  M t1;.**.** Then
7d30: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 6f   this routine wo
7d40: 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20 73  uld return the s
7d50: 74 72 69 6e 67 20 22 49 4e 54 45 47 45 52 22 20  tring "INTEGER" 
7d60: 66 6f 72 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a  for the second.*
7d70: 2a 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20  * result column 
7d80: 28 69 3d 3d 31 29 2c 20 61 6e 64 20 61 20 4e 55  (i==1), and a NU
7d90: 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 74  LL pointer for t
7da0: 68 65 20 66 69 72 73 74 20 72 65 73 75 6c 74 20  he first result 
7db0: 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d 3d 30 29  column.** (i==0)
7dc0: 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69 64 20  ..*/.const void 
7dd0: 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
7de0: 64 65 63 6c 74 79 70 65 31 36 28 73 71 6c 69 74  decltype16(sqlit
7df0: 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 0a  e3_stmt*,int);..
7e00: 2f 2a 20 0a 2a 2a 20 41 66 74 65 72 20 61 6e 20  /* .** After an 
7e10: 53 51 4c 20 71 75 65 72 79 20 68 61 73 20 62 65  SQL query has be
7e20: 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  en compiled with
7e30: 20 61 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65   a call to eithe
7e40: 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65  r.** sqlite3_pre
7e50: 70 61 72 65 28 29 20 6f 72 20 73 71 6c 69 74 65  pare() or sqlite
7e60: 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c 20 74  3_prepare16(), t
7e70: 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74 69 6f  hen this functio
7e80: 6e 20 6d 75 73 74 20 62 65 0a 2a 2a 20 63 61 6c  n must be.** cal
7e90: 6c 65 64 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  led one or more 
7ea0: 74 69 6d 65 73 20 74 6f 20 65 78 65 63 75 74 65  times to execute
7eb0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2e 0a   the statement..
7ec0: 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75 72 6e  **.** The return
7ed0: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 65   value will be e
7ee0: 69 74 68 65 72 20 53 51 4c 49 54 45 5f 42 55 53  ither SQLITE_BUS
7ef0: 59 2c 20 53 51 4c 49 54 45 5f 44 4f 4e 45 2c 20  Y, SQLITE_DONE, 
7f00: 0a 2a 2a 20 53 51 4c 49 54 45 5f 52 4f 57 2c 20  .** SQLITE_ROW, 
7f10: 53 51 4c 49 54 45 5f 45 52 52 4f 52 2c 20 6f 72  SQLITE_ERROR, or
7f20: 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2e 0a   SQLITE_MISUSE..
7f30: 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 42 55 53  **.** SQLITE_BUS
7f40: 59 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65  Y means that the
7f50: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
7f60: 20 61 74 74 65 6d 70 74 65 64 20 74 6f 20 6f 70   attempted to op
7f70: 65 6e 0a 2a 2a 20 61 20 6c 6f 63 6b 65 64 20 64  en.** a locked d
7f80: 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65 72  atabase and ther
7f90: 65 20 69 73 20 6e 6f 20 62 75 73 79 20 63 61 6c  e is no busy cal
7fa0: 6c 62 61 63 6b 20 72 65 67 69 73 74 65 72 65 64  lback registered
7fb0: 2e 0a 2a 2a 20 43 61 6c 6c 20 73 71 6c 69 74 65  ..** Call sqlite
7fc0: 33 5f 73 74 65 70 28 29 20 61 67 61 69 6e 20 74  3_step() again t
7fd0: 6f 20 72 65 74 72 79 20 74 68 65 20 6f 70 65 6e  o retry the open
7fe0: 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 44  ..**.** SQLITE_D
7ff0: 4f 4e 45 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ONE means that t
8000: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73  he statement has
8010: 20 66 69 6e 69 73 68 65 64 20 65 78 65 63 75 74   finished execut
8020: 69 6e 67 0a 2a 2a 20 73 75 63 63 65 73 73 66 75  ing.** successfu
8030: 6c 6c 79 2e 20 20 73 71 6c 69 74 65 33 5f 73 74  lly.  sqlite3_st
8040: 65 70 28 29 20 73 68 6f 75 6c 64 20 6e 6f 74 20  ep() should not 
8050: 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20  be called again 
8060: 6f 6e 20 74 68 69 73 20 76 69 72 74 75 61 6c 0a  on this virtual.
8070: 2a 2a 20 6d 61 63 68 69 6e 65 2e 0a 2a 2a 0a 2a  ** machine..**.*
8080: 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73 74 61  * If the SQL sta
8090: 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 78 65  tement being exe
80a0: 63 75 74 65 64 20 72 65 74 75 72 6e 73 20 61 6e  cuted returns an
80b0: 79 20 64 61 74 61 2c 20 74 68 65 6e 20 0a 2a 2a  y data, then .**
80c0: 20 53 51 4c 49 54 45 5f 52 4f 57 20 69 73 20 72   SQLITE_ROW is r
80d0: 65 74 75 72 6e 65 64 20 65 61 63 68 20 74 69 6d  eturned each tim
80e0: 65 20 61 20 6e 65 77 20 72 6f 77 20 6f 66 20 64  e a new row of d
80f0: 61 74 61 20 69 73 20 72 65 61 64 79 0a 2a 2a 20  ata is ready.** 
8100: 66 6f 72 20 70 72 6f 63 65 73 73 69 6e 67 20 62  for processing b
8110: 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 20 54 68  y the caller. Th
8120: 65 20 76 61 6c 75 65 73 20 6d 61 79 20 62 65 20  e values may be 
8130: 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 0a 2a  accessed using.*
8140: 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 6f  * the sqlite3_co
8150: 6c 75 6d 6e 5f 2a 28 29 20 66 75 6e 63 74 69 6f  lumn_*() functio
8160: 6e 73 20 64 65 73 63 72 69 62 65 64 20 62 65 6c  ns described bel
8170: 6f 77 2e 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ow. sqlite3_step
8180: 28 29 0a 2a 2a 20 69 73 20 63 61 6c 6c 65 64 20  ().** is called 
8190: 61 67 61 69 6e 20 74 6f 20 72 65 74 72 69 65 76  again to retriev
81a0: 65 20 74 68 65 20 6e 65 78 74 20 72 6f 77 20 6f  e the next row o
81b0: 66 20 64 61 74 61 2e 0a 2a 2a 20 0a 2a 2a 20 53  f data..** .** S
81c0: 51 4c 49 54 45 5f 45 52 52 4f 52 20 6d 65 61 6e  QLITE_ERROR mean
81d0: 73 20 74 68 61 74 20 61 20 72 75 6e 2d 74 69 6d  s that a run-tim
81e0: 65 20 65 72 72 6f 72 20 28 73 75 63 68 20 61 73  e error (such as
81f0: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a   a constraint.**
8200: 20 76 69 6f 6c 61 74 69 6f 6e 29 20 68 61 73 20   violation) has 
8210: 6f 63 63 75 72 72 65 64 2e 20 20 73 71 6c 69 74  occurred.  sqlit
8220: 65 33 5f 73 74 65 70 28 29 20 73 68 6f 75 6c 64  e3_step() should
8230: 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65 64 20 61   not be called a
8240: 67 61 69 6e 20 6f 6e 0a 2a 2a 20 74 68 65 20 56  gain on.** the V
8250: 4d 2e 20 4d 6f 72 65 20 69 6e 66 6f 72 6d 61 74  M. More informat
8260: 69 6f 6e 20 6d 61 79 20 62 65 20 66 6f 75 6e 64  ion may be found
8270: 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69   by calling sqli
8280: 74 65 33 5f 65 72 72 6d 73 67 28 29 2e 0a 2a 2a  te3_errmsg()..**
8290: 0a 2a 2a 20 53 51 4c 49 54 45 5f 4d 49 53 55 53  .** SQLITE_MISUS
82a0: 45 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65  E means that the
82b0: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 61   this routine wa
82c0: 73 20 63 61 6c 6c 65 64 20 69 6e 61 70 70 72 6f  s called inappro
82d0: 70 72 69 61 74 65 6c 79 2e 0a 2a 2a 20 50 65 72  priately..** Per
82e0: 68 61 70 73 20 69 74 20 77 61 73 20 63 61 6c 6c  haps it was call
82f0: 65 64 20 6f 6e 20 61 20 76 69 72 74 75 61 6c 20  ed on a virtual 
8300: 6d 61 63 68 69 6e 65 20 74 68 61 74 20 68 61 64  machine that had
8310: 20 61 6c 72 65 61 64 79 20 62 65 65 6e 0a 2a 2a   already been.**
8320: 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 20 6f 6e   finalized or on
8330: 20 6f 6e 65 20 74 68 61 74 20 68 61 64 20 70 72   one that had pr
8340: 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72 6e 65  eviously returne
8350: 64 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 6f  d SQLITE_ERROR o
8360: 72 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 4f 4e 45  r.** SQLITE_DONE
8370: 2e 20 20 4f 72 20 69 74 20 63 6f 75 6c 64 20 62  .  Or it could b
8380: 65 20 74 68 65 20 63 61 73 65 20 74 68 65 20 74  e the case the t
8390: 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
83a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 69   connection.** i
83b0: 73 20 62 65 69 6e 67 20 75 73 65 64 20 73 69 6d  s being used sim
83c0: 75 6c 61 74 61 6e 65 6f 75 73 6c 79 20 62 79 20  ulataneously by 
83d0: 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74 68 72 65  two or more thre
83e0: 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ads..*/.int sqli
83f0: 74 65 33 5f 73 74 65 70 28 73 71 6c 69 74 65 33  te3_step(sqlite3
8400: 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  _stmt*);../*.** 
8410: 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65  Return the numbe
8420: 72 20 6f 66 20 76 61 6c 75 65 73 20 69 6e 20 74  r of values in t
8430: 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20 6f  he current row o
8440: 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
8450: 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 61 20  ..**.** After a 
8460: 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f  call to sqlite3_
8470: 73 74 65 70 28 29 20 74 68 61 74 20 72 65 74 75  step() that retu
8480: 72 6e 73 20 53 51 4c 49 54 45 5f 52 4f 57 2c 20  rns SQLITE_ROW, 
8490: 74 68 69 73 20 72 6f 75 74 69 6e 65 0a 2a 2a 20  this routine.** 
84a0: 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20  will return the 
84b0: 73 61 6d 65 20 76 61 6c 75 65 20 61 73 20 74 68  same value as th
84c0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
84d0: 5f 63 6f 75 6e 74 28 29 20 66 75 6e 63 74 69 6f  _count() functio
84e0: 6e 2e 0a 2a 2a 20 41 66 74 65 72 20 73 71 6c 69  n..** After sqli
84f0: 74 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 72  te3_step() has r
8500: 65 74 75 72 6e 65 64 20 61 6e 20 53 51 4c 49 54  eturned an SQLIT
8510: 45 5f 44 4f 4e 45 2c 20 53 51 4c 49 54 45 5f 42  E_DONE, SQLITE_B
8520: 55 53 59 20 6f 72 0a 2a 2a 20 65 72 72 6f 72 20  USY or.** error 
8530: 63 6f 64 65 2c 20 6f 72 20 62 65 66 6f 72 65 20  code, or before 
8540: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68  sqlite3_step() h
8550: 61 73 20 62 65 65 6e 20 63 61 6c 6c 65 64 20 6f  as been called o
8560: 6e 20 61 20 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64  n a .** compiled
8570: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20   SQL statement, 
8580: 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 74  this routine ret
8590: 75 72 6e 73 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e  urns zero..*/.in
85a0: 74 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f 63  t sqlite3_data_c
85b0: 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d  ount(sqlite3_stm
85c0: 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a  t *pStmt);../*.*
85d0: 2a 20 56 61 6c 75 65 73 20 61 72 65 20 73 74 6f  * Values are sto
85e0: 72 65 64 20 69 6e 20 74 68 65 20 64 61 74 61 62  red in the datab
85f0: 61 73 65 20 69 6e 20 6f 6e 65 20 6f 66 20 74 68  ase in one of th
8600: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e 64  e following fund
8610: 61 6d 65 6e 74 61 6c 0a 2a 2a 20 74 79 70 65 73  amental.** types
8620: 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
8630: 49 54 45 5f 49 4e 54 45 47 45 52 20 20 31 0a 23  ITE_INTEGER  1.#
8640: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 4c  define SQLITE_FL
8650: 4f 41 54 20 20 20 20 32 0a 2f 2a 20 23 64 65 66  OAT    2./* #def
8660: 69 6e 65 20 53 51 4c 49 54 45 5f 54 45 58 54 20  ine SQLITE_TEXT 
8670: 20 33 20 20 2f 2f 20 53 65 65 20 62 65 6c 6f 77   3  // See below
8680: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
8690: 54 45 5f 42 4c 4f 42 20 20 20 20 20 34 0a 23 64  TE_BLOB     4.#d
86a0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 55 4c  efine SQLITE_NUL
86b0: 4c 20 20 20 20 20 35 0a 0a 2f 2a 0a 2a 2a 20 53  L     5../*.** S
86c0: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32 20  QLite version 2 
86d0: 64 65 66 69 6e 65 73 20 53 51 4c 49 54 45 5f 54  defines SQLITE_T
86e0: 45 58 54 20 64 69 66 66 65 72 65 6e 74 6c 79 2e  EXT differently.
86f0: 20 20 54 6f 20 61 6c 6c 6f 77 20 62 6f 74 68 0a    To allow both.
8700: 2a 2a 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64  ** version 2 and
8710: 20 76 65 72 73 69 6f 6e 20 33 20 74 6f 20 62 65   version 3 to be
8720: 20 69 6e 63 6c 75 64 65 64 2c 20 75 6e 64 65 66   included, undef
8730: 69 6e 65 20 74 68 65 6d 20 62 6f 74 68 20 69 66  ine them both if
8740: 20 61 0a 2a 2a 20 63 6f 6e 66 6c 69 63 74 20 69   a.** conflict i
8750: 73 20 73 65 65 6e 2e 20 20 44 65 66 69 6e 65 20  s seen.  Define 
8760: 53 51 4c 49 54 45 33 5f 54 45 58 54 20 74 6f 20  SQLITE3_TEXT to 
8770: 62 65 20 74 68 65 20 76 65 72 73 69 6f 6e 20 33  be the version 3
8780: 20 76 61 6c 75 65 2e 0a 2a 2f 0a 23 69 66 64 65   value..*/.#ifde
8790: 66 20 53 51 4c 49 54 45 5f 54 45 58 54 0a 23 20  f SQLITE_TEXT.# 
87a0: 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 54 45 58  undef SQLITE_TEX
87b0: 54 0a 23 65 6c 73 65 0a 23 20 64 65 66 69 6e 65  T.#else.# define
87c0: 20 53 51 4c 49 54 45 5f 54 45 58 54 20 20 20 20   SQLITE_TEXT    
87d0: 20 33 0a 23 65 6e 64 69 66 0a 23 64 65 66 69 6e   3.#endif.#defin
87e0: 65 20 53 51 4c 49 54 45 33 5f 54 45 58 54 20 20  e SQLITE3_TEXT  
87f0: 20 20 20 33 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20     3../*.** The 
8800: 6e 65 78 74 20 67 72 6f 75 70 20 6f 66 20 72 6f  next group of ro
8810: 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73 20 69  utines returns i
8820: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
8830: 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   the information
8840: 0a 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c 65 20  .** in a single 
8850: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 63 75  column of the cu
8860: 72 72 65 6e 74 20 72 65 73 75 6c 74 20 72 6f 77  rrent result row
8870: 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 49 6e   of a query.  In
8880: 20 65 76 65 72 79 0a 2a 2a 20 63 61 73 65 20 74   every.** case t
8890: 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
88a0: 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  er is a pointer 
88b0: 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  to the SQL state
88c0: 6d 65 6e 74 20 74 68 61 74 20 69 73 20 62 65 69  ment that is bei
88d0: 6e 67 0a 2a 2a 20 65 78 65 63 75 74 65 64 20 28  ng.** executed (
88e0: 74 68 65 20 73 71 6c 69 74 65 5f 73 74 6d 74 2a  the sqlite_stmt*
88f0: 20 74 68 61 74 20 77 61 73 20 72 65 74 75 72 6e   that was return
8900: 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ed from sqlite3_
8910: 70 72 65 70 61 72 65 28 29 29 20 61 6e 64 0a 2a  prepare()) and.*
8920: 2a 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  * the second arg
8930: 75 6d 65 6e 74 20 69 73 20 74 68 65 20 69 6e 64  ument is the ind
8940: 65 78 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  ex of the column
8950: 20 66 6f 72 20 77 68 69 63 68 20 69 6e 66 6f 72   for which infor
8960: 6d 61 74 69 6f 6e 20 0a 2a 2a 20 73 68 6f 75 6c  mation .** shoul
8970: 64 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20  d be returned.  
8980: 69 43 6f 6c 20 69 73 20 7a 65 72 6f 2d 69 6e 64  iCol is zero-ind
8990: 65 78 65 64 2e 20 20 54 68 65 20 6c 65 66 74 2d  exed.  The left-
89a0: 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 61 73 20 61  most column as a
89b0: 6e 0a 2a 2a 20 69 6e 64 65 78 20 6f 66 20 30 2e  n.** index of 0.
89c0: 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 53 51  .**.** If the SQ
89d0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e  L statement is n
89e0: 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 70 6f 69  ot currently poi
89f0: 6e 74 20 74 6f 20 61 20 76 61 6c 69 64 20 72 6f  nt to a valid ro
8a00: 77 2c 20 6f 72 20 69 66 20 74 68 65 0a 2a 2a 20  w, or if the.** 
8a10: 74 68 65 20 63 6f 6c 75 6c 6d 6e 20 69 6e 64 65  the colulmn inde
8a20: 78 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67  x is out of rang
8a30: 65 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  e, the result is
8a40: 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a   undefined..**.*
8a50: 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
8a60: 20 61 74 74 65 6d 70 74 20 74 6f 20 63 6f 6e 76   attempt to conv
8a70: 65 72 74 20 74 68 65 20 76 61 6c 75 65 20 77 68  ert the value wh
8a80: 65 72 65 20 61 70 70 72 6f 70 72 69 61 74 65 2e  ere appropriate.
8a90: 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70 6c 65    For.** example
8aa0: 2c 20 69 66 20 74 68 65 20 69 6e 74 65 72 6e 61  , if the interna
8ab0: 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
8ac0: 20 69 73 20 46 4c 4f 41 54 20 61 6e 64 20 61 20   is FLOAT and a 
8ad0: 74 65 78 74 20 72 65 73 75 6c 74 0a 2a 2a 20 69  text result.** i
8ae0: 73 20 72 65 71 75 65 73 74 65 64 2c 20 73 70 72  s requested, spr
8af0: 69 6e 74 66 28 29 20 69 73 20 75 73 65 64 20 69  intf() is used i
8b00: 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 6f 20  nternally to do 
8b10: 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 0a 2a  the conversion.*
8b20: 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  * automatically.
8b30: 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20    The following 
8b40: 74 61 62 6c 65 20 64 65 74 61 69 6c 73 20 74 68  table details th
8b50: 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 74 68  e conversions th
8b60: 61 74 0a 2a 2a 20 61 72 65 20 61 70 70 6c 69 65  at.** are applie
8b70: 64 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 49 6e 74 65  d:.**.**    Inte
8b80: 72 6e 61 6c 20 54 79 70 65 20 20 20 20 52 65 71  rnal Type    Req
8b90: 75 65 73 74 65 64 20 54 79 70 65 20 20 20 20 20  uested Type     
8ba0: 43 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a 20 20 20  Conversion.**   
8bb0: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20   -------------  
8bc0: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    --------------
8bd0: 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d      ------------
8be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a  --------------.*
8bf0: 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  *       NULL    
8c00: 20 20 20 20 20 20 20 20 20 49 4e 54 45 47 45 52           INTEGER
8c10: 20 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 20           Result 
8c20: 69 73 20 30 0a 2a 2a 20 20 20 20 20 20 20 4e 55  is 0.**       NU
8c30: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 46  LL             F
8c40: 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 52  LOAT           R
8c50: 65 73 75 6c 74 20 69 73 20 30 2e 30 0a 2a 2a 20  esult is 0.0.** 
8c60: 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
8c70: 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20         TEXT     
8c80: 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 69 73         Result is
8c90: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
8ca0: 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  .**       NULL  
8cb0: 20 20 20 20 20 20 20 20 20 20 20 42 4c 4f 42 20             BLOB 
8cc0: 20 20 20 20 20 20 20 20 20 20 20 52 65 73 75 6c             Resul
8cd0: 74 20 69 73 20 61 20 7a 65 72 6f 2d 6c 65 6e 67  t is a zero-leng
8ce0: 74 68 20 42 4c 4f 42 0a 2a 2a 20 20 20 20 20 20  th BLOB.**      
8cf0: 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20 20   INTEGER        
8d00: 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20    FLOAT         
8d10: 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20 69    Convert from i
8d20: 6e 74 65 67 65 72 20 74 6f 20 66 6c 6f 61 74 0a  nteger to float.
8d30: 2a 2a 20 20 20 20 20 20 20 49 4e 54 45 47 45 52  **       INTEGER
8d40: 20 20 20 20 20 20 20 20 20 20 54 45 58 54 20 20            TEXT  
8d50: 20 20 20 20 20 20 20 20 20 20 41 53 43 49 49 20            ASCII 
8d60: 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65  rendering of the
8d70: 20 69 6e 74 65 67 65 72 0a 2a 2a 20 20 20 20 20   integer.**     
8d80: 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20    INTEGER       
8d90: 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20     BLOB         
8da0: 20 20 20 53 61 6d 65 20 61 73 20 66 6f 72 20 49     Same as for I
8db0: 4e 54 45 47 45 52 2d 3e 54 45 58 54 0a 2a 2a 20  NTEGER->TEXT.** 
8dc0: 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20        FLOAT     
8dd0: 20 20 20 20 20 20 20 49 4e 54 45 47 45 52 20 20         INTEGER  
8de0: 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 20 66         Convert f
8df0: 72 6f 6d 20 66 6c 6f 61 74 20 74 6f 20 69 6e 74  rom float to int
8e00: 65 67 65 72 0a 2a 2a 20 20 20 20 20 20 20 46 4c  eger.**       FL
8e10: 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 20 54  OAT            T
8e20: 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20 41  EXT            A
8e30: 53 43 49 49 20 72 65 6e 64 65 72 69 6e 67 20 6f  SCII rendering o
8e40: 66 20 74 68 65 20 66 6c 6f 61 74 0a 2a 2a 20 20  f the float.**  
8e50: 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20       FLOAT      
8e60: 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20        BLOB      
8e70: 20 20 20 20 20 20 53 61 6d 65 20 61 73 20 46 4c        Same as FL
8e80: 4f 41 54 2d 3e 54 45 58 54 0a 2a 2a 20 20 20 20  OAT->TEXT.**    
8e90: 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20 20     TEXT         
8ea0: 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20      INTEGER     
8eb0: 20 20 20 20 55 73 65 20 61 74 6f 69 28 29 0a 2a      Use atoi().*
8ec0: 2a 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20  *       TEXT    
8ed0: 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20           FLOAT  
8ee0: 20 20 20 20 20 20 20 20 20 55 73 65 20 61 74 6f           Use ato
8ef0: 66 28 29 0a 2a 2a 20 20 20 20 20 20 20 54 45 58  f().**       TEX
8f00: 54 20 20 20 20 20 20 20 20 20 20 20 20 20 42 4c  T             BL
8f10: 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 4e 6f  OB            No
8f20: 20 63 68 61 6e 67 65 0a 2a 2a 20 20 20 20 20 20   change.**      
8f30: 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20   BLOB           
8f40: 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20    INTEGER       
8f50: 20 20 43 6f 6e 76 65 72 74 20 74 6f 20 54 45 58    Convert to TEX
8f60: 54 20 74 68 65 6e 20 75 73 65 20 61 74 6f 69 28  T then use atoi(
8f70: 29 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f 42 20  ).**       BLOB 
8f80: 20 20 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41              FLOA
8f90: 54 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e 76  T           Conv
8fa0: 65 72 74 20 74 6f 20 54 45 58 54 20 74 68 65 6e  ert to TEXT then
8fb0: 20 75 73 65 20 61 74 6f 66 28 29 0a 2a 2a 20 20   use atof().**  
8fc0: 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20       BLOB       
8fd0: 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20 20        TEXT      
8fe0: 20 20 20 20 20 20 41 64 64 20 61 20 5c 30 30 30        Add a \000
8ff0: 20 74 65 72 6d 69 6e 61 74 6f 72 20 69 66 20 6e   terminator if n
9000: 65 65 64 65 64 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eeded.**.** The 
9010: 66 6f 6c 6c 6f 77 69 6e 67 20 61 63 63 65 73 73  following access
9020: 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 70 72   routines are pr
9030: 6f 76 69 64 65 64 3a 0a 2a 2a 0a 2a 2a 20 5f 74  ovided:.**.** _t
9040: 79 70 65 28 29 20 20 20 20 20 52 65 74 75 72 6e  ype()     Return
9050: 20 74 68 65 20 64 61 74 61 74 79 70 65 20 6f 66   the datatype of
9060: 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68   the result.  Th
9070: 69 73 20 69 73 20 6f 6e 65 20 6f 66 0a 2a 2a 20  is is one of.** 
9080: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 49              SQLI
9090: 54 45 5f 49 4e 54 45 47 45 52 2c 20 53 51 4c 49  TE_INTEGER, SQLI
90a0: 54 45 5f 46 4c 4f 41 54 2c 20 53 51 4c 49 54 45  TE_FLOAT, SQLITE
90b0: 5f 54 45 58 54 2c 20 53 51 4c 49 54 45 5f 42 4c  _TEXT, SQLITE_BL
90c0: 4f 42 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  OB,.**          
90d0: 20 20 20 6f 72 20 53 51 4c 49 54 45 5f 4e 55 4c     or SQLITE_NUL
90e0: 4c 2e 0a 2a 2a 20 5f 62 6c 6f 62 28 29 20 20 20  L..** _blob()   
90f0: 20 20 52 65 74 75 72 6e 20 74 68 65 20 76 61 6c    Return the val
9100: 75 65 20 6f 66 20 61 20 42 4c 4f 42 2e 0a 2a 2a  ue of a BLOB..**
9110: 20 5f 62 79 74 65 73 28 29 20 20 20 20 52 65 74   _bytes()    Ret
9120: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
9130: 66 20 62 79 74 65 73 20 69 6e 20 61 20 42 4c 4f  f bytes in a BLO
9140: 42 20 76 61 6c 75 65 20 6f 72 20 74 68 65 20 6e  B value or the n
9150: 75 6d 62 65 72 0a 2a 2a 20 20 20 20 20 20 20 20  umber.**        
9160: 20 20 20 20 20 6f 66 20 62 79 74 65 73 20 69 6e       of bytes in
9170: 20 61 20 54 45 58 54 20 76 61 6c 75 65 20 72 65   a TEXT value re
9180: 70 72 65 73 65 6e 74 65 64 20 61 73 20 55 54 46  presented as UTF
9190: 2d 38 2e 20 20 54 68 65 20 5c 30 30 30 0a 2a 2a  -8.  The \000.**
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 72               ter
91b0: 6d 69 6e 61 74 6f 72 20 69 73 20 69 6e 63 6c 75  minator is inclu
91c0: 64 65 64 20 69 6e 20 74 68 65 20 62 79 74 65 20  ded in the byte 
91d0: 63 6f 75 6e 74 20 66 6f 72 20 54 45 58 54 20 76  count for TEXT v
91e0: 61 6c 75 65 73 2e 0a 2a 2a 20 5f 62 79 74 65 73  alues..** _bytes
91f0: 31 36 28 29 20 20 52 65 74 75 72 6e 20 74 68 65  16()  Return the
9200: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
9210: 20 69 6e 20 61 20 42 4c 4f 42 20 76 61 6c 75 65   in a BLOB value
9220: 20 6f 72 20 74 68 65 20 6e 75 6d 62 65 72 0a 2a   or the number.*
9230: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  *             of
9240: 20 62 79 74 65 73 20 69 6e 20 61 20 54 45 58 54   bytes in a TEXT
9250: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
9260: 65 64 20 61 73 20 55 54 46 2d 31 36 2e 20 20 54  ed as UTF-16.  T
9270: 68 65 20 5c 75 30 30 30 30 0a 2a 2a 20 20 20 20  he \u0000.**    
9280: 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61           termina
9290: 74 6f 72 20 69 73 20 69 6e 63 6c 75 64 65 64 20  tor is included 
92a0: 69 6e 20 74 68 65 20 62 79 74 65 20 63 6f 75 6e  in the byte coun
92b0: 74 20 66 6f 72 20 54 45 58 54 20 76 61 6c 75 65  t for TEXT value
92c0: 73 2e 0a 2a 2a 20 5f 64 6f 75 62 6c 65 28 29 20  s..** _double() 
92d0: 20 20 52 65 74 75 72 6e 20 61 20 46 4c 4f 41 54    Return a FLOAT
92e0: 20 76 61 6c 75 65 2e 0a 2a 2a 20 5f 69 6e 74 28   value..** _int(
92f0: 29 20 20 20 20 20 20 52 65 74 75 72 6e 20 61 6e  )      Return an
9300: 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65 20 69   INTEGER value i
9310: 6e 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70 75  n the host compu
9320: 74 65 72 27 73 20 6e 61 74 69 76 65 0a 2a 2a 20  ter's native.** 
9330: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65              inte
9340: 67 65 72 20 72 65 70 72 65 73 65 6e 74 61 74 69  ger representati
9350: 6f 6e 2e 20 20 54 68 69 73 20 6d 69 67 68 74 20  on.  This might 
9360: 62 65 20 65 69 74 68 65 72 20 61 20 33 32 2d 20  be either a 32- 
9370: 6f 72 20 36 34 2d 62 69 74 0a 2a 2a 20 20 20 20  or 64-bit.**    
9380: 20 20 20 20 20 20 20 20 20 69 6e 74 65 67 65 72           integer
9390: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
93a0: 65 20 68 6f 73 74 2e 0a 2a 2a 20 5f 69 6e 74 36  e host..** _int6
93b0: 34 28 29 20 20 20 20 52 65 74 75 72 6e 20 61 6e  4()    Return an
93c0: 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65 20 61   INTEGER value a
93d0: 73 20 61 20 36 34 2d 62 69 74 20 73 69 67 6e 65  s a 64-bit signe
93e0: 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 5f 74  d integer..** _t
93f0: 65 78 74 28 29 20 20 20 20 20 52 65 74 75 72 6e  ext()     Return
9400: 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 55 54   the value as UT
9410: 46 2d 38 20 74 65 78 74 2e 0a 2a 2a 20 5f 74 65  F-8 text..** _te
9420: 78 74 31 36 28 29 20 20 20 52 65 74 75 72 6e 20  xt16()   Return 
9430: 74 68 65 20 76 61 6c 75 65 20 61 73 20 55 54 46  the value as UTF
9440: 2d 31 36 20 74 65 78 74 2e 0a 2a 2f 0a 63 6f 6e  -16 text..*/.con
9450: 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  st void *sqlite3
9460: 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 73 71 6c  _column_blob(sql
9470: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
9480: 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74  iCol);.int sqlit
9490: 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28  e3_column_bytes(
94a0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
94b0: 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71  nt iCol);.int sq
94c0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
94d0: 65 73 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d  es16(sqlite3_stm
94e0: 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 64  t*, int iCol);.d
94f0: 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f  ouble sqlite3_co
9500: 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 73 71 6c 69  lumn_double(sqli
9510: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
9520: 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  Col);.int sqlite
9530: 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 73 71 6c  3_column_int(sql
9540: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
9550: 69 43 6f 6c 29 3b 0a 73 71 6c 69 74 65 5f 69 6e  iCol);.sqlite_in
9560: 74 36 34 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  t64 sqlite3_colu
9570: 6d 6e 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33  mn_int64(sqlite3
9580: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
9590: 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65  );.const unsigne
95a0: 64 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f  d char *sqlite3_
95b0: 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 73 71 6c 69  column_text(sqli
95c0: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
95d0: 43 6f 6c 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64  Col);.const void
95e0: 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   *sqlite3_column
95f0: 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65 33 5f  _text16(sqlite3_
9600: 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29  stmt*, int iCol)
9610: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  ;.int sqlite3_co
9620: 6c 75 6d 6e 5f 74 79 70 65 28 73 71 6c 69 74 65  lumn_type(sqlite
9630: 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f  3_stmt*, int iCo
9640: 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 73  l);../*.** The s
9650: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
9660: 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61  ) function is ca
9670: 6c 6c 65 64 20 74 6f 20 64 65 6c 65 74 65 20 61  lled to delete a
9680: 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51 4c   compiled.** SQL
9690: 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 74 61 69   statement obtai
96a0: 6e 65 64 20 62 79 20 61 20 70 72 65 76 69 6f 75  ned by a previou
96b0: 73 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  s call to sqlite
96c0: 33 5f 70 72 65 70 61 72 65 28 29 0a 2a 2a 20 6f  3_prepare().** o
96d0: 72 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  r sqlite3_prepar
96e0: 65 31 36 28 29 2e 20 49 66 20 74 68 65 20 73 74  e16(). If the st
96f0: 61 74 65 6d 65 6e 74 20 77 61 73 20 65 78 65 63  atement was exec
9700: 75 74 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  uted successfull
9710: 79 2c 20 6f 72 0a 2a 2a 20 6e 6f 74 20 65 78 65  y, or.** not exe
9720: 63 75 74 65 64 20 61 74 20 61 6c 6c 2c 20 74 68  cuted at all, th
9730: 65 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 73 20  en SQLITE_OK is 
9740: 72 65 74 75 72 6e 65 64 2e 20 49 66 20 65 78 65  returned. If exe
9750: 63 75 74 69 6f 6e 20 6f 66 20 74 68 65 0a 2a 2a  cution of the.**
9760: 20 73 74 61 74 65 6d 65 6e 74 20 66 61 69 6c 65   statement faile
9770: 64 20 74 68 65 6e 20 61 6e 20 65 72 72 6f 72 20  d then an error 
9780: 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65 64  code is returned
9790: 2e 20 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f  . .**.** This ro
97a0: 75 74 69 6e 65 20 63 61 6e 20 62 65 20 63 61 6c  utine can be cal
97b0: 6c 65 64 20 61 74 20 61 6e 79 20 70 6f 69 6e 74  led at any point
97c0: 20 64 75 72 69 6e 67 20 74 68 65 20 65 78 65 63   during the exec
97d0: 75 74 69 6f 6e 20 6f 66 20 74 68 65 0a 2a 2a 20  ution of the.** 
97e0: 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e  virtual machine.
97f0: 20 20 49 66 20 74 68 65 20 76 69 72 74 75 61 6c    If the virtual
9800: 20 6d 61 63 68 69 6e 65 20 68 61 73 20 6e 6f 74   machine has not
9810: 20 63 6f 6d 70 6c 65 74 65 64 20 65 78 65 63 75   completed execu
9820: 74 69 6f 6e 0a 2a 2a 20 77 68 65 6e 20 74 68 69  tion.** when thi
9830: 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c  s routine is cal
9840: 6c 65 64 2c 20 74 68 61 74 20 69 73 20 6c 69 6b  led, that is lik
9850: 65 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20 61  e encountering a
9860: 6e 20 65 72 72 6f 72 20 6f 72 0a 2a 2a 20 61 6e  n error or.** an
9870: 20 69 6e 74 65 72 72 75 70 74 2e 20 20 28 53 65   interrupt.  (Se
9880: 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  e sqlite3_interr
9890: 75 70 74 28 29 2e 29 20 20 49 6e 63 6f 6d 70 6c  upt().)  Incompl
98a0: 65 74 65 20 75 70 64 61 74 65 73 20 6d 61 79 20  ete updates may 
98b0: 62 65 0a 2a 2a 20 72 6f 6c 6c 65 64 20 62 61 63  be.** rolled bac
98c0: 6b 20 61 6e 64 20 74 72 61 6e 73 61 63 74 69 6f  k and transactio
98d0: 6e 73 20 63 61 6e 63 65 6c 6c 65 64 2c 20 20 64  ns cancelled,  d
98e0: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
98f0: 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2c 0a 2a  circumstances,.*
9900: 2a 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74  * and the result
9910: 20 63 6f 64 65 20 72 65 74 75 72 6e 65 64 20 77   code returned w
9920: 69 6c 6c 20 62 65 20 53 51 4c 49 54 45 5f 41 42  ill be SQLITE_AB
9930: 4f 52 54 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ORT..*/.int sqli
9940: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 73 71 6c  te3_finalize(sql
9950: 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74  ite3_stmt *pStmt
9960: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 73 71  );../*.** The sq
9970: 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20 66 75  lite3_reset() fu
9980: 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64  nction is called
9990: 20 74 6f 20 72 65 73 65 74 20 61 20 63 6f 6d 70   to reset a comp
99a0: 69 6c 65 64 20 53 51 4c 0a 2a 2a 20 73 74 61 74  iled SQL.** stat
99b0: 65 6d 65 6e 74 20 6f 62 74 61 69 6e 65 64 20 62  ement obtained b
99c0: 79 20 61 20 70 72 65 76 69 6f 75 73 20 63 61 6c  y a previous cal
99d0: 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 70 72 65  l to sqlite3_pre
99e0: 70 61 72 65 28 29 20 6f 72 0a 2a 2a 20 73 71 6c  pare() or.** sql
99f0: 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
9a00: 20 62 61 63 6b 20 74 6f 20 69 74 27 73 20 69 6e   back to it's in
9a10: 69 74 69 61 6c 20 73 74 61 74 65 2c 20 72 65 61  itial state, rea
9a20: 64 79 20 74 6f 20 62 65 20 72 65 2d 65 78 65 63  dy to be re-exec
9a30: 75 74 65 64 2e 0a 2a 2a 20 41 6e 79 20 53 51 4c  uted..** Any SQL
9a40: 20 73 74 61 74 65 6d 65 6e 74 20 76 61 72 69 61   statement varia
9a50: 62 6c 65 73 20 74 68 61 74 20 68 61 64 20 76 61  bles that had va
9a60: 6c 75 65 73 20 62 6f 75 6e 64 20 74 6f 20 74 68  lues bound to th
9a70: 65 6d 20 75 73 69 6e 67 0a 2a 2a 20 74 68 65 20  em using.** the 
9a80: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29  sqlite3_bind_*()
9a90: 20 41 50 49 20 72 65 74 61 69 6e 20 74 68 65 69   API retain thei
9aa0: 72 20 76 61 6c 75 65 73 2e 0a 2a 2f 0a 69 6e 74  r values..*/.int
9ab0: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 73   sqlite3_reset(s
9ac0: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74  qlite3_stmt *pSt
9ad0: 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  mt);../*.** The 
9ae0: 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 66 75  following two fu
9af0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 75 73 65 64  nctions are used
9b00: 20 74 6f 20 61 64 64 20 75 73 65 72 20 66 75 6e   to add user fun
9b10: 63 74 69 6f 6e 73 20 6f 72 20 61 67 67 72 65 67  ctions or aggreg
9b20: 61 74 65 73 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e  ates.** implemen
9b30: 74 65 64 20 69 6e 20 43 20 74 6f 20 74 68 65 20  ted in C to the 
9b40: 53 51 4c 20 6c 61 6e 67 61 75 67 65 20 69 6e 74  SQL langauge int
9b50: 65 72 70 72 65 74 65 64 20 62 79 20 53 51 4c 69  erpreted by SQLi
9b60: 74 65 2e 20 54 68 65 0a 2a 2a 20 64 69 66 66 65  te. The.** diffe
9b70: 72 65 6e 63 65 20 6f 6e 6c 79 20 62 65 74 77 65  rence only betwe
9b80: 65 6e 20 74 68 65 20 74 77 6f 20 69 73 20 74 68  en the two is th
9b90: 61 74 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61  at the second pa
9ba0: 72 61 6d 65 74 65 72 2c 20 74 68 65 0a 2a 2a 20  rameter, the.** 
9bb0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 28 73 63 61  name of the (sca
9bc0: 6c 61 72 29 20 66 75 6e 63 74 69 6f 6e 20 6f 72  lar) function or
9bd0: 20 61 67 67 72 65 67 61 74 65 2c 20 69 73 20 65   aggregate, is e
9be0: 6e 63 6f 64 65 64 20 69 6e 20 55 54 46 2d 38 20  ncoded in UTF-8 
9bf0: 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  for.** sqlite3_c
9c00: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
9c10: 20 61 6e 64 20 55 54 46 2d 31 36 20 66 6f 72 20   and UTF-16 for 
9c20: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
9c30: 75 6e 63 74 69 6f 6e 31 36 28 29 2e 0a 2a 2a 0a  unction16()..**.
9c40: 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72 67  ** The first arg
9c50: 75 6d 65 6e 74 20 69 73 20 74 68 65 20 64 61 74  ument is the dat
9c60: 61 62 61 73 65 20 68 61 6e 64 6c 65 20 74 68 61  abase handle tha
9c70: 74 20 74 68 65 20 6e 65 77 20 66 75 6e 63 74 69  t the new functi
9c80: 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67 72 65 67 61  on or.** aggrega
9c90: 74 65 20 69 73 20 74 6f 20 62 65 20 61 64 64 65  te is to be adde
9ca0: 64 20 74 6f 2e 20 49 66 20 61 20 73 69 6e 67 6c  d to. If a singl
9cb0: 65 20 70 72 6f 67 72 61 6d 20 75 73 65 73 20 6d  e program uses m
9cc0: 6f 72 65 20 74 68 61 6e 20 6f 6e 65 0a 2a 2a 20  ore than one.** 
9cd0: 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20  database handle 
9ce0: 69 6e 74 65 72 6e 61 6c 6c 79 2c 20 74 68 65 6e  internally, then
9cf0: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20   user functions 
9d00: 6f 72 20 61 67 67 72 65 67 61 74 65 73 20 6d 75  or aggregates mu
9d10: 73 74 20 0a 2a 2a 20 62 65 20 61 64 64 65 64 20  st .** be added 
9d20: 69 6e 64 69 76 69 64 75 61 6c 6c 79 20 74 6f 20  individually to 
9d30: 65 61 63 68 20 64 61 74 61 62 61 73 65 20 68 61  each database ha
9d40: 6e 64 6c 65 20 77 69 74 68 20 77 68 69 63 68 20  ndle with which 
9d50: 74 68 65 79 20 77 69 6c 6c 20 62 65 0a 2a 2a 20  they will be.** 
9d60: 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  used..**.** The 
9d70: 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20  third parameter 
9d80: 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  is the number of
9d90: 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20   arguments that 
9da0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72 0a  the function or.
9db0: 2a 2a 20 61 67 67 72 65 67 61 74 65 20 74 61 6b  ** aggregate tak
9dc0: 65 73 2e 20 49 66 20 74 68 69 73 20 70 61 72 61  es. If this para
9dd0: 6d 65 74 65 72 20 69 73 20 6e 65 67 61 74 69 76  meter is negativ
9de0: 65 2c 20 74 68 65 6e 20 74 68 65 20 66 75 6e 63  e, then the func
9df0: 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67 72 65  tion or.** aggre
9e00: 67 61 74 65 20 6d 61 79 20 74 61 6b 65 20 61 6e  gate may take an
9e10: 79 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  y number of argu
9e20: 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ments..**.** The
9e30: 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
9e40: 72 20 69 73 20 6f 6e 65 20 6f 66 20 53 51 4c 49  r is one of SQLI
9e50: 54 45 5f 55 54 46 2a 20 76 61 6c 75 65 73 20 64  TE_UTF* values d
9e60: 65 66 69 6e 65 64 20 62 65 6c 6f 77 2c 0a 2a 2a  efined below,.**
9e70: 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20   indicating the 
9e80: 65 6e 63 6f 64 69 6e 67 20 74 68 61 74 20 74 68  encoding that th
9e90: 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6d 6f  e function is mo
9ea0: 73 74 20 6c 69 6b 65 6c 79 20 74 6f 20 68 61 6e  st likely to han
9eb0: 64 6c 65 0a 2a 2a 20 76 61 6c 75 65 73 20 69 6e  dle.** values in
9ec0: 2e 20 20 54 68 69 73 20 64 6f 65 73 20 6e 6f 74  .  This does not
9ed0: 20 63 68 61 6e 67 65 20 74 68 65 20 62 65 68 61   change the beha
9ee0: 76 69 6f 75 72 20 6f 66 20 74 68 65 20 70 72 6f  viour of the pro
9ef0: 67 72 61 6d 6d 69 6e 67 0a 2a 2a 20 69 6e 74 65  gramming.** inte
9f00: 72 66 61 63 65 2e 20 48 6f 77 65 76 65 72 2c 20  rface. However, 
9f10: 69 66 20 74 77 6f 20 76 65 72 73 69 6f 6e 73 20  if two versions 
9f20: 6f 66 20 74 68 65 20 73 61 6d 65 20 66 75 6e 63  of the same func
9f30: 74 69 6f 6e 20 61 72 65 20 72 65 67 69 73 74 65  tion are registe
9f40: 72 65 64 0a 2a 2a 20 77 69 74 68 20 64 69 66 66  red.** with diff
9f50: 65 72 65 6e 74 20 65 6e 63 6f 64 69 6e 67 20 76  erent encoding v
9f60: 61 6c 75 65 73 2c 20 53 51 4c 69 74 65 20 69 6e  alues, SQLite in
9f70: 76 6f 6b 65 73 20 74 68 65 20 76 65 72 73 69 6f  vokes the versio
9f80: 6e 20 6c 69 6b 65 6c 79 20 74 6f 0a 2a 2a 20 6d  n likely to.** m
9f90: 69 6e 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69  inimize conversi
9fa0: 6f 6e 73 20 62 65 74 77 65 65 6e 20 74 65 78 74  ons between text
9fb0: 20 65 6e 63 6f 64 69 6e 67 73 2e 0a 2a 2a 0a 2a   encodings..**.*
9fc0: 2a 20 54 68 65 20 73 65 76 65 6e 74 68 2c 20 65  * The seventh, e
9fd0: 69 67 68 74 68 20 61 6e 64 20 6e 69 6e 74 68 20  ighth and ninth 
9fe0: 70 61 72 61 6d 65 74 65 72 73 2c 20 78 46 75 6e  parameters, xFun
9ff0: 63 2c 20 78 53 74 65 70 20 61 6e 64 20 78 46 69  c, xStep and xFi
a000: 6e 61 6c 2c 20 61 72 65 0a 2a 2a 20 70 6f 69 6e  nal, are.** poin
a010: 74 65 72 73 20 74 6f 20 75 73 65 72 20 69 6d 70  ters to user imp
a020: 6c 65 6d 65 6e 74 65 64 20 43 20 66 75 6e 63 74  lemented C funct
a030: 69 6f 6e 73 20 74 68 61 74 20 69 6d 70 6c 65 6d  ions that implem
a040: 65 6e 74 20 74 68 65 20 75 73 65 72 0a 2a 2a 20  ent the user.** 
a050: 66 75 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67 72  function or aggr
a060: 65 67 61 74 65 2e 20 41 20 73 63 61 6c 61 72 20  egate. A scalar 
a070: 66 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65  function require
a080: 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  s an implementat
a090: 69 6f 6e 20 6f 66 0a 2a 2a 20 74 68 65 20 78 46  ion of.** the xF
a0a0: 75 6e 63 20 63 61 6c 6c 62 61 63 6b 20 6f 6e 6c  unc callback onl
a0b0: 79 2c 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73  y, NULL pointers
a0c0: 20 73 68 6f 75 6c 64 20 62 65 20 70 61 73 73 65   should be passe
a0d0: 64 20 61 73 20 74 68 65 20 78 53 74 65 70 0a 2a  d as the xStep.*
a0e0: 2a 20 61 6e 64 20 78 46 69 6e 61 6c 20 70 61 72  * and xFinal par
a0f0: 61 6d 65 74 65 72 73 2e 20 41 6e 20 61 67 67 72  ameters. An aggr
a100: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 72  egate function r
a110: 65 71 75 69 72 65 73 20 61 6e 20 69 6d 70 6c 65  equires an imple
a120: 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20  mentation.** of 
a130: 78 53 74 65 70 20 61 6e 64 20 78 46 69 6e 61 6c  xStep and xFinal
a140: 2c 20 62 75 74 20 4e 55 4c 4c 20 73 68 6f 75 6c  , but NULL shoul
a150: 64 20 62 65 20 70 61 73 73 65 64 20 66 6f 72 20  d be passed for 
a160: 78 46 75 6e 63 2e 20 54 6f 20 64 65 6c 65 74 65  xFunc. To delete
a170: 20 61 6e 0a 2a 2a 20 65 78 69 73 74 69 6e 67 20   an.** existing 
a180: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 6f 72  user function or
a190: 20 61 67 67 72 65 67 61 74 65 2c 20 70 61 73 73   aggregate, pass
a1a0: 20 4e 55 4c 4c 20 66 6f 72 20 61 6c 6c 20 74 68   NULL for all th
a1b0: 72 65 65 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20  ree function.** 
a1c0: 63 61 6c 6c 62 61 63 6b 2e 20 53 70 65 63 69 66  callback. Specif
a1d0: 79 69 6e 67 20 61 6e 20 69 6e 63 6f 6e 73 74 65  ying an inconste
a1e0: 6e 74 20 73 65 74 20 6f 66 20 63 61 6c 6c 62 61  nt set of callba
a1f0: 63 6b 20 76 61 6c 75 65 73 2c 20 73 75 63 68 20  ck values, such 
a200: 61 73 20 61 6e 0a 2a 2a 20 78 46 75 6e 63 20 61  as an.** xFunc a
a210: 6e 64 20 61 6e 20 78 46 69 6e 61 6c 2c 20 6f 72  nd an xFinal, or
a220: 20 61 6e 20 78 53 74 65 70 20 62 75 74 20 6e 6f   an xStep but no
a230: 20 78 46 69 6e 61 6c 2c 20 53 51 4c 49 54 45 5f   xFinal, SQLITE_
a240: 45 52 52 4f 52 20 69 73 0a 2a 2a 20 72 65 74 75  ERROR is.** retu
a250: 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  rned..*/.int sql
a260: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
a270: 74 69 6f 6e 28 0a 20 20 73 71 6c 69 74 65 33 20  tion(.  sqlite3 
a280: 2a 2c 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  *,.  const char 
a290: 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 0a  *zFunctionName,.
a2a0: 20 20 69 6e 74 20 6e 41 72 67 2c 0a 20 20 69 6e    int nArg,.  in
a2b0: 74 20 65 54 65 78 74 52 65 70 2c 0a 20 20 76 6f  t eTextRep,.  vo
a2c0: 69 64 2a 2c 0a 20 20 76 6f 69 64 20 28 2a 78 46  id*,.  void (*xF
a2d0: 75 6e 63 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e  unc)(sqlite3_con
a2e0: 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74 65  text*,int,sqlite
a2f0: 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f  3_value**),.  vo
a300: 69 64 20 28 2a 78 53 74 65 70 29 28 73 71 6c 69  id (*xStep)(sqli
a310: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e 74  te3_context*,int
a320: 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 2a  ,sqlite3_value**
a330: 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 46 69 6e  ),.  void (*xFin
a340: 61 6c 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  al)(sqlite3_cont
a350: 65 78 74 2a 29 0a 29 3b 0a 69 6e 74 20 73 71 6c  ext*).);.int sql
a360: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
a370: 74 69 6f 6e 31 36 28 0a 20 20 73 71 6c 69 74 65  tion16(.  sqlite
a380: 33 2a 2c 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64  3*,.  const void
a390: 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c   *zFunctionName,
a3a0: 0a 20 20 69 6e 74 20 6e 41 72 67 2c 0a 20 20 69  .  int nArg,.  i
a3b0: 6e 74 20 65 54 65 78 74 52 65 70 2c 0a 20 20 76  nt eTextRep,.  v
a3c0: 6f 69 64 2a 2c 0a 20 20 76 6f 69 64 20 28 2a 78  oid*,.  void (*x
a3d0: 46 75 6e 63 29 28 73 71 6c 69 74 65 33 5f 63 6f  Func)(sqlite3_co
a3e0: 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74  ntext*,int,sqlit
a3f0: 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76  e3_value**),.  v
a400: 6f 69 64 20 28 2a 78 53 74 65 70 29 28 73 71 6c  oid (*xStep)(sql
a410: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e  ite3_context*,in
a420: 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  t,sqlite3_value*
a430: 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 46 69  *),.  void (*xFi
a440: 6e 61 6c 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e  nal)(sqlite3_con
a450: 74 65 78 74 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a 2a  text*).);../*.**
a460: 20 54 68 65 20 6e 65 78 74 20 72 6f 75 74 69 6e   The next routin
a470: 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  e returns the nu
a480: 6d 62 65 72 20 6f 66 20 63 61 6c 6c 73 20 74 6f  mber of calls to
a490: 20 78 53 74 65 70 20 66 6f 72 20 61 20 70 61 72   xStep for a par
a4a0: 74 69 63 75 6c 61 72 0a 2a 2a 20 61 67 67 72 65  ticular.** aggre
a4b0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e  gate function in
a4c0: 73 74 61 6e 63 65 2e 20 20 54 68 65 20 63 75 72  stance.  The cur
a4d0: 72 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 53 74  rent call to xSt
a4e0: 65 70 20 63 6f 75 6e 74 73 20 73 6f 20 74 68 69  ep counts so thi
a4f0: 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 61 6c 77  s.** routine alw
a500: 61 79 73 20 72 65 74 75 72 6e 73 20 61 74 20 6c  ays returns at l
a510: 65 61 73 74 20 31 2e 0a 2a 2f 0a 69 6e 74 20 73  east 1..*/.int s
a520: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
a530: 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 63  _count(sqlite3_c
a540: 6f 6e 74 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  ontext*);../*.**
a550: 20 54 68 65 20 6e 65 78 74 20 67 72 6f 75 70 20   The next group 
a560: 6f 66 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75  of routines retu
a570: 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  rns information 
a580: 61 62 6f 75 74 20 70 61 72 61 6d 65 74 65 72 73  about parameters
a590: 20 74 6f 0a 2a 2a 20 61 20 75 73 65 72 2d 64 65   to.** a user-de
a5a0: 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 2e 20  fined function. 
a5b0: 20 46 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d   Function implem
a5c0: 65 6e 74 61 74 69 6f 6e 73 20 75 73 65 20 74 68  entations use th
a5d0: 65 73 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a 20  ese routines.** 
a5e0: 74 6f 20 61 63 63 65 73 73 20 74 68 65 69 72 20  to access their 
a5f0: 70 61 72 61 6d 65 74 65 72 73 2e 20 20 54 68 65  parameters.  The
a600: 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20  se routines are 
a610: 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 0a  the same as the.
a620: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ** sqlite3_colum
a630: 6e 5f 2a 20 72 6f 75 74 69 6e 65 73 20 65 78 63  n_* routines exc
a640: 65 70 74 20 74 68 61 74 20 74 68 65 73 65 20 72  ept that these r
a650: 6f 75 74 69 6e 65 73 20 74 61 6b 65 20 61 20 73  outines take a s
a660: 69 6e 67 6c 65 0a 2a 2a 20 73 71 6c 69 74 65 33  ingle.** sqlite3
a670: 5f 76 61 6c 75 65 2a 20 70 6f 69 6e 74 65 72 20  _value* pointer 
a680: 69 6e 73 74 65 61 64 20 6f 66 20 61 6e 20 73 71  instead of an sq
a690: 6c 69 74 65 33 5f 73 74 6d 74 2a 20 61 6e 64 20  lite3_stmt* and 
a6a0: 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 63 6f  an integer.** co
a6b0: 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0a 2a 2f 0a  lumn number..*/.
a6c0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69  const void *sqli
a6d0: 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 73  te3_value_blob(s
a6e0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a  qlite3_value*);.
a6f0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
a700: 65 5f 62 79 74 65 73 28 73 71 6c 69 74 65 33 5f  e_bytes(sqlite3_
a710: 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c  value*);.int sql
a720: 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
a730: 31 36 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  16(sqlite3_value
a740: 2a 29 3b 0a 64 6f 75 62 6c 65 20 73 71 6c 69 74  *);.double sqlit
a750: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
a760: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
a770: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  .int sqlite3_val
a780: 75 65 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 76  ue_int(sqlite3_v
a790: 61 6c 75 65 2a 29 3b 0a 73 71 6c 69 74 65 5f 69  alue*);.sqlite_i
a7a0: 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 76 61 6c  nt64 sqlite3_val
a7b0: 75 65 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33  ue_int64(sqlite3
a7c0: 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20  _value*);.const 
a7d0: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73  unsigned char *s
a7e0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
a7f0: 74 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  t(sqlite3_value*
a800: 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73  );.const void *s
a810: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
a820: 74 31 36 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  t16(sqlite3_valu
a830: 65 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20  e*);.const void 
a840: 2a 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74  *sqlite3_value_t
a850: 65 78 74 31 36 6c 65 28 73 71 6c 69 74 65 33 5f  ext16le(sqlite3_
a860: 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 76  value*);.const v
a870: 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 76 61 6c  oid *sqlite3_val
a880: 75 65 5f 74 65 78 74 31 36 62 65 28 73 71 6c 69  ue_text16be(sqli
a890: 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74  te3_value*);.int
a8a0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
a8b0: 79 70 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  ype(sqlite3_valu
a8c0: 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 67 67 72  e*);../*.** Aggr
a8d0: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20  egate functions 
a8e0: 75 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  use the followin
a8f0: 67 20 72 6f 75 74 69 6e 65 20 74 6f 20 61 6c 6c  g routine to all
a900: 6f 63 61 74 65 0a 2a 2a 20 61 20 73 74 72 75 63  ocate.** a struc
a910: 74 75 72 65 20 66 6f 72 20 73 74 6f 72 69 6e 67  ture for storing
a920: 20 74 68 65 69 72 20 73 74 61 74 65 2e 20 20 54   their state.  T
a930: 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 74 68  he first time th
a940: 69 73 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 69 73  is routine.** is
a950: 20 63 61 6c 6c 65 64 20 66 6f 72 20 61 20 70 61   called for a pa
a960: 72 74 69 63 75 6c 61 72 20 61 67 67 72 65 67 61  rticular aggrega
a970: 74 65 2c 20 61 20 6e 65 77 20 73 74 72 75 63 74  te, a new struct
a980: 75 72 65 20 6f 66 20 73 69 7a 65 20 6e 42 79 74  ure of size nByt
a990: 65 73 0a 2a 2a 20 69 73 20 61 6c 6c 6f 63 61 74  es.** is allocat
a9a0: 65 64 2c 20 7a 65 72 6f 65 64 2c 20 61 6e 64 20  ed, zeroed, and 
a9b0: 72 65 74 75 72 6e 65 64 2e 20 20 4f 6e 20 73 75  returned.  On su
a9c0: 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 28  bsequent calls (
a9d0: 66 6f 72 20 74 68 65 0a 2a 2a 20 73 61 6d 65 20  for the.** same 
a9e0: 61 67 67 72 65 67 61 74 65 20 69 6e 73 74 61 6e  aggregate instan
a9f0: 63 65 29 20 74 68 65 20 73 61 6d 65 20 62 75 66  ce) the same buf
aa00: 66 65 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  fer is returned.
aa10: 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61    The implementa
aa20: 74 69 6f 6e 0a 2a 2a 20 6f 66 20 74 68 65 20 61  tion.** of the a
aa30: 67 67 72 65 67 61 74 65 20 63 61 6e 20 75 73 65  ggregate can use
aa40: 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 62 75   the returned bu
aa50: 66 66 65 72 20 74 6f 20 61 63 63 75 6d 75 6c 61  ffer to accumula
aa60: 74 65 20 64 61 74 61 2e 0a 2a 2a 0a 2a 2a 20 54  te data..**.** T
aa70: 68 65 20 62 75 66 66 65 72 20 61 6c 6c 6f 63 61  he buffer alloca
aa80: 74 65 64 20 69 73 20 66 72 65 65 64 20 61 75 74  ted is freed aut
aa90: 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 53 51  omatically by SQ
aaa0: 4c 69 74 65 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73  Lite..*/.void *s
aab0: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
aac0: 5f 63 6f 6e 74 65 78 74 28 73 71 6c 69 74 65 33  _context(sqlite3
aad0: 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 20 6e  _context*, int n
aae0: 42 79 74 65 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  Bytes);../*.** T
aaf0: 68 65 20 70 55 73 65 72 44 61 74 61 20 70 61 72  he pUserData par
ab00: 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 73 71  ameter to the sq
ab10: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
ab20: 63 74 69 6f 6e 28 29 0a 2a 2a 20 72 6f 75 74 69  ction().** routi
ab30: 6e 65 20 75 73 65 64 20 74 6f 20 72 65 67 69 73  ne used to regis
ab40: 74 65 72 20 75 73 65 72 20 66 75 6e 63 74 69 6f  ter user functio
ab50: 6e 73 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  ns is available 
ab60: 74 6f 0a 2a 2a 20 74 68 65 20 69 6d 70 6c 65 6d  to.** the implem
ab70: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
ab80: 66 75 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20 74  function using t
ab90: 68 69 73 20 63 61 6c 6c 2e 0a 2a 2f 0a 76 6f 69  his call..*/.voi
aba0: 64 20 2a 73 71 6c 69 74 65 33 5f 75 73 65 72 5f  d *sqlite3_user_
abb0: 64 61 74 61 28 73 71 6c 69 74 65 33 5f 63 6f 6e  data(sqlite3_con
abc0: 74 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  text*);../*.** T
abd0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f  he following two
abe0: 20 66 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62   functions may b
abf0: 65 20 75 73 65 64 20 62 79 20 73 63 61 6c 61 72  e used by scalar
ac00: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20   user functions 
ac10: 74 6f 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 20  to.** associate 
ac20: 6d 65 74 61 2d 64 61 74 61 20 77 69 74 68 20 61  meta-data with a
ac30: 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 73 2e 20  rgument values. 
ac40: 49 66 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75  If the same valu
ac50: 65 20 69 73 20 70 61 73 73 65 64 20 74 6f 0a 2a  e is passed to.*
ac60: 2a 20 6d 75 6c 74 69 70 6c 65 20 69 6e 76 6f 63  * multiple invoc
ac70: 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 75 73  ations of the us
ac80: 65 72 2d 66 75 6e 63 74 69 6f 6e 20 64 75 72 69  er-function duri
ac90: 6e 67 20 71 75 65 72 79 20 65 78 65 63 75 74 69  ng query executi
aca0: 6f 6e 2c 20 75 6e 64 65 72 0a 2a 2a 20 73 6f 6d  on, under.** som
acb0: 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20  e circumstances 
acc0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 6d  the associated m
acd0: 65 74 61 2d 64 61 74 61 20 6d 61 79 20 62 65 20  eta-data may be 
ace0: 70 72 65 73 65 72 76 65 64 2e 20 54 68 69 73 20  preserved. This 
acf0: 6d 61 79 0a 2a 2a 20 62 65 20 75 73 65 64 2c 20  may.** be used, 
ad00: 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 20  for example, to 
ad10: 61 64 64 20 61 20 72 65 67 75 6c 61 72 2d 65 78  add a regular-ex
ad20: 70 72 65 73 73 69 6f 6e 20 6d 61 74 63 68 69 6e  pression matchin
ad30: 67 20 73 63 61 6c 61 72 0a 2a 2a 20 66 75 6e 63  g scalar.** func
ad40: 74 69 6f 6e 2e 20 54 68 65 20 63 6f 6d 70 69 6c  tion. The compil
ad50: 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  ed version of th
ad60: 65 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73  e regular expres
ad70: 73 69 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61  sion is stored a
ad80: 73 0a 2a 2a 20 6d 65 74 61 2d 64 61 74 61 20 61  s.** meta-data a
ad90: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
ada0: 68 65 20 53 51 4c 20 76 61 6c 75 65 20 70 61 73  he SQL value pas
adb0: 73 65 64 20 61 73 20 74 68 65 20 72 65 67 75 6c  sed as the regul
adc0: 61 72 20 65 78 70 72 65 73 73 69 6f 6e 0a 2a 2a  ar expression.**
add0: 20 70 61 74 74 65 72 6e 2e 0a 2a 2a 0a 2a 2a 20   pattern..**.** 
ade0: 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  Calling sqlite3_
adf0: 67 65 74 5f 61 75 78 64 61 74 61 28 29 20 72 65  get_auxdata() re
ae00: 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20  turns a pointer 
ae10: 74 6f 20 74 68 65 20 6d 65 74 61 20 64 61 74 61  to the meta data
ae20: 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77  .** associated w
ae30: 69 74 68 20 74 68 65 20 4e 74 68 20 61 72 67 75  ith the Nth argu
ae40: 6d 65 6e 74 20 76 61 6c 75 65 20 74 6f 20 74 68  ment value to th
ae50: 65 20 63 75 72 72 65 6e 74 20 75 73 65 72 20 66  e current user f
ae60: 75 6e 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 2c  unction.** call,
ae70: 20 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20   where N is the 
ae80: 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
ae90: 2e 20 49 66 20 6e 6f 20 6d 65 74 61 2d 64 61 74  . If no meta-dat
aea0: 61 20 68 61 73 20 62 65 65 6e 20 73 65 74 20 66  a has been set f
aeb0: 6f 72 0a 2a 2a 20 74 68 61 74 20 76 61 6c 75 65  or.** that value
aec0: 2c 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f  , then a NULL po
aed0: 69 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65  inter is returne
aee0: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  d..**.** The sql
aef0: 69 74 65 33 5f 73 65 74 5f 61 75 78 64 61 74 61  ite3_set_auxdata
af00: 28 29 20 69 73 20 75 73 65 64 20 74 6f 20 61 73  () is used to as
af10: 73 6f 63 69 61 74 65 20 6d 65 74 61 20 64 61 74  sociate meta dat
af20: 61 20 77 69 74 68 20 61 20 75 73 65 72 0a 2a 2a  a with a user.**
af30: 20 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65   function argume
af40: 6e 74 2e 20 54 68 65 20 74 68 69 72 64 20 70 61  nt. The third pa
af50: 72 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69  rameter is a poi
af60: 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 74 61  nter to the meta
af70: 20 64 61 74 61 0a 2a 2a 20 74 6f 20 62 65 20 61   data.** to be a
af80: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
af90: 68 65 20 4e 74 68 20 75 73 65 72 20 66 75 6e 63  he Nth user func
afa0: 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 20 76 61  tion argument va
afb0: 6c 75 65 2e 20 54 68 65 20 66 6f 75 72 74 68 0a  lue. The fourth.
afc0: 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 73 70 65  ** parameter spe
afd0: 63 69 66 69 65 73 20 61 20 27 64 65 6c 65 74 65  cifies a 'delete
afe0: 20 66 75 6e 63 74 69 6f 6e 27 20 74 68 61 74 20   function' that 
aff0: 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 6f  will be called o
b000: 6e 20 74 68 65 20 6d 65 74 61 0a 2a 2a 20 64 61  n the meta.** da
b010: 74 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 72 65  ta pointer to re
b020: 6c 65 61 73 65 20 69 74 20 77 68 65 6e 20 69 74  lease it when it
b030: 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65   is no longer re
b040: 71 75 69 72 65 64 2e 20 49 66 20 74 68 65 20 64  quired. If the d
b050: 65 6c 65 74 65 0a 2a 2a 20 66 75 6e 63 74 69 6f  elete.** functio
b060: 6e 20 70 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c  n pointer is NUL
b070: 4c 2c 20 69 74 20 69 73 20 6e 6f 74 20 69 6e 76  L, it is not inv
b080: 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 70  oked..**.** In p
b090: 72 61 63 74 69 63 65 2c 20 6d 65 74 61 2d 64 61  ractice, meta-da
b0a0: 74 61 20 69 73 20 70 72 65 73 65 72 76 65 64 20  ta is preserved 
b0b0: 62 65 74 77 65 65 6e 20 66 75 6e 63 74 69 6f 6e  between function
b0c0: 20 63 61 6c 6c 73 20 66 6f 72 0a 2a 2a 20 65 78   calls for.** ex
b0d0: 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61  pressions that a
b0e0: 72 65 20 63 6f 6e 73 74 61 6e 74 20 61 74 20 63  re constant at c
b0f0: 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 54 68 69  ompile time. Thi
b100: 73 20 69 6e 63 6c 75 64 65 73 20 6c 69 74 65 72  s includes liter
b110: 61 6c 0a 2a 2a 20 76 61 6c 75 65 73 20 61 6e 64  al.** values and
b120: 20 53 51 4c 20 76 61 72 69 61 62 6c 65 73 2e 0a   SQL variables..
b130: 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  */.void *sqlite3
b140: 5f 67 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c  _get_auxdata(sql
b150: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69  ite3_context*, i
b160: 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65  nt);.void sqlite
b170: 33 5f 73 65 74 5f 61 75 78 64 61 74 61 28 73 71  3_set_auxdata(sq
b180: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20  lite3_context*, 
b190: 69 6e 74 2c 20 76 6f 69 64 2a 2c 20 76 6f 69 64  int, void*, void
b1a0: 20 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 0a 0a   (*)(void*));...
b1b0: 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 61 72 65 20  /*.** These are 
b1c0: 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20 66 6f  special value fo
b1d0: 72 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72  r the destructor
b1e0: 20 74 68 61 74 20 69 73 20 70 61 73 73 65 64 20   that is passed 
b1f0: 69 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66 69 6e  in as the.** fin
b200: 61 6c 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 72  al argument to r
b210: 6f 75 74 69 6e 65 73 20 6c 69 6b 65 20 73 71 6c  outines like sql
b220: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
b230: 28 29 2e 20 20 49 66 20 74 68 65 20 64 65 73 74  ().  If the dest
b240: 72 75 63 74 6f 72 0a 2a 2a 20 61 72 67 75 6d 65  ructor.** argume
b250: 6e 74 20 69 73 20 53 51 4c 49 54 45 5f 53 54 41  nt is SQLITE_STA
b260: 54 49 43 2c 20 69 74 20 6d 65 61 6e 73 20 74 68  TIC, it means th
b270: 61 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 70  at the content p
b280: 6f 69 6e 74 65 72 20 69 73 20 63 6f 6e 73 74 61  ointer is consta
b290: 6e 74 0a 2a 2a 20 61 6e 64 20 77 69 6c 6c 20 6e  nt.** and will n
b2a0: 65 76 65 72 20 63 68 61 6e 67 65 2e 20 20 49 74  ever change.  It
b2b0: 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74   does not need t
b2c0: 6f 20 62 65 20 64 65 73 74 72 6f 79 65 64 2e 20  o be destroyed. 
b2d0: 20 54 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f   The .** SQLITE_
b2e0: 54 52 41 4e 53 49 45 4e 54 20 76 61 6c 75 65 20  TRANSIENT value 
b2f0: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 63  means that the c
b300: 6f 6e 74 65 6e 74 20 77 69 6c 6c 20 6c 69 6b 65  ontent will like
b310: 6c 79 20 63 68 61 6e 67 65 20 69 6e 0a 2a 2a 20  ly change in.** 
b320: 74 68 65 20 6e 65 61 72 20 66 75 74 75 72 65 20  the near future 
b330: 61 6e 64 20 74 68 61 74 20 53 51 4c 69 74 65 20  and that SQLite 
b340: 73 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 73 20  should make its 
b350: 6f 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79  own private copy
b360: 20 6f 66 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65   of.** the conte
b370: 6e 74 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e  nt before return
b380: 69 6e 67 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  ing..*/.#define 
b390: 53 51 4c 49 54 45 5f 53 54 41 54 49 43 20 20 20  SQLITE_STATIC   
b3a0: 20 20 20 28 28 76 6f 69 64 28 2a 29 28 76 6f 69     ((void(*)(voi
b3b0: 64 20 2a 29 29 30 29 0a 23 64 65 66 69 6e 65 20  d *))0).#define 
b3c0: 53 51 4c 49 54 45 5f 54 52 41 4e 53 49 45 4e 54  SQLITE_TRANSIENT
b3d0: 20 20 20 28 28 76 6f 69 64 28 2a 29 28 76 6f 69     ((void(*)(voi
b3e0: 64 20 2a 29 29 2d 31 29 0a 0a 2f 2a 0a 2a 2a 20  d *))-1)../*.** 
b3f0: 55 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e  User-defined fun
b400: 63 74 69 6f 6e 73 20 69 6e 76 6f 6b 65 20 74 68  ctions invoke th
b410: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74  e following rout
b420: 69 6e 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f  ines in order to
b430: 0a 2a 2a 20 73 65 74 20 74 68 65 69 72 20 72 65  .** set their re
b440: 74 75 72 6e 20 76 61 6c 75 65 2e 0a 2a 2f 0a 76  turn value..*/.v
b450: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
b460: 6c 74 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f  lt_blob(sqlite3_
b470: 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20  context*, const 
b480: 76 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  void*, int, void
b490: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69  (*)(void*));.voi
b4a0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
b4b0: 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f  _double(sqlite3_
b4c0: 63 6f 6e 74 65 78 74 2a 2c 20 64 6f 75 62 6c 65  context*, double
b4d0: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
b4e0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 73 71 6c  result_error(sql
b4f0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63  ite3_context*, c
b500: 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74 29  onst char*, int)
b510: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
b520: 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 73 71  esult_error16(sq
b530: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20  lite3_context*, 
b540: 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74  const void*, int
b550: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
b560: 72 65 73 75 6c 74 5f 69 6e 74 28 73 71 6c 69 74  result_int(sqlit
b570: 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74  e3_context*, int
b580: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
b590: 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 73 71 6c  result_int64(sql
b5a0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 73  ite3_context*, s
b5b0: 71 6c 69 74 65 5f 69 6e 74 36 34 29 3b 0a 76 6f  qlite_int64);.vo
b5c0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b5d0: 74 5f 6e 75 6c 6c 28 73 71 6c 69 74 65 33 5f 63  t_null(sqlite3_c
b5e0: 6f 6e 74 65 78 74 2a 29 3b 0a 76 6f 69 64 20 73  ontext*);.void s
b5f0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
b600: 78 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  xt(sqlite3_conte
b610: 78 74 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a  xt*, const char*
b620: 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76  , int, void(*)(v
b630: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
b640: 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
b650: 31 36 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  16(sqlite3_conte
b660: 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a  xt*, const void*
b670: 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76  , int, void(*)(v
b680: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
b690: 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
b6a0: 31 36 6c 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e  16le(sqlite3_con
b6b0: 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69  text*, const voi
b6c0: 64 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29 28  d*, int,void(*)(
b6d0: 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71  void*));.void sq
b6e0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
b6f0: 74 31 36 62 65 28 73 71 6c 69 74 65 33 5f 63 6f  t16be(sqlite3_co
b700: 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f  ntext*, const vo
b710: 69 64 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29  id*, int,void(*)
b720: 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73  (void*));.void s
b730: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
b740: 6c 75 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  lue(sqlite3_cont
b750: 65 78 74 2a 2c 20 73 71 6c 69 74 65 33 5f 76 61  ext*, sqlite3_va
b760: 6c 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  lue*);../*.** Th
b770: 65 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f  ese are the allo
b780: 77 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74  wed values for t
b790: 68 65 20 65 54 65 78 74 52 65 70 20 61 72 67 75  he eTextRep argu
b7a0: 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74  ment to.** sqlit
b7b0: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
b7c0: 69 6f 6e 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  ion and sqlite3_
b7d0: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 2e  create_function.
b7e0: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
b7f0: 54 45 5f 55 54 46 38 20 20 20 20 31 0a 23 64 65  TE_UTF8    1.#de
b800: 66 69 6e 65 20 53 51 4c 49 54 45 5f 55 54 46 31  fine SQLITE_UTF1
b810: 36 4c 45 20 32 0a 23 64 65 66 69 6e 65 20 53 51  6LE 2.#define SQ
b820: 4c 49 54 45 5f 55 54 46 31 36 42 45 20 33 0a 23  LITE_UTF16BE 3.#
b830: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 55 54  define SQLITE_UT
b840: 46 31 36 20 20 20 34 20 20 20 20 2f 2a 20 55 73  F16   4    /* Us
b850: 65 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72  e native byte or
b860: 64 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  der */.#define S
b870: 51 4c 49 54 45 5f 41 4e 59 20 20 20 20 20 35 20  QLITE_ANY     5 
b880: 20 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 63 72     /* sqlite3_cr
b890: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 20 6f 6e  eate_function on
b8a0: 6c 79 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  ly */../*.** The
b8b0: 73 65 20 74 77 6f 20 66 75 6e 63 74 69 6f 6e 73  se two functions
b8c0: 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 64 64   are used to add
b8d0: 20 6e 65 77 20 63 6f 6c 6c 61 74 69 6f 6e 20 73   new collation s
b8e0: 65 71 75 65 6e 63 65 73 20 74 6f 20 74 68 65 0a  equences to the.
b8f0: 2a 2a 20 73 71 6c 69 74 65 33 20 68 61 6e 64 6c  ** sqlite3 handl
b900: 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74  e specified as t
b910: 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
b920: 74 2e 20 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6e 61  t. .**.** The na
b930: 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20 63 6f  me of the new co
b940: 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
b950: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 73   is specified as
b960: 20 61 20 55 54 46 2d 38 20 73 74 72 69 6e 67 0a   a UTF-8 string.
b970: 2a 2a 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 63  ** for sqlite3_c
b980: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
b990: 29 20 61 6e 64 20 61 20 55 54 46 2d 31 36 20 73  ) and a UTF-16 s
b9a0: 74 72 69 6e 67 20 66 6f 72 0a 2a 2a 20 73 71 6c  tring for.** sql
b9b0: 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
b9c0: 61 74 69 6f 6e 31 36 28 29 2e 20 49 6e 20 62 6f  ation16(). In bo
b9d0: 74 68 20 63 61 73 65 73 20 74 68 65 20 6e 61 6d  th cases the nam
b9e0: 65 20 69 73 20 70 61 73 73 65 64 20 61 73 20 74  e is passed as t
b9f0: 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 66 75 6e  he.** second fun
ba00: 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 2e 0a  ction argument..
ba10: 2a 2a 0a 2a 2a 20 54 68 65 20 74 68 69 72 64 20  **.** The third 
ba20: 61 72 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65  argument must be
ba30: 20 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6e 73   one of the cons
ba40: 74 61 6e 74 73 20 53 51 4c 49 54 45 5f 55 54 46  tants SQLITE_UTF
ba50: 38 2c 0a 2a 2a 20 53 51 4c 49 54 45 5f 55 54 46  8,.** SQLITE_UTF
ba60: 31 36 4c 45 20 6f 72 20 53 51 4c 49 54 45 5f 55  16LE or SQLITE_U
ba70: 54 46 31 36 42 45 2c 20 69 6e 64 69 63 61 74 69  TF16BE, indicati
ba80: 6e 67 20 74 68 61 74 20 74 68 65 20 75 73 65 72  ng that the user
ba90: 2d 73 75 70 70 6c 69 65 64 0a 2a 2a 20 72 6f 75  -supplied.** rou
baa0: 74 69 6e 65 20 65 78 70 65 63 74 73 20 74 6f 20  tine expects to 
bab0: 62 65 20 70 61 73 73 65 64 20 70 6f 69 6e 74 65  be passed pointe
bac0: 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20 65 6e  rs to strings en
bad0: 63 6f 64 65 64 20 75 73 69 6e 67 20 55 54 46 2d  coded using UTF-
bae0: 38 2c 0a 2a 2a 20 55 54 46 2d 31 36 20 6c 69 74  8,.** UTF-16 lit
baf0: 74 6c 65 2d 65 6e 64 69 61 6e 20 6f 72 20 55 54  tle-endian or UT
bb00: 46 2d 31 36 20 62 69 67 2d 65 6e 64 69 61 6e 20  F-16 big-endian 
bb10: 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 2a 2a  respectively..**
bb20: 0a 2a 2a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f  .** A pointer to
bb30: 20 74 68 65 20 75 73 65 72 20 73 75 70 70 6c 69   the user suppli
bb40: 65 64 20 72 6f 75 74 69 6e 65 20 6d 75 73 74 20  ed routine must 
bb50: 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  be passed as the
bb60: 20 66 69 66 74 68 0a 2a 2a 20 61 72 67 75 6d 65   fifth.** argume
bb70: 6e 74 2e 20 49 66 20 69 74 20 69 73 20 4e 55 4c  nt. If it is NUL
bb80: 4c 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 73  L, this is the s
bb90: 61 6d 65 20 61 73 20 64 65 6c 65 74 69 6e 67 20  ame as deleting 
bba0: 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 0a 2a 2a  the collation.**
bbb0: 20 73 65 71 75 65 6e 63 65 20 28 73 6f 20 74 68   sequence (so th
bbc0: 61 74 20 53 51 4c 69 74 65 20 63 61 6e 6e 6f 74  at SQLite cannot
bbd0: 20 63 61 6c 6c 20 69 74 20 61 6e 79 6d 6f 72 65   call it anymore
bbe0: 29 2e 20 45 61 63 68 20 74 69 6d 65 20 74 68 65  ). Each time the
bbf0: 20 75 73 65 72 0a 2a 2a 20 73 75 70 70 6c 69 65   user.** supplie
bc00: 64 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e  d function is in
bc10: 76 6f 6b 65 64 2c 20 69 74 20 69 73 20 70 61 73  voked, it is pas
bc20: 73 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68  sed a copy of th
bc30: 65 20 76 6f 69 64 2a 20 70 61 73 73 65 64 20 61  e void* passed a
bc40: 73 0a 2a 2a 20 74 68 65 20 66 6f 75 72 74 68 20  s.** the fourth 
bc50: 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
bc60: 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61  te3_create_colla
bc70: 74 69 6f 6e 28 29 20 6f 72 0a 2a 2a 20 73 71 6c  tion() or.** sql
bc80: 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
bc90: 61 74 69 6f 6e 31 36 28 29 20 61 73 20 69 74 73  ation16() as its
bca0: 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
bcb0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 6d 61  ..**.** The rema
bcc0: 69 6e 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20  ining arguments 
bcd0: 74 6f 20 74 68 65 20 75 73 65 72 2d 73 75 70 70  to the user-supp
bce0: 6c 69 65 64 20 72 6f 75 74 69 6e 65 20 61 72 65  lied routine are
bcf0: 20 74 77 6f 20 73 74 72 69 6e 67 73 2c 0a 2a 2a   two strings,.**
bd00: 20 65 61 63 68 20 72 65 70 72 65 73 65 6e 74 65   each represente
bd10: 64 20 62 79 20 61 20 5b 6c 65 6e 67 74 68 2c 20  d by a [length, 
bd20: 64 61 74 61 5d 20 70 61 69 72 20 61 6e 64 20 65  data] pair and e
bd30: 6e 63 6f 64 65 64 20 69 6e 20 74 68 65 20 65 6e  ncoded in the en
bd40: 63 6f 64 69 6e 67 0a 2a 2a 20 74 68 61 74 20 77  coding.** that w
bd50: 61 73 20 70 61 73 73 65 64 20 61 73 20 74 68 65  as passed as the
bd60: 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20   third argument 
bd70: 77 68 65 6e 20 74 68 65 20 63 6f 6c 6c 61 74 69  when the collati
bd80: 6f 6e 20 73 65 71 75 65 6e 63 65 20 77 61 73 0a  on sequence was.
bd90: 2a 2a 20 72 65 67 69 73 74 65 72 65 64 2e 20 54  ** registered. T
bda0: 68 65 20 75 73 65 72 20 72 6f 75 74 69 6e 65 20  he user routine 
bdb0: 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 6e 65  should return ne
bdc0: 67 61 74 69 76 65 2c 20 7a 65 72 6f 20 6f 72 20  gative, zero or 
bdd0: 70 6f 73 69 74 69 76 65 20 69 66 0a 2a 2a 20 74  positive if.** t
bde0: 68 65 20 66 69 72 73 74 20 73 74 72 69 6e 67 20  he first string 
bdf0: 69 73 20 6c 65 73 73 20 74 68 61 6e 2c 20 65 71  is less than, eq
be00: 75 61 6c 20 74 6f 2c 20 6f 72 20 67 72 65 61 74  ual to, or great
be10: 65 72 20 74 68 61 6e 20 74 68 65 20 73 65 63 6f  er than the seco
be20: 6e 64 0a 2a 2a 20 73 74 72 69 6e 67 2e 20 69 2e  nd.** string. i.
be30: 65 2e 20 28 53 54 52 49 4e 47 31 20 2d 20 53 54  e. (STRING1 - ST
be40: 52 49 4e 47 32 29 2e 0a 2a 2f 0a 69 6e 74 20 73  RING2)..*/.int s
be50: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
be60: 6c 6c 61 74 69 6f 6e 28 0a 20 20 73 71 6c 69 74  llation(.  sqlit
be70: 65 33 2a 2c 20 0a 20 20 63 6f 6e 73 74 20 63 68  e3*, .  const ch
be80: 61 72 20 2a 7a 4e 61 6d 65 2c 20 0a 20 20 69 6e  ar *zName, .  in
be90: 74 20 65 54 65 78 74 52 65 70 2c 20 0a 20 20 76  t eTextRep, .  v
bea0: 6f 69 64 2a 2c 0a 20 20 69 6e 74 28 2a 78 43 6f  oid*,.  int(*xCo
beb0: 6d 70 61 72 65 29 28 76 6f 69 64 2a 2c 69 6e 74  mpare)(void*,int
bec0: 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 69 6e 74  ,const void*,int
bed0: 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a 29 3b  ,const void*).);
bee0: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65  .int sqlite3_cre
bef0: 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 28  ate_collation16(
bf00: 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20  .  sqlite3*, .  
bf10: 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
bf20: 65 2c 20 0a 20 20 69 6e 74 20 65 54 65 78 74 52  e, .  int eTextR
bf30: 65 70 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20  ep, .  void*,.  
bf40: 69 6e 74 28 2a 78 43 6f 6d 70 61 72 65 29 28 76  int(*xCompare)(v
bf50: 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 76  oid*,int,const v
bf60: 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 76  oid*,int,const v
bf70: 6f 69 64 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  oid*).);../*.** 
bf80: 54 6f 20 61 76 6f 69 64 20 68 61 76 69 6e 67 20  To avoid having 
bf90: 74 6f 20 72 65 67 69 73 74 65 72 20 61 6c 6c 20  to register all 
bfa0: 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
bfb0: 63 65 73 20 62 65 66 6f 72 65 20 61 20 64 61 74  ces before a dat
bfc0: 61 62 61 73 65 0a 2a 2a 20 63 61 6e 20 62 65 20  abase.** can be 
bfd0: 75 73 65 64 2c 20 61 20 73 69 6e 67 6c 65 20 63  used, a single c
bfe0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
bff0: 20 6d 61 79 20 62 65 20 72 65 67 69 73 74 65 72   may be register
c000: 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 64  ed with the.** d
c010: 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 74  atabase handle t
c020: 6f 20 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e  o be called when
c030: 65 76 65 72 20 61 6e 20 75 6e 64 65 66 69 6e 65  ever an undefine
c040: 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  d collation sequ
c050: 65 6e 63 65 20 69 73 0a 2a 2a 20 72 65 71 75 69  ence is.** requi
c060: 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68  red..**.** If th
c070: 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 65  e function is re
c080: 67 69 73 74 65 72 65 64 20 75 73 69 6e 67 20 74  gistered using t
c090: 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61  he sqlite3_colla
c0a0: 74 69 6f 6e 5f 6e 65 65 64 65 64 28 29 20 41 50  tion_needed() AP
c0b0: 49 2c 0a 2a 2a 20 74 68 65 6e 20 69 74 20 69 73  I,.** then it is
c0c0: 20 70 61 73 73 65 64 20 74 68 65 20 6e 61 6d 65   passed the name
c0d0: 73 20 6f 66 20 75 6e 64 65 66 69 6e 65 64 20 63  s of undefined c
c0e0: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
c0f0: 65 73 20 61 73 20 73 74 72 69 6e 67 73 0a 2a 2a  es as strings.**
c100: 20 65 6e 63 6f 64 65 64 20 69 6e 20 55 54 46 2d   encoded in UTF-
c110: 38 2e 20 49 66 20 73 71 6c 69 74 65 33 5f 63 6f  8. If sqlite3_co
c120: 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 31 36  llation_needed16
c130: 28 29 20 69 73 20 75 73 65 64 2c 20 74 68 65 20  () is used, the 
c140: 6e 61 6d 65 73 0a 2a 2a 20 61 72 65 20 70 61 73  names.** are pas
c150: 73 65 64 20 61 73 20 55 54 46 2d 31 36 20 69 6e  sed as UTF-16 in
c160: 20 6d 61 63 68 69 6e 65 20 6e 61 74 69 76 65 20   machine native 
c170: 62 79 74 65 20 6f 72 64 65 72 2e 20 41 20 63 61  byte order. A ca
c180: 6c 6c 20 74 6f 20 65 69 74 68 65 72 0a 2a 2a 20  ll to either.** 
c190: 66 75 6e 63 74 69 6f 6e 20 72 65 70 6c 61 63 65  function replace
c1a0: 73 20 61 6e 79 20 65 78 69 73 74 69 6e 67 20 63  s any existing c
c1b0: 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 57  allback..**.** W
c1c0: 68 65 6e 20 74 68 65 20 75 73 65 72 2d 66 75 6e  hen the user-fun
c1d0: 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
c1e0: 2c 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  , the first argu
c1f0: 6d 65 6e 74 20 70 61 73 73 65 64 20 69 73 20 61  ment passed is a
c200: 20 63 6f 70 79 0a 2a 2a 20 6f 66 20 74 68 65 20   copy.** of the 
c210: 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20  second argument 
c220: 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61  to sqlite3_colla
c230: 74 69 6f 6e 5f 6e 65 65 64 65 64 28 29 20 6f 72  tion_needed() or
c240: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c  .** sqlite3_coll
c250: 61 74 69 6f 6e 5f 6e 65 65 64 65 64 31 36 28 29  ation_needed16()
c260: 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67  . The second arg
c270: 75 6d 65 6e 74 20 69 73 20 74 68 65 20 64 61 74  ument is the dat
c280: 61 62 61 73 65 0a 2a 2a 20 68 61 6e 64 6c 65 2e  abase.** handle.
c290: 20 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d   The third argum
c2a0: 65 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 53 51  ent is one of SQ
c2b0: 4c 49 54 45 5f 55 54 46 38 2c 20 53 51 4c 49 54  LITE_UTF8, SQLIT
c2c0: 45 5f 55 54 46 31 36 42 45 20 6f 72 0a 2a 2a 20  E_UTF16BE or.** 
c2d0: 53 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 2c 20  SQLITE_UTF16LE, 
c2e0: 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 6d  indicating the m
c2f0: 6f 73 74 20 64 65 73 69 72 61 62 6c 65 20 66 6f  ost desirable fo
c300: 72 6d 20 6f 66 20 74 68 65 20 63 6f 6c 6c 61 74  rm of the collat
c310: 69 6f 6e 0a 2a 2a 20 73 65 71 75 65 6e 63 65 20  ion.** sequence 
c320: 66 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65  function require
c330: 64 2e 20 54 68 65 20 66 6f 75 72 74 68 20 70 61  d. The fourth pa
c340: 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6e  rameter is the n
c350: 61 6d 65 20 6f 66 20 74 68 65 0a 2a 2a 20 72 65  ame of the.** re
c360: 71 75 69 72 65 64 20 63 6f 6c 6c 61 74 69 6f 6e  quired collation
c370: 20 73 65 71 75 65 6e 63 65 2e 0a 2a 2a 0a 2a 2a   sequence..**.**
c380: 20 54 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73   The collation s
c390: 65 71 75 65 6e 63 65 20 69 73 20 72 65 74 75 72  equence is retur
c3a0: 6e 65 64 20 74 6f 20 53 51 4c 69 74 65 20 62 79  ned to SQLite by
c3b0: 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 65 65   a collation-nee
c3c0: 64 65 64 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20  ded.** callback 
c3d0: 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65  using the sqlite
c3e0: 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
c3f0: 6f 6e 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69 74  on() or.** sqlit
c400: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
c410: 69 6f 6e 31 36 28 29 20 41 50 49 73 2c 20 64 65  ion16() APIs, de
c420: 73 63 72 69 62 65 64 20 61 62 6f 76 65 2e 0a 2a  scribed above..*
c430: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  /.int sqlite3_co
c440: 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 28 0a  llation_needed(.
c450: 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20 76    sqlite3*, .  v
c460: 6f 69 64 2a 2c 20 0a 20 20 76 6f 69 64 28 2a 29  oid*, .  void(*)
c470: 28 76 6f 69 64 2a 2c 73 71 6c 69 74 65 33 2a 2c  (void*,sqlite3*,
c480: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 63 6f 6e  int eTextRep,con
c490: 73 74 20 63 68 61 72 2a 29 0a 29 3b 0a 69 6e 74  st char*).);.int
c4a0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69   sqlite3_collati
c4b0: 6f 6e 5f 6e 65 65 64 65 64 31 36 28 0a 20 20 73  on_needed16(.  s
c4c0: 71 6c 69 74 65 33 2a 2c 20 0a 20 20 76 6f 69 64  qlite3*, .  void
c4d0: 2a 2c 0a 20 20 76 6f 69 64 28 2a 29 28 76 6f 69  *,.  void(*)(voi
c4e0: 64 2a 2c 73 71 6c 69 74 65 33 2a 2c 69 6e 74 20  d*,sqlite3*,int 
c4f0: 65 54 65 78 74 52 65 70 2c 63 6f 6e 73 74 20 76  eTextRep,const v
c500: 6f 69 64 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  oid*).);../*.** 
c510: 53 70 65 63 69 66 79 20 74 68 65 20 6b 65 79 20  Specify the key 
c520: 66 6f 72 20 61 6e 20 65 6e 63 72 79 70 74 65 64  for an encrypted
c530: 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69 73   database.  This
c540: 20 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c 64 20   routine should 
c550: 62 65 0a 2a 2a 20 63 61 6c 6c 65 64 20 72 69 67  be.** called rig
c560: 68 74 20 61 66 74 65 72 20 73 71 6c 69 74 65 33  ht after sqlite3
c570: 5f 6f 70 65 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20 54  _open()..**.** T
c580: 68 65 20 63 6f 64 65 20 74 6f 20 69 6d 70 6c 65  he code to imple
c590: 6d 65 6e 74 20 74 68 69 73 20 41 50 49 20 69 73  ment this API is
c5a0: 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 69   not available i
c5b0: 6e 20 74 68 65 20 70 75 62 6c 69 63 20 72 65 6c  n the public rel
c5c0: 65 61 73 65 0a 2a 2a 20 6f 66 20 53 51 4c 69 74  ease.** of SQLit
c5d0: 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  e..*/.int sqlite
c5e0: 33 5f 6b 65 79 28 0a 20 20 73 71 6c 69 74 65 33  3_key(.  sqlite3
c5f0: 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
c600: 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62          /* Datab
c610: 61 73 65 20 74 6f 20 62 65 20 72 65 6b 65 79 65  ase to be rekeye
c620: 64 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69  d */.  const voi
c630: 64 20 2a 70 4b 65 79 2c 20 69 6e 74 20 6e 4b 65  d *pKey, int nKe
c640: 79 20 20 20 20 20 2f 2a 20 54 68 65 20 6b 65 79  y     /* The key
c650: 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 68   */.);../*.** Ch
c660: 61 6e 67 65 20 74 68 65 20 6b 65 79 20 6f 6e 20  ange the key on 
c670: 61 6e 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65  an open database
c680: 2e 20 20 49 66 20 74 68 65 20 63 75 72 72 65 6e  .  If the curren
c690: 74 20 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f  t database is no
c6a0: 74 0a 2a 2a 20 65 6e 63 72 79 70 74 65 64 2c 20  t.** encrypted, 
c6b0: 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c  this routine wil
c6c0: 6c 20 65 6e 63 72 79 70 74 20 69 74 2e 20 20 49  l encrypt it.  I
c6d0: 66 20 70 4e 65 77 3d 3d 30 20 6f 72 20 6e 4e 65  f pNew==0 or nNe
c6e0: 77 3d 3d 30 2c 20 74 68 65 0a 2a 2a 20 64 61 74  w==0, the.** dat
c6f0: 61 62 61 73 65 20 69 73 20 64 65 63 72 79 70 74  abase is decrypt
c700: 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f  ed..**.** The co
c710: 64 65 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  de to implement 
c720: 74 68 69 73 20 41 50 49 20 69 73 20 6e 6f 74 20  this API is not 
c730: 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65  available in the
c740: 20 70 75 62 6c 69 63 20 72 65 6c 65 61 73 65 0a   public release.
c750: 2a 2a 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f  ** of SQLite..*/
c760: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6b  .int sqlite3_rek
c770: 65 79 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  ey(.  sqlite3 *d
c780: 62 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  b,              
c790: 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
c7a0: 20 74 6f 20 62 65 20 72 65 6b 65 79 65 64 20 2a   to be rekeyed *
c7b0: 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  /.  const void *
c7c0: 70 4b 65 79 2c 20 69 6e 74 20 6e 4b 65 79 20 20  pKey, int nKey  
c7d0: 20 20 20 2f 2a 20 54 68 65 20 6e 65 77 20 6b 65     /* The new ke
c7e0: 79 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53  y */.);../*.** S
c7f0: 6c 65 65 70 20 66 6f 72 20 61 20 6c 69 74 74 6c  leep for a littl
c800: 65 20 77 68 69 6c 65 2e 20 54 68 65 20 73 65 63  e while. The sec
c810: 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
c820: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a   the number of.*
c830: 2a 20 6d 69 6c 69 73 65 63 6f 6e 64 73 20 74 6f  * miliseconds to
c840: 20 73 6c 65 65 70 20 66 6f 72 2e 20 0a 2a 2a 0a   sleep for. .**.
c850: 2a 2a 20 49 66 20 74 68 65 20 6f 70 65 72 61 74  ** If the operat
c860: 69 6e 67 20 73 79 73 74 65 6d 20 64 6f 65 73 20  ing system does 
c870: 6e 6f 74 20 73 75 70 70 6f 72 74 20 73 6c 65 65  not support slee
c880: 70 20 72 65 71 75 65 73 74 73 20 77 69 74 68 20  p requests with 
c890: 0a 2a 2a 20 6d 69 6c 69 73 65 63 6f 6e 64 20 74  .** milisecond t
c8a0: 69 6d 65 20 72 65 73 6f 6c 75 74 69 6f 6e 2c 20  ime resolution, 
c8b0: 74 68 65 6e 20 74 68 65 20 74 69 6d 65 20 77 69  then the time wi
c8c0: 6c 6c 20 62 65 20 72 6f 75 6e 64 65 64 20 75 70  ll be rounded up
c8d0: 20 74 6f 20 0a 2a 2a 20 74 68 65 20 6e 65 61 72   to .** the near
c8e0: 65 73 74 20 73 65 63 6f 6e 64 2e 20 54 68 65 20  est second. The 
c8f0: 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 69 73 65  number of milise
c900: 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70 20 61  conds of sleep a
c910: 63 74 75 61 6c 6c 79 20 0a 2a 2a 20 72 65 71 75  ctually .** requ
c920: 65 73 74 65 64 20 66 72 6f 6d 20 74 68 65 20 6f  ested from the o
c930: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
c940: 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2f 0a  is returned..*/.
c950: 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 6c 65 65  int sqlite3_slee
c960: 70 28 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52  p(int);../*.** R
c970: 65 74 75 72 6e 20 54 52 55 45 20 28 6e 6f 6e 2d  eturn TRUE (non-
c980: 7a 65 72 6f 29 20 69 66 20 74 68 65 20 73 74 61  zero) if the sta
c990: 74 65 6d 65 6e 74 20 73 75 70 70 6c 69 65 64 20  tement supplied 
c9a0: 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 6e  as an argument n
c9b0: 65 65 64 73 0a 2a 2a 20 74 6f 20 62 65 20 72 65  eeds.** to be re
c9c0: 63 6f 6d 70 69 6c 65 64 2e 20 20 41 20 73 74 61  compiled.  A sta
c9d0: 74 65 6d 65 6e 74 20 6e 65 65 64 73 20 74 6f 20  tement needs to 
c9e0: 62 65 20 72 65 63 6f 6d 70 69 6c 65 64 20 77 68  be recompiled wh
c9f0: 65 6e 65 76 65 72 20 74 68 65 0a 2a 2a 20 65 78  enever the.** ex
ca00: 65 63 75 74 69 6f 6e 20 65 6e 76 69 72 6f 6e 6d  ecution environm
ca10: 65 6e 74 20 63 68 61 6e 67 65 73 20 69 6e 20 61  ent changes in a
ca20: 20 77 61 79 20 74 68 61 74 20 77 6f 75 6c 64 20   way that would 
ca30: 61 6c 74 65 72 20 74 68 65 20 70 72 6f 67 72 61  alter the progra
ca40: 6d 0a 2a 2a 20 74 68 61 74 20 73 71 6c 69 74 65  m.** that sqlite
ca50: 33 5f 70 72 65 70 61 72 65 28 29 20 67 65 6e 65  3_prepare() gene
ca60: 72 61 74 65 73 2e 20 20 46 6f 72 20 65 78 61 6d  rates.  For exam
ca70: 70 6c 65 2c 20 69 66 20 6e 65 77 20 66 75 6e 63  ple, if new func
ca80: 74 69 6f 6e 73 20 6f 72 0a 2a 2a 20 63 6f 6c 6c  tions or.** coll
ca90: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20  ating sequences 
caa0: 61 72 65 20 72 65 67 69 73 74 65 72 65 64 20 6f  are registered o
cab0: 72 20 69 66 20 61 6e 20 61 75 74 68 6f 72 69 7a  r if an authoriz
cac0: 65 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 2a  er function is.*
cad0: 2a 20 61 64 64 65 64 20 6f 72 20 63 68 61 6e 67  * added or chang
cae0: 65 64 2e 0a 2a 2a 0a 2a 2f 0a 69 6e 74 20 73 71  ed..**.*/.int sq
caf0: 6c 69 74 65 33 5f 65 78 70 69 72 65 64 28 73 71  lite3_expired(sq
cb00: 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f  lite3_stmt*);../
cb10: 2a 0a 2a 2a 20 4d 6f 76 65 20 61 6c 6c 20 62 69  *.** Move all bi
cb20: 6e 64 69 6e 67 73 20 66 72 6f 6d 20 74 68 65 20  ndings from the 
cb30: 66 69 72 73 74 20 70 72 65 70 61 72 65 64 20 73  first prepared s
cb40: 74 61 74 65 6d 65 6e 74 20 6f 76 65 72 20 74 6f  tatement over to
cb50: 20 74 68 65 20 73 65 63 6f 6e 64 2e 0a 2a 2a 20   the second..** 
cb60: 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20  This routine is 
cb70: 75 73 65 66 75 6c 2c 20 66 6f 72 20 65 78 61 6d  useful, for exam
cb80: 70 6c 65 2c 20 69 66 20 74 68 65 20 66 69 72 73  ple, if the firs
cb90: 74 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  t prepared state
cba0: 6d 65 6e 74 0a 2a 2a 20 66 61 69 6c 73 20 77 69  ment.** fails wi
cbb0: 74 68 20 61 6e 20 53 51 4c 49 54 45 5f 53 43 48  th an SQLITE_SCH
cbc0: 45 4d 41 20 65 72 72 6f 72 2e 20 20 54 68 65 20  EMA error.  The 
cbd0: 73 61 6d 65 20 53 51 4c 20 63 61 6e 20 62 65 20  same SQL can be 
cbe0: 70 72 65 70 61 72 65 64 20 69 6e 74 6f 0a 2a 2a  prepared into.**
cbf0: 20 74 68 65 20 73 65 63 6f 6e 64 20 70 72 65 70   the second prep
cc00: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 74  ared statement t
cc10: 68 65 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 62  hen all of the b
cc20: 69 6e 64 69 6e 67 73 20 74 72 61 6e 73 66 65 72  indings transfer
cc30: 65 64 20 6f 76 65 72 0a 2a 2a 20 74 6f 20 74 68  ed over.** to th
cc40: 65 20 73 65 63 6f 6e 64 20 73 74 61 74 65 6d 65  e second stateme
cc50: 6e 74 20 62 65 66 6f 72 65 20 74 68 65 20 66 69  nt before the fi
cc60: 72 73 74 20 73 74 61 74 65 6d 65 6e 74 20 69 73  rst statement is
cc70: 20 66 69 6e 61 6c 69 7a 65 64 2e 0a 2a 2f 0a 69   finalized..*/.i
cc80: 6e 74 20 73 71 6c 69 74 65 33 5f 74 72 61 6e 73  nt sqlite3_trans
cc90: 66 65 72 5f 62 69 6e 64 69 6e 67 73 28 73 71 6c  fer_bindings(sql
cca0: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 73 71 6c 69  ite3_stmt*, sqli
ccb0: 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
ccc0: 2a 2a 20 49 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ** If the follow
ccd0: 69 6e 67 20 67 6c 6f 62 61 6c 20 76 61 72 69 61  ing global varia
cce0: 62 6c 65 20 69 73 20 6d 61 64 65 20 74 6f 20 70  ble is made to p
ccf0: 6f 69 6e 74 20 74 6f 20 61 0a 2a 2a 20 73 74 72  oint to a.** str
cd00: 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
cd10: 20 6e 61 6d 65 20 6f 66 20 61 20 64 69 72 65 63   name of a direc
cd20: 74 6f 72 79 2c 20 74 68 65 6e 20 61 6c 6c 20 74  tory, then all t
cd30: 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 0a 2a  emporary files.*
cd40: 2a 20 63 72 65 61 74 65 64 20 62 79 20 53 51 4c  * created by SQL
cd50: 69 74 65 20 77 69 6c 6c 20 62 65 20 70 6c 61 63  ite will be plac
cd60: 65 64 20 69 6e 20 74 68 61 74 20 64 69 72 65 63  ed in that direc
cd70: 74 6f 72 79 2e 20 20 49 66 20 74 68 69 73 20 76  tory.  If this v
cd80: 61 72 69 61 62 6c 65 0a 2a 2a 20 69 73 20 4e 55  ariable.** is NU
cd90: 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e  LL pointer, then
cda0: 20 53 51 4c 69 74 65 20 64 6f 65 73 20 61 20 73   SQLite does a s
cdb0: 65 61 72 63 68 20 66 6f 72 20 61 6e 20 61 70 70  earch for an app
cdc0: 72 6f 70 72 69 61 74 65 20 74 65 6d 70 6f 72 61  ropriate tempora
cdd0: 72 79 0a 2a 2a 20 66 69 6c 65 20 64 69 72 65 63  ry.** file direc
cde0: 74 6f 72 79 2e 0a 2a 2a 0a 2a 2a 20 4f 6e 63 65  tory..**.** Once
cdf0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
ce00: 68 61 73 20 62 65 65 6e 20 63 61 6c 6c 65 64 2c  has been called,
ce10: 20 63 68 61 6e 67 69 6e 67 20 74 68 69 73 20 76   changing this v
ce20: 61 72 69 61 62 6c 65 20 77 69 6c 6c 20 69 6e 76  ariable will inv
ce30: 61 6c 69 64 61 74 65 0a 2a 2a 20 74 68 65 20 63  alidate.** the c
ce40: 75 72 72 65 6e 74 20 74 65 6d 70 6f 72 61 72 79  urrent temporary
ce50: 20 64 61 74 61 62 61 73 65 2c 20 69 66 20 61 6e   database, if an
ce60: 79 2e 0a 2a 2f 0a 65 78 74 65 72 6e 20 63 68 61  y..*/.extern cha
ce70: 72 20 2a 73 71 6c 69 74 65 33 5f 74 65 6d 70 5f  r *sqlite3_temp_
ce80: 64 69 72 65 63 74 6f 72 79 3b 0a 0a 2f 2a 0a 2a  directory;../*.*
ce90: 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
cea0: 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 72 65 63  is called to rec
ceb0: 6f 76 65 72 20 66 72 6f 6d 20 61 20 6d 61 6c 6c  over from a mall
cec0: 6f 63 28 29 20 66 61 69 6c 75 72 65 20 74 68 61  oc() failure tha
ced0: 74 20 6f 63 63 75 72 65 64 0a 2a 2a 20 77 69 74  t occured.** wit
cee0: 68 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 6c  hin the SQLite l
cef0: 69 62 72 61 72 79 2e 20 4e 6f 72 6d 61 6c 6c 79  ibrary. Normally
cf00: 2c 20 61 66 74 65 72 20 61 20 73 69 6e 67 6c 65  , after a single
cf10: 20 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 73 20   malloc() fails 
cf20: 74 68 65 20 0a 2a 2a 20 6c 69 62 72 61 72 79 20  the .** library 
cf30: 72 65 66 75 73 65 73 20 74 6f 20 66 75 6e 63 74  refuses to funct
cf40: 69 6f 6e 20 28 61 6c 6c 20 6d 61 6a 6f 72 20 63  ion (all major c
cf50: 61 6c 6c 73 20 72 65 74 75 72 6e 20 53 51 4c 49  alls return SQLI
cf60: 54 45 5f 4e 4f 4d 45 4d 29 2e 0a 2a 2a 20 54 68  TE_NOMEM)..** Th
cf70: 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 73 74  is function rest
cf80: 6f 72 65 73 20 74 68 65 20 6c 69 62 72 61 72 79  ores the library
cf90: 20 73 74 61 74 65 20 73 6f 20 74 68 61 74 20 69   state so that i
cfa0: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 67  t can be used ag
cfb0: 61 69 6e 2e 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20 65  ain..**.** All e
cfc0: 78 69 73 74 69 6e 67 20 73 74 61 74 65 6d 65 6e  xisting statemen
cfd0: 74 73 20 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ts (sqlite3_stmt
cfe0: 20 70 6f 69 6e 74 65 72 73 29 20 6d 75 73 74 20   pointers) must 
cff0: 62 65 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 0a  be finalized or.
d000: 2a 2a 20 72 65 73 65 74 20 62 65 66 6f 72 65 20  ** reset before 
d010: 74 68 69 73 20 63 61 6c 6c 20 69 73 20 6d 61 64  this call is mad
d020: 65 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 53 51  e. Otherwise, SQ
d030: 4c 49 54 45 5f 42 55 53 59 20 69 73 20 72 65 74  LITE_BUSY is ret
d040: 75 72 6e 65 64 2e 0a 2a 2a 20 49 66 20 61 6e 79  urned..** If any
d050: 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62   in-memory datab
d060: 61 73 65 73 20 61 72 65 20 69 6e 20 75 73 65 2c  ases are in use,
d070: 20 65 69 74 68 65 72 20 61 73 20 61 20 6d 61 69   either as a mai
d080: 6e 20 6f 72 20 54 45 4d 50 0a 2a 2a 20 64 61 74  n or TEMP.** dat
d090: 61 62 61 73 65 2c 20 53 51 4c 49 54 45 5f 45 52  abase, SQLITE_ER
d0a0: 52 4f 52 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ROR is returned.
d0b0: 20 49 6e 20 65 69 74 68 65 72 20 6f 66 20 74 68   In either of th
d0c0: 65 73 65 20 63 61 73 65 73 2c 20 74 68 65 20 0a  ese cases, the .
d0d0: 2a 2a 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f  ** library is no
d0e0: 74 20 72 65 73 65 74 20 61 6e 64 20 72 65 6d 61  t reset and rema
d0f0: 69 6e 73 20 75 6e 75 73 61 62 6c 65 2e 0a 2a 2a  ins unusable..**
d100: 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f  .** This functio
d110: 6e 20 69 73 20 2a 6e 6f 74 2a 20 74 68 72 65 61  n is *not* threa
d120: 64 73 61 66 65 2e 20 43 61 6c 6c 69 6e 67 20 74  dsafe. Calling t
d130: 68 69 73 20 66 72 6f 6d 20 77 69 74 68 69 6e 20  his from within 
d140: 61 20 74 68 72 65 61 64 65 64 0a 2a 2a 20 61 70  a threaded.** ap
d150: 70 6c 69 63 61 74 69 6f 6e 20 77 68 65 6e 20 74  plication when t
d160: 68 72 65 61 64 73 20 6f 74 68 65 72 20 74 68 61  hreads other tha
d170: 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 68 61 76  n the caller hav
d180: 65 20 75 73 65 64 20 53 51 4c 69 74 65 20 69 73  e used SQLite is
d190: 0a 2a 2a 20 64 61 6e 67 65 72 6f 75 73 20 61 6e  .** dangerous an
d1a0: 64 20 77 69 6c 6c 20 61 6c 6d 6f 73 74 20 63 65  d will almost ce
d1b0: 72 74 61 69 6e 6c 79 20 72 65 73 75 6c 74 20 69  rtainly result i
d1c0: 6e 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 73 2e 0a  n malfunctions..
d1d0: 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74  **.** This funct
d1e0: 69 6f 6e 61 6c 69 74 79 20 63 61 6e 20 62 65 20  ionality can be 
d1f0: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 20 62  omitted from a b
d200: 75 69 6c 64 20 62 79 20 64 65 66 69 6e 69 6e 67  uild by defining
d210: 20 74 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f   the .** SQLITE_
d220: 4f 4d 49 54 5f 47 4c 4f 42 41 4c 52 45 43 4f 56  OMIT_GLOBALRECOV
d230: 45 52 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69  ER at compile ti
d240: 6d 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  me..*/.int sqlit
d250: 65 33 5f 67 6c 6f 62 61 6c 5f 72 65 63 6f 76 65  e3_global_recove
d260: 72 28 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 65 73 74  r();../*.** Test
d270: 20 74 6f 20 73 65 65 20 77 68 65 74 68 65 72 20   to see whether 
d280: 6f 72 20 6e 6f 74 20 74 68 65 20 64 61 74 61 62  or not the datab
d290: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
d2a0: 73 20 69 6e 20 61 75 74 6f 63 6f 6d 6d 69 74 0a  s in autocommit.
d2b0: 2a 2a 20 6d 6f 64 65 2e 20 20 52 65 74 75 72 6e  ** mode.  Return
d2c0: 20 54 52 55 45 20 69 66 20 69 74 20 69 73 20 61   TRUE if it is a
d2d0: 6e 64 20 46 41 4c 53 45 20 69 66 20 6e 6f 74 2e  nd FALSE if not.
d2e0: 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64    Autocommit mod
d2f0: 65 20 69 73 20 6f 6e 0a 2a 2a 20 62 79 20 64 65  e is on.** by de
d300: 66 61 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6d 6d  fault.  Autocomm
d310: 69 74 20 69 73 20 64 69 73 61 62 6c 65 64 20 62  it is disabled b
d320: 79 20 61 20 42 45 47 49 4e 20 73 74 61 74 65 6d  y a BEGIN statem
d330: 65 6e 74 20 61 6e 64 20 72 65 65 6e 61 62 6c 65  ent and reenable
d340: 64 0a 2a 2a 20 62 79 20 74 68 65 20 6e 65 78 74  d.** by the next
d350: 20 43 4f 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c 42   COMMIT or ROLLB
d360: 41 43 4b 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ACK..*/.int sqli
d370: 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
d380: 69 74 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f  it(sqlite3*);../
d390: 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20  *.** Return the 
d3a0: 73 71 6c 69 74 65 33 2a 20 64 61 74 61 62 61 73  sqlite3* databas
d3b0: 65 20 68 61 6e 64 6c 65 20 74 6f 20 77 68 69 63  e handle to whic
d3c0: 68 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  h the prepared s
d3d0: 74 61 74 65 6d 65 6e 74 20 67 69 76 65 6e 0a 2a  tatement given.*
d3e0: 2a 20 69 6e 20 74 68 65 20 61 72 67 75 6d 65 6e  * in the argumen
d3f0: 74 20 62 65 6c 6f 6e 67 73 2e 20 20 54 68 69 73  t belongs.  This
d400: 20 69 73 20 74 68 65 20 73 61 6d 65 20 64 61 74   is the same dat
d410: 61 62 61 73 65 20 68 61 6e 64 6c 65 20 74 68 61  abase handle tha
d420: 74 20 77 61 73 0a 2a 2a 20 74 68 65 20 66 69 72  t was.** the fir
d430: 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
d440: 68 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  he sqlite3_prepa
d450: 72 65 28 29 20 74 68 61 74 20 77 61 73 20 75 73  re() that was us
d460: 65 64 20 74 6f 20 63 72 65 61 74 65 0a 2a 2a 20  ed to create.** 
d470: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 6e  the statement in
d480: 20 74 68 65 20 66 69 72 73 74 20 70 6c 61 63 65   the first place
d490: 2e 0a 2a 2f 0a 73 71 6c 69 74 65 33 20 2a 73 71  ..*/.sqlite3 *sq
d4a0: 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28  lite3_db_handle(
d4b0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a  sqlite3_stmt*);.
d4c0: 0a 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70  .#ifdef __cplusp
d4d0: 6c 75 73 0a 7d 20 20 2f 2a 20 45 6e 64 20 6f 66  lus.}  /* End of
d4e0: 20 74 68 65 20 27 65 78 74 65 72 6e 20 22 43 22   the 'extern "C"
d4f0: 27 20 62 6c 6f 63 6b 20 2a 2f 0a 23 65 6e 64 69  ' block */.#endi
d500: 66 0a 23 65 6e 64 69 66 0a                       f.#endif.