System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2b8c26d1e645bb0e9a3fa47e9e8ccd39499ef904:


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 32 20 32 30 30 35 2f 30 33  .h,v 1.2 2005/03
0200: 2f 31 31 20 31 35 3a 30 33 3a 33 31 20 72 6d 73  /11 15:03:31 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 31 2e 34 22 0a 0a         "3.1.4"..
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 31 30 30 34 0a 0a 2f 2a 0a 2a 2a 20 54  3001004../*.** 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 41 6e 20 69 6e 74 65    2   /* An inte
15d0: 72 6e 61 6c 20 6c 6f 67 69 63 20 65 72 72 6f 72  rnal logic error
15e0: 20 69 6e 20 53 51 4c 69 74 65 20 2a 2f 0a 23 64   in SQLite */.#d
15f0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 45 52  efine SQLITE_PER
1600: 4d 20 20 20 20 20 20 20 20 20 33 20 20 20 2f 2a  M         3   /*
1610: 20 41 63 63 65 73 73 20 70 65 72 6d 69 73 73 69   Access permissi
1620: 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65  on denied */.#de
1630: 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 42 4f 52  fine SQLITE_ABOR
1640: 54 20 20 20 20 20 20 20 20 34 20 20 20 2f 2a 20  T        4   /* 
1650: 43 61 6c 6c 62 61 63 6b 20 72 6f 75 74 69 6e 65  Callback routine
1660: 20 72 65 71 75 65 73 74 65 64 20 61 6e 20 61 62   requested an ab
1670: 6f 72 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ort */.#define S
1680: 51 4c 49 54 45 5f 42 55 53 59 20 20 20 20 20 20  QLITE_BUSY      
1690: 20 20 20 35 20 20 20 2f 2a 20 54 68 65 20 64 61     5   /* The da
16a0: 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 6c  tabase file is l
16b0: 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  ocked */.#define
16c0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 20   SQLITE_LOCKED  
16d0: 20 20 20 20 20 36 20 20 20 2f 2a 20 41 20 74 61       6   /* A ta
16e0: 62 6c 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ble in the datab
16f0: 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f  ase is locked */
1700: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1710: 4e 4f 4d 45 4d 20 20 20 20 20 20 20 20 37 20 20  NOMEM        7  
1720: 20 2f 2a 20 41 20 6d 61 6c 6c 6f 63 28 29 20 66   /* A malloc() f
1730: 61 69 6c 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  ailed */.#define
1740: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
1750: 20 20 20 20 20 38 20 20 20 2f 2a 20 41 74 74 65       8   /* Atte
1760: 6d 70 74 20 74 6f 20 77 72 69 74 65 20 61 20 72  mpt to write a r
1770: 65 61 64 6f 6e 6c 79 20 64 61 74 61 62 61 73 65  eadonly database
1780: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1790: 54 45 5f 49 4e 54 45 52 52 55 50 54 20 20 20 20  TE_INTERRUPT    
17a0: 39 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f 6e  9   /* Operation
17b0: 20 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 73   terminated by s
17c0: 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
17d0: 28 29 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ()*/.#define SQL
17e0: 49 54 45 5f 49 4f 45 52 52 20 20 20 20 20 20 20  ITE_IOERR       
17f0: 31 30 20 20 20 2f 2a 20 53 6f 6d 65 20 6b 69 6e  10   /* Some kin
1800: 64 20 6f 66 20 64 69 73 6b 20 49 2f 4f 20 65 72  d of disk I/O er
1810: 72 6f 72 20 6f 63 63 75 72 72 65 64 20 2a 2f 0a  ror occurred */.
1820: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1830: 4f 52 52 55 50 54 20 20 20 20 20 31 31 20 20 20  ORRUPT     11   
1840: 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20  /* The database 
1850: 64 69 73 6b 20 69 6d 61 67 65 20 69 73 20 6d 61  disk image is ma
1860: 6c 66 6f 72 6d 65 64 20 2a 2f 0a 23 64 65 66 69  lformed */.#defi
1870: 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  ne SQLITE_NOTFOU
1880: 4e 44 20 20 20 20 31 32 20 20 20 2f 2a 20 28 49  ND    12   /* (I
1890: 6e 74 65 72 6e 61 6c 20 4f 6e 6c 79 29 20 54 61  nternal Only) Ta
18a0: 62 6c 65 20 6f 72 20 72 65 63 6f 72 64 20 6e 6f  ble or record no
18b0: 74 20 66 6f 75 6e 64 20 2a 2f 0a 23 64 65 66 69  t found */.#defi
18c0: 6e 65 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20 20  ne SQLITE_FULL  
18d0: 20 20 20 20 20 20 31 33 20 20 20 2f 2a 20 49 6e        13   /* In
18e0: 73 65 72 74 69 6f 6e 20 66 61 69 6c 65 64 20 62  sertion failed b
18f0: 65 63 61 75 73 65 20 64 61 74 61 62 61 73 65 20  ecause database 
1900: 69 73 20 66 75 6c 6c 20 2a 2f 0a 23 64 65 66 69  is full */.#defi
1910: 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  ne SQLITE_CANTOP
1920: 45 4e 20 20 20 20 31 34 20 20 20 2f 2a 20 55 6e  EN    14   /* Un
1930: 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 74 68 65  able to open the
1940: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 2a   database file *
1950: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1960: 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 31 35 20  _PROTOCOL    15 
1970: 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 6c 6f    /* Database lo
1980: 63 6b 20 70 72 6f 74 6f 63 6f 6c 20 65 72 72 6f  ck protocol erro
1990: 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  r */.#define SQL
19a0: 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20 20 20  ITE_EMPTY       
19b0: 31 36 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  16   /* Database
19c0: 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a 23 64 65   is empty */.#de
19d0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 43 48 45  fine SQLITE_SCHE
19e0: 4d 41 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20  MA      17   /* 
19f0: 54 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  The database sch
1a00: 65 6d 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a 23  ema changed */.#
1a10: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 4f  define SQLITE_TO
1a20: 4f 42 49 47 20 20 20 20 20 20 31 38 20 20 20 2f  OBIG      18   /
1a30: 2a 20 54 6f 6f 20 6d 75 63 68 20 64 61 74 61 20  * Too much data 
1a40: 66 6f 72 20 6f 6e 65 20 72 6f 77 20 6f 66 20 61  for one row of a
1a50: 20 74 61 62 6c 65 20 2a 2f 0a 23 64 65 66 69 6e   table */.#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 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 72 65 74  .../*.** The ret
4d30: 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 65  urn value of the
4d40: 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 66   authorization f
4d50: 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62  unction should b
4d60: 65 20 6f 6e 65 20 6f 66 20 74 68 65 0a 2a 2a 20  e one of the.** 
4d70: 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61  following consta
4d80: 6e 74 73 3a 0a 2a 2f 0a 2f 2a 20 23 64 65 66 69  nts:.*/./* #defi
4d90: 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20 30 20  ne SQLITE_OK  0 
4da0: 20 20 2f 2f 20 41 6c 6c 6f 77 20 61 63 63 65 73    // Allow acces
4db0: 73 20 28 54 68 69 73 20 69 73 20 61 63 74 75 61  s (This is actua
4dc0: 6c 6c 79 20 64 65 66 69 6e 65 64 20 61 62 6f 76  lly defined abov
4dd0: 65 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  e) */.#define SQ
4de0: 4c 49 54 45 5f 44 45 4e 59 20 20 20 31 20 20 20  LITE_DENY   1   
4df0: 2f 2a 20 41 62 6f 72 74 20 74 68 65 20 53 51 4c  /* Abort the SQL
4e00: 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20   statement with 
4e10: 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66  an error */.#def
4e20: 69 6e 65 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52  ine SQLITE_IGNOR
4e30: 45 20 32 20 20 20 2f 2a 20 44 6f 6e 27 74 20 61  E 2   /* Don't a
4e40: 6c 6c 6f 77 20 61 63 63 65 73 73 2c 20 62 75 74  llow access, but
4e50: 20 64 6f 6e 27 74 20 67 65 6e 65 72 61 74 65 20   don't generate 
4e60: 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a  an error */../*.
4e70: 2a 2a 20 52 65 67 69 73 74 65 72 20 61 20 66 75  ** Register a fu
4e80: 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  nction that is c
4e90: 61 6c 6c 65 64 20 61 74 20 65 76 65 72 79 20 69  alled at every i
4ea0: 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 73 71 6c  nvocation of sql
4eb0: 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 6f  ite3_exec().** o
4ec0: 72 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  r sqlite3_prepar
4ed0: 65 28 29 2e 20 20 54 68 69 73 20 66 75 6e 63 74  e().  This funct
4ee0: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
4ef0: 28 66 6f 72 20 65 78 61 6d 70 6c 65 29 20 74 6f  (for example) to
4f00: 20 67 65 6e 65 72 61 74 65 0a 2a 2a 20 61 20 6c   generate.** a l
4f10: 6f 67 20 66 69 6c 65 20 6f 66 20 61 6c 6c 20 53  og file of all S
4f20: 51 4c 20 65 78 65 63 75 74 65 64 20 61 67 61 69  QL executed agai
4f30: 6e 73 74 20 61 20 64 61 74 61 62 61 73 65 2e 0a  nst a database..
4f40: 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  */.void *sqlite3
4f50: 5f 74 72 61 63 65 28 73 71 6c 69 74 65 33 2a 2c  _trace(sqlite3*,
4f60: 20 76 6f 69 64 28 2a 78 54 72 61 63 65 29 28 76   void(*xTrace)(v
4f70: 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  oid*,const char*
4f80: 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a  ), void*);../*.*
4f90: 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63  * This routine c
4fa0: 6f 6e 66 69 67 75 72 65 73 20 61 20 63 61 6c 6c  onfigures a call
4fb0: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2d 20  back function - 
4fc0: 74 68 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c  the progress cal
4fd0: 6c 62 61 63 6b 20 2d 20 74 68 61 74 0a 2a 2a 20  lback - that.** 
4fe0: 69 73 20 69 6e 76 6f 6b 65 64 20 70 65 72 69 6f  is invoked perio
4ff0: 64 69 63 61 6c 6c 79 20 64 75 72 69 6e 67 20 6c  dically during l
5000: 6f 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61 6c 6c  ong running call
5010: 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65  s to sqlite3_exe
5020: 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  c(),.** sqlite3_
5030: 73 74 65 70 28 29 20 61 6e 64 20 73 71 6c 69 74  step() and sqlit
5040: 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2e 20  e3_get_table(). 
5050: 41 6e 20 65 78 61 6d 70 6c 65 20 75 73 65 20 66  An example use f
5060: 6f 72 20 74 68 69 73 20 41 50 49 20 69 73 20 74  or this API is t
5070: 6f 20 0a 2a 2a 20 6b 65 65 70 20 61 20 47 55 49  o .** keep a GUI
5080: 20 75 70 64 61 74 65 64 20 64 75 72 69 6e 67 20   updated during 
5090: 61 20 6c 61 72 67 65 20 71 75 65 72 79 2e 0a 2a  a large query..*
50a0: 2a 0a 2a 2a 20 54 68 65 20 70 72 6f 67 72 65 73  *.** The progres
50b0: 73 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  s callback is in
50c0: 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65  voked once for e
50d0: 76 65 72 79 20 4e 20 76 69 72 74 75 61 6c 20 6d  very N virtual m
50e0: 61 63 68 69 6e 65 20 6f 70 63 6f 64 65 73 2c 0a  achine opcodes,.
50f0: 2a 2a 20 77 68 65 72 65 20 4e 20 69 73 20 74 68  ** where N is th
5100: 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
5110: 74 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69  t to this functi
5120: 6f 6e 2e 20 54 68 65 20 70 72 6f 67 72 65 73 73  on. The progress
5130: 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 74 73   callback.** its
5140: 65 6c 66 20 69 73 20 69 64 65 6e 74 69 66 69 65  elf is identifie
5150: 64 20 62 79 20 74 68 65 20 74 68 69 72 64 20 61  d by the third a
5160: 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20  rgument to this 
5170: 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 66 6f  function. The fo
5180: 75 72 74 68 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  urth.** argument
5190: 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f   to this functio
51a0: 6e 20 69 73 20 61 20 76 6f 69 64 20 70 6f 69 6e  n is a void poin
51b0: 74 65 72 20 70 61 73 73 65 64 20 74 6f 20 74 68  ter passed to th
51c0: 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62  e progress callb
51d0: 61 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ack.** function 
51e0: 65 61 63 68 20 74 69 6d 65 20 69 74 20 69 73 20  each time it is 
51f0: 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49  invoked..**.** I
5200: 66 20 61 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  f a call to sqli
5210: 74 65 33 5f 65 78 65 63 28 29 2c 20 73 71 6c 69  te3_exec(), sqli
5220: 74 65 33 5f 73 74 65 70 28 29 20 6f 72 20 73 71  te3_step() or sq
5230: 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
5240: 29 20 72 65 73 75 6c 74 73 20 0a 2a 2a 20 69 6e  ) results .** in
5250: 20 6c 65 73 73 20 74 68 61 6e 20 4e 20 6f 70 63   less than N opc
5260: 6f 64 65 73 20 62 65 69 6e 67 20 65 78 65 63 75  odes being execu
5270: 74 65 64 2c 20 74 68 65 6e 20 74 68 65 20 70 72  ted, then the pr
5280: 6f 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20  ogress callback 
5290: 69 73 20 6e 6f 74 0a 2a 2a 20 69 6e 76 6f 6b 65  is not.** invoke
52a0: 64 2e 0a 2a 2a 20 0a 2a 2a 20 54 6f 20 72 65 6d  d..** .** To rem
52b0: 6f 76 65 20 74 68 65 20 70 72 6f 67 72 65 73 73  ove the progress
52c0: 20 63 61 6c 6c 62 61 63 6b 20 61 6c 74 6f 67 65   callback altoge
52d0: 74 68 65 72 2c 20 70 61 73 73 20 4e 55 4c 4c 20  ther, pass NULL 
52e0: 61 73 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20  as the third.** 
52f0: 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73  argument to this
5300: 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a   function..**.**
5310: 20 49 66 20 74 68 65 20 70 72 6f 67 72 65 73 73   If the progress
5320: 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
5330: 73 20 61 20 72 65 73 75 6c 74 20 6f 74 68 65 72  s a result other
5340: 20 74 68 61 6e 20 30 2c 20 74 68 65 6e 20 74 68   than 0, then th
5350: 65 20 63 75 72 72 65 6e 74 20 0a 2a 2a 20 71 75  e current .** qu
5360: 65 72 79 20 69 73 20 69 6d 6d 65 64 69 61 74 65  ery is immediate
5370: 6c 79 20 74 65 72 6d 69 6e 61 74 65 64 20 61 6e  ly terminated an
5380: 64 20 61 6e 79 20 64 61 74 61 62 61 73 65 20 63  d any database c
5390: 68 61 6e 67 65 73 20 72 6f 6c 6c 65 64 20 62 61  hanges rolled ba
53a0: 63 6b 2e 20 49 66 20 74 68 65 0a 2a 2a 20 71 75  ck. If the.** qu
53b0: 65 72 79 20 77 61 73 20 70 61 72 74 20 6f 66 20  ery was part of 
53c0: 61 20 6c 61 72 67 65 72 20 74 72 61 6e 73 61 63  a larger transac
53d0: 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 74  tion, then the t
53e0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 6e 6f  ransaction is no
53f0: 74 20 72 6f 6c 6c 65 64 0a 2a 2a 20 62 61 63 6b  t rolled.** back
5400: 20 61 6e 64 20 72 65 6d 61 69 6e 73 20 61 63 74   and remains act
5410: 69 76 65 2e 20 54 68 65 20 73 71 6c 69 74 65 33  ive. The sqlite3
5420: 5f 65 78 65 63 28 29 20 63 61 6c 6c 20 72 65 74  _exec() call ret
5430: 75 72 6e 73 20 53 51 4c 49 54 45 5f 41 42 4f 52  urns SQLITE_ABOR
5440: 54 2e 20 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 20 54  T. .**.******* T
5450: 48 49 53 20 49 53 20 41 4e 20 45 58 50 45 52 49  HIS IS AN EXPERI
5460: 4d 45 4e 54 41 4c 20 41 50 49 20 41 4e 44 20 49  MENTAL API AND I
5470: 53 20 53 55 42 4a 45 43 54 20 54 4f 20 43 48 41  S SUBJECT TO CHA
5480: 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 76 6f  NGE ******.*/.vo
5490: 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72  id sqlite3_progr
54a0: 65 73 73 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69  ess_handler(sqli
54b0: 74 65 33 2a 2c 20 69 6e 74 2c 20 69 6e 74 28 2a  te3*, int, int(*
54c0: 29 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29  )(void*), void*)
54d0: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 67 69 73 74 65  ;../*.** Registe
54e0: 72 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  r a callback fun
54f0: 63 74 69 6f 6e 20 74 6f 20 62 65 20 69 6e 76 6f  ction to be invo
5500: 6b 65 64 20 77 68 65 6e 65 76 65 72 20 61 20 6e  ked whenever a n
5510: 65 77 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 2a  ew transaction.*
5520: 2a 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 2e 20  * is committed. 
5530: 20 54 68 65 20 70 41 72 67 20 61 72 67 75 6d 65   The pArg argume
5540: 6e 74 20 69 73 20 70 61 73 73 65 64 20 74 68 72  nt is passed thr
5550: 6f 75 67 68 20 74 6f 20 74 68 65 20 63 61 6c 6c  ough to the call
5560: 62 61 63 6b 2e 0a 2a 2a 20 63 61 6c 6c 62 61 63  back..** callbac
5570: 6b 2e 20 20 49 66 20 74 68 65 20 63 61 6c 6c 62  k.  If the callb
5580: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ack function ret
5590: 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74  urns non-zero, t
55a0: 68 65 6e 20 74 68 65 20 63 6f 6d 6d 69 74 0a 2a  hen the commit.*
55b0: 2a 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69  * is converted i
55c0: 6e 74 6f 20 61 20 72 6f 6c 6c 62 61 63 6b 2e 0a  nto a rollback..
55d0: 2a 2a 0a 2a 2a 20 49 66 20 61 6e 6f 74 68 65 72  **.** If another
55e0: 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 70 72   function was pr
55f0: 65 76 69 6f 75 73 6c 79 20 72 65 67 69 73 74 65  eviously registe
5600: 72 65 64 2c 20 69 74 73 20 70 41 72 67 20 76 61  red, its pArg va
5610: 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e  lue is returned.
5620: 0a 2a 2a 20 4f 74 68 65 72 77 69 73 65 20 4e 55  .** Otherwise NU
5630: 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a  LL is returned..
5640: 2a 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 69 6e  **.** Registerin
5650: 67 20 61 20 4e 55 4c 4c 20 66 75 6e 63 74 69 6f  g a NULL functio
5660: 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 63  n disables the c
5670: 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 2a 2a  allback..**.****
5680: 2a 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45  *** THIS IS AN E
5690: 58 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20  XPERIMENTAL API 
56a0: 41 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20 54  AND IS SUBJECT T
56b0: 4f 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a  O CHANGE ******.
56c0: 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  */.void *sqlite3
56d0: 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 73 71 6c  _commit_hook(sql
56e0: 69 74 65 33 2a 2c 20 69 6e 74 28 2a 29 28 76 6f  ite3*, int(*)(vo
56f0: 69 64 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f  id*), void*);../
5700: 2a 0a 2a 2a 20 4f 70 65 6e 20 74 68 65 20 73 71  *.** Open the sq
5710: 6c 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69  lite database fi
5720: 6c 65 20 22 66 69 6c 65 6e 61 6d 65 22 2e 20 20  le "filename".  
5730: 54 68 65 20 22 66 69 6c 65 6e 61 6d 65 22 20 69  The "filename" i
5740: 73 20 55 54 46 2d 38 0a 2a 2a 20 65 6e 63 6f 64  s UTF-8.** encod
5750: 65 64 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f  ed for sqlite3_o
5760: 70 65 6e 28 29 20 61 6e 64 20 55 54 46 2d 31 36  pen() and UTF-16
5770: 20 65 6e 63 6f 64 65 64 20 69 6e 20 74 68 65 20   encoded in the 
5780: 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72 64 65  native byte orde
5790: 72 0a 2a 2a 20 66 6f 72 20 73 71 6c 69 74 65 33  r.** for sqlite3
57a0: 5f 6f 70 65 6e 31 36 28 29 2e 20 20 41 6e 20 73  _open16().  An s
57b0: 71 6c 69 74 65 33 2a 20 68 61 6e 64 6c 65 20 69  qlite3* handle i
57c0: 73 20 72 65 74 75 72 6e 65 64 20 69 6e 20 2a 70  s returned in *p
57d0: 70 44 62 2c 20 65 76 65 6e 0a 2a 2a 20 69 66 20  pDb, even.** if 
57e0: 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e  an error occurs.
57f0: 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65   If the database
5800: 20 69 73 20 6f 70 65 6e 65 64 20 28 6f 72 20 63   is opened (or c
5810: 72 65 61 74 65 64 29 20 73 75 63 63 65 73 73 66  reated) successf
5820: 75 6c 6c 79 2c 0a 2a 2a 20 74 68 65 6e 20 53 51  ully,.** then SQ
5830: 4c 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72  LITE_OK is retur
5840: 6e 65 64 2e 20 4f 74 68 65 72 77 69 73 65 20 61  ned. Otherwise a
5850: 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  n error code is 
5860: 72 65 74 75 72 6e 65 64 2e 20 54 68 65 0a 2a 2a  returned. The.**
5870: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
5880: 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 65 72 72  ) or sqlite3_err
5890: 6d 73 67 31 36 28 29 20 20 72 6f 75 74 69 6e 65  msg16()  routine
58a0: 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  s can be used to
58b0: 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20 45 6e   obtain.** an En
58c0: 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20 64  glish language d
58d0: 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68  escription of th
58e0: 65 20 65 72 72 6f 72 2e 0a 2a 2a 0a 2a 2a 20 49  e error..**.** I
58f0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
5900: 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ile does not exi
5910: 73 74 2c 20 74 68 65 6e 20 61 20 6e 65 77 20 64  st, then a new d
5920: 61 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74  atabase is creat
5930: 65 64 2e 0a 2a 2a 20 54 68 65 20 65 6e 63 6f 64  ed..** The encod
5940: 69 6e 67 20 66 6f 72 20 74 68 65 20 64 61 74 61  ing for the data
5950: 62 61 73 65 20 69 73 20 55 54 46 2d 38 20 69 66  base is UTF-8 if
5960: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
5970: 69 73 20 63 61 6c 6c 65 64 20 61 6e 64 0a 2a 2a  is called and.**
5980: 20 55 54 46 2d 31 36 20 69 66 20 73 71 6c 69 74   UTF-16 if sqlit
5990: 65 33 5f 6f 70 65 6e 31 36 20 69 73 20 75 73 65  e3_open16 is use
59a0: 64 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68 65 72  d..**.** Whether
59b0: 20 6f 72 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72   or not an error
59c0: 20 6f 63 63 75 72 73 20 77 68 65 6e 20 69 74 20   occurs when it 
59d0: 69 73 20 6f 70 65 6e 65 64 2c 20 72 65 73 6f 75  is opened, resou
59e0: 72 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a  rces associated.
59f0: 2a 2a 20 77 69 74 68 20 74 68 65 20 73 71 6c 69  ** with the sqli
5a00: 74 65 33 2a 20 68 61 6e 64 6c 65 20 73 68 6f 75  te3* handle shou
5a10: 6c 64 20 62 65 20 72 65 6c 65 61 73 65 64 20 62  ld be released b
5a20: 79 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 0a  y passing it to.
5a30: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  ** sqlite3_close
5a40: 28 29 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f  () when it is no
5a50: 20 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65 64   longer required
5a60: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
5a70: 5f 6f 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20 63  _open(.  const c
5a80: 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20  har *filename,  
5a90: 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c   /* Database fil
5aa0: 65 6e 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f  ename (UTF-8) */
5ab0: 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44  .  sqlite3 **ppD
5ac0: 62 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55  b          /* OU
5ad0: 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e  T: SQLite db han
5ae0: 64 6c 65 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71  dle */.);.int sq
5af0: 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20  lite3_open16(.  
5b00: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65  const void *file
5b10: 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62  name,   /* Datab
5b20: 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54  ase filename (UT
5b30: 46 2d 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74  F-16) */.  sqlit
5b40: 65 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20  e3 **ppDb       
5b50: 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74     /* OUT: SQLit
5b60: 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29  e db handle */.)
5b70: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  ;../*.** Return 
5b80: 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 66  the error code f
5b90: 6f 72 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  or the most rece
5ba0: 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49  nt sqlite3_* API
5bb0: 20 63 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64   call associated
5bc0: 0a 2a 2a 20 77 69 74 68 20 73 71 6c 69 74 65 33  .** with sqlite3
5bd0: 20 68 61 6e 64 6c 65 20 27 64 62 27 2e 20 53 51   handle 'db'. SQ
5be0: 4c 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72  LITE_OK is retur
5bf0: 6e 65 64 20 69 66 20 74 68 65 20 6d 6f 73 74 20  ned if the most 
5c00: 72 65 63 65 6e 74 20 0a 2a 2a 20 41 50 49 20 63  recent .** API c
5c10: 61 6c 6c 20 77 61 73 20 73 75 63 63 65 73 73 66  all was successf
5c20: 75 6c 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 73 20  ul..**.** Calls 
5c30: 74 6f 20 6d 61 6e 79 20 73 71 6c 69 74 65 33 5f  to many sqlite3_
5c40: 2a 20 66 75 6e 63 74 69 6f 6e 73 20 73 65 74 20  * functions set 
5c50: 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 61  the error code a
5c60: 6e 64 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e  nd string return
5c70: 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33  ed.** by sqlite3
5c80: 5f 65 72 72 63 6f 64 65 28 29 2c 20 73 71 6c 69  _errcode(), sqli
5c90: 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64  te3_errmsg() and
5ca0: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31   sqlite3_errmsg1
5cb0: 36 28 29 0a 2a 2a 20 28 6f 76 65 72 77 72 69 74  6().** (overwrit
5cc0: 69 6e 67 20 74 68 65 20 70 72 65 76 69 6f 75 73  ing the previous
5cd0: 20 76 61 6c 75 65 73 29 2e 20 4e 6f 74 65 20 74   values). Note t
5ce0: 68 61 74 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c  hat calls to sql
5cf0: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 2c 0a  ite3_errcode(),.
5d00: 2a 2a 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  ** sqlite3_errms
5d10: 67 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  g() and sqlite3_
5d20: 65 72 72 6d 73 67 31 36 28 29 20 74 68 65 6d 73  errmsg16() thems
5d30: 65 6c 76 65 73 20 64 6f 20 6e 6f 74 20 61 66 66  elves do not aff
5d40: 65 63 74 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c  ect the.** resul
5d50: 74 73 20 6f 66 20 66 75 74 75 72 65 20 69 6e 76  ts of future inv
5d60: 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20  ocations..**.** 
5d70: 41 73 73 75 6d 69 6e 67 20 6e 6f 20 6f 74 68 65  Assuming no othe
5d80: 72 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 73 71  r intervening sq
5d90: 6c 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c  lite3_* API call
5da0: 73 20 61 72 65 20 6d 61 64 65 2c 20 74 68 65 20  s are made, the 
5db0: 65 72 72 6f 72 0a 2a 2a 20 63 6f 64 65 20 72 65  error.** code re
5dc0: 74 75 72 6e 65 64 20 62 79 20 74 68 69 73 20 66  turned by this f
5dd0: 75 6e 63 74 69 6f 6e 20 69 73 20 61 73 73 6f 63  unction is assoc
5de0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
5df0: 61 6d 65 20 65 72 72 6f 72 20 61 73 0a 2a 2a 20  ame error as.** 
5e00: 74 68 65 20 73 74 72 69 6e 67 73 20 20 72 65 74  the strings  ret
5e10: 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33  urned by sqlite3
5e20: 5f 65 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71  _errmsg() and sq
5e30: 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29  lite3_errmsg16()
5e40: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
5e50: 5f 65 72 72 63 6f 64 65 28 73 71 6c 69 74 65 33  _errcode(sqlite3
5e60: 20 2a 64 62 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65   *db);../*.** Re
5e70: 74 75 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 74  turn a pointer t
5e80: 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  o a UTF-8 encode
5e90: 64 20 73 74 72 69 6e 67 20 64 65 73 63 72 69 62  d string describ
5ea0: 69 6e 67 20 69 6e 20 65 6e 67 6c 69 73 68 20 74  ing in english t
5eb0: 68 65 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 6e 64  he.** error cond
5ec0: 69 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6d 6f  ition for the mo
5ed0: 73 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74 65  st recent sqlite
5ee0: 33 5f 2a 20 41 50 49 20 63 61 6c 6c 2e 20 54 68  3_* API call. Th
5ef0: 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 73 74  e returned.** st
5f00: 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20 74  ring is always t
5f10: 65 72 6d 69 6e 61 74 65 64 20 62 79 20 61 6e 20  erminated by an 
5f20: 30 78 30 30 20 62 79 74 65 2e 0a 2a 2a 0a 2a 2a  0x00 byte..**.**
5f30: 20 54 68 65 20 73 74 72 69 6e 67 20 22 6e 6f 74   The string "not
5f40: 20 61 6e 20 65 72 72 6f 72 22 20 69 73 20 72 65   an error" is re
5f50: 74 75 72 6e 65 64 20 77 68 65 6e 20 74 68 65 20  turned when the 
5f60: 6d 6f 73 74 20 72 65 63 65 6e 74 20 41 50 49 20  most recent API 
5f70: 63 61 6c 6c 20 77 61 73 0a 2a 2a 20 73 75 63 63  call was.** succ
5f80: 65 73 73 66 75 6c 2e 0a 2a 2f 0a 63 6f 6e 73 74  essful..*/.const
5f90: 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65   char *sqlite3_e
5fa0: 72 72 6d 73 67 28 73 71 6c 69 74 65 33 2a 29 3b  rrmsg(sqlite3*);
5fb0: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 61  ../*.** Return a
5fc0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54   pointer to a UT
5fd0: 46 2d 31 36 20 6e 61 74 69 76 65 20 62 79 74 65  F-16 native byte
5fe0: 20 6f 72 64 65 72 20 65 6e 63 6f 64 65 64 20 73   order encoded s
5ff0: 74 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67  tring describing
6000: 0a 2a 2a 20 69 6e 20 65 6e 67 6c 69 73 68 20 74  .** in english t
6010: 68 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69  he error conditi
6020: 6f 6e 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20  on for the most 
6030: 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a  recent sqlite3_*
6040: 20 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 54 68   API call..** Th
6050: 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e  e returned strin
6060: 67 20 69 73 20 61 6c 77 61 79 73 20 74 65 72 6d  g is always term
6070: 69 6e 61 74 65 64 20 62 79 20 61 20 70 61 69 72  inated by a pair
6080: 20 6f 66 20 30 78 30 30 20 62 79 74 65 73 2e 0a   of 0x00 bytes..
6090: 2a 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67  **.** The string
60a0: 20 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 20   "not an error" 
60b0: 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e  is returned when
60c0: 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74   the most recent
60d0: 20 41 50 49 20 63 61 6c 6c 20 77 61 73 0a 2a 2a   API call was.**
60e0: 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a   successful..*/.
60f0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69  const void *sqli
6100: 74 65 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c  te3_errmsg16(sql
6110: 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41  ite3*);../*.** A
6120: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
6130: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 61 71  e following opaq
6140: 75 65 20 73 74 72 75 63 74 75 72 65 20 69 73 20  ue structure is 
6150: 75 73 65 64 20 74 6f 20 72 65 70 72 65 73 65 6e  used to represen
6160: 74 0a 2a 2a 20 61 20 63 6f 6d 70 69 6c 65 64 20  t.** a compiled 
6170: 53 51 4c 20 73 74 61 74 6d 65 6e 74 2e 0a 2a 2f  SQL statment..*/
6180: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
6190: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 73 71 6c  sqlite3_stmt sql
61a0: 69 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a 2a  ite3_stmt;../*.*
61b0: 2a 20 54 6f 20 65 78 65 63 75 74 65 20 61 6e 20  * To execute an 
61c0: 53 51 4c 20 71 75 65 72 79 2c 20 69 74 20 6d 75  SQL query, it mu
61d0: 73 74 20 66 69 72 73 74 20 62 65 20 63 6f 6d 70  st first be comp
61e0: 69 6c 65 64 20 69 6e 74 6f 20 61 20 62 79 74 65  iled into a byte
61f0: 2d 63 6f 64 65 0a 2a 2a 20 70 72 6f 67 72 61 6d  -code.** program
6200: 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68   using one of th
6210: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74  e following rout
6220: 69 6e 65 73 2e 20 54 68 65 20 6f 6e 6c 79 20 64  ines. The only d
6230: 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65  ifference betwee
6240: 6e 0a 2a 2a 20 74 68 65 6d 20 69 73 20 74 68 61  n.** them is tha
6250: 74 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  t the second arg
6260: 75 6d 65 6e 74 2c 20 73 70 65 63 69 66 79 69 6e  ument, specifyin
6270: 67 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  g the SQL statem
6280: 65 6e 74 20 74 6f 0a 2a 2a 20 63 6f 6d 70 69 6c  ent to.** compil
6290: 65 2c 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f  e, is assumed to
62a0: 20 62 65 20 65 6e 63 6f 64 65 64 20 69 6e 20 55   be encoded in U
62b0: 54 46 2d 38 20 66 6f 72 20 74 68 65 20 73 71 6c  TF-8 for the sql
62c0: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 0a 2a  ite3_prepare().*
62d0: 2a 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 55  * function and U
62e0: 54 46 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65  TF-16 for sqlite
62f0: 33 5f 70 72 65 70 61 72 65 31 36 28 29 2e 0a 2a  3_prepare16()..*
6300: 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70  *.** The first p
6310: 61 72 61 6d 65 74 65 72 20 22 64 62 22 20 69 73  arameter "db" is
6320: 20 61 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62   an SQLite datab
6330: 61 73 65 20 68 61 6e 64 6c 65 2e 20 54 68 65 20  ase handle. The 
6340: 73 65 63 6f 6e 64 0a 2a 2a 20 70 61 72 61 6d 65  second.** parame
6350: 74 65 72 20 22 7a 53 71 6c 22 20 69 73 20 74 68  ter "zSql" is th
6360: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62  e statement to b
6370: 65 20 63 6f 6d 70 69 6c 65 64 2c 20 65 6e 63 6f  e compiled, enco
6380: 64 65 64 20 61 73 20 65 69 74 68 65 72 0a 2a 2a  ded as either.**
6390: 20 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36   UTF-8 or UTF-16
63a0: 20 28 73 65 65 20 61 62 6f 76 65 29 2e 20 49 66   (see above). If
63b0: 20 74 68 65 20 6e 65 78 74 20 70 61 72 61 6d 65   the next parame
63c0: 74 65 72 2c 20 22 6e 42 79 74 65 73 22 2c 20 69  ter, "nBytes", i
63d0: 73 20 6c 65 73 73 0a 2a 2a 20 74 68 61 6e 20 7a  s less.** than z
63e0: 65 72 6f 2c 20 74 68 65 6e 20 7a 53 71 6c 20 69  ero, then zSql i
63f0: 73 20 72 65 61 64 20 75 70 20 74 6f 20 74 68 65  s read up to the
6400: 20 66 69 72 73 74 20 6e 75 6c 20 74 65 72 6d 69   first nul termi
6410: 6e 61 74 6f 72 2e 20 20 49 66 0a 2a 2a 20 22 6e  nator.  If.** "n
6420: 42 79 74 65 73 22 20 69 73 20 6e 6f 74 20 6c 65  Bytes" is not le
6430: 73 73 20 74 68 61 6e 20 7a 65 72 6f 2c 20 74 68  ss than zero, th
6440: 65 6e 20 69 74 20 69 73 20 74 68 65 20 6c 65 6e  en it is the len
6450: 67 74 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e  gth of the strin
6460: 67 20 7a 53 71 6c 0a 2a 2a 20 69 6e 20 62 79 74  g zSql.** in byt
6470: 65 73 20 28 6e 6f 74 20 63 68 61 72 61 63 74 65  es (not characte
6480: 72 73 29 2e 0a 2a 2a 0a 2a 2a 20 2a 70 7a 54 61  rs)..**.** *pzTa
6490: 69 6c 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f  il is made to po
64a0: 69 6e 74 20 74 6f 20 74 68 65 20 66 69 72 73 74  int to the first
64b0: 20 62 79 74 65 20 70 61 73 74 20 74 68 65 20 65   byte past the e
64c0: 6e 64 20 6f 66 20 74 68 65 20 66 69 72 73 74 0a  nd of the first.
64d0: 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ** SQL statement
64e0: 20 69 6e 20 7a 53 71 6c 2e 20 20 54 68 69 73 20   in zSql.  This 
64f0: 72 6f 75 74 69 6e 65 20 6f 6e 6c 79 20 63 6f 6d  routine only com
6500: 70 69 6c 65 73 20 74 68 65 20 66 69 72 73 74 20  piles the first 
6510: 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69 6e 20  statement.** in 
6520: 7a 53 71 6c 2c 20 73 6f 20 2a 70 7a 54 61 69 6c  zSql, so *pzTail
6530: 20 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e   is left pointin
6540: 67 20 74 6f 20 77 68 61 74 20 72 65 6d 61 69 6e  g to what remain
6550: 73 20 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2a  s uncompiled..**
6560: 0a 2a 2a 20 2a 70 70 53 74 6d 74 20 69 73 20 6c  .** *ppStmt is l
6570: 65 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20  eft pointing to 
6580: 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73  a compiled SQL s
6590: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
65a0: 6e 20 62 65 0a 2a 2a 20 65 78 65 63 75 74 65 64  n be.** executed
65b0: 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 73   using sqlite3_s
65c0: 74 65 70 28 29 2e 20 20 4f 72 20 69 66 20 74 68  tep().  Or if th
65d0: 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2c  ere is an error,
65e0: 20 2a 70 70 53 74 6d 74 20 6d 61 79 20 62 65 0a   *ppStmt may be.
65f0: 2a 2a 20 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 20  ** set to NULL. 
6600: 20 49 66 20 74 68 65 20 69 6e 70 75 74 20 74 65   If the input te
6610: 78 74 20 63 6f 6e 74 61 69 6e 65 64 20 6e 6f 20  xt contained no 
6620: 53 51 4c 20 28 69 66 20 74 68 65 20 69 6e 70 75  SQL (if the inpu
6630: 74 20 69 73 20 61 6e 64 0a 2a 2a 20 65 6d 70 74  t is and.** empt
6640: 79 20 73 74 72 69 6e 67 20 6f 72 20 61 20 63 6f  y string or a co
6650: 6d 6d 65 6e 74 29 20 74 68 65 6e 20 2a 70 70 53  mment) then *ppS
6660: 74 6d 74 20 69 73 20 73 65 74 20 74 6f 20 4e 55  tmt is set to NU
6670: 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 4f 6e 20 73 75 63  LL..**.** On suc
6680: 63 65 73 73 2c 20 53 51 4c 49 54 45 5f 4f 4b 20  cess, SQLITE_OK 
6690: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 74  is returned.  Ot
66a0: 68 65 72 77 69 73 65 20 61 6e 20 65 72 72 6f 72  herwise an error
66b0: 20 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65   code is returne
66c0: 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  d..*/.int sqlite
66d0: 33 5f 70 72 65 70 61 72 65 28 0a 20 20 73 71 6c  3_prepare(.  sql
66e0: 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
66f0: 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
6700: 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
6710: 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20  st char *zSql,  
6720: 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
6730: 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63  ement, UTF-8 enc
6740: 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42  oded */.  int nB
6750: 79 74 65 73 2c 20 20 20 20 20 20 20 20 20 20 20  ytes,           
6760: 20 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66 20 7a    /* Length of z
6770: 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f  Sql in bytes. */
6780: 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  .  sqlite3_stmt 
6790: 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55  **ppStmt,  /* OU
67a0: 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e  T: Statement han
67b0: 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  dle */.  const c
67c0: 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20  har **pzTail    
67d0: 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72   /* OUT: Pointer
67e0: 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69   to unused porti
67f0: 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b  on of zSql */.);
6800: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65  .int sqlite3_pre
6810: 70 61 72 65 31 36 28 0a 20 20 73 71 6c 69 74 65  pare16(.  sqlite
6820: 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20  3 *db,          
6830: 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61    /* Database ha
6840: 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
6850: 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20  void *zSql,     
6860: 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65    /* SQL stateme
6870: 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64  nt, UTF-16 encod
6880: 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74  ed */.  int nByt
6890: 65 73 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  es,             
68a0: 2f 2a 20 4c 65 6e 67 74 68 20 6f 66 20 7a 53 71  /* Length of zSq
68b0: 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20  l in bytes. */. 
68c0: 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
68d0: 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a  ppStmt,  /* OUT:
68e0: 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   Statement handl
68f0: 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69  e */.  const voi
6900: 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f  d **pzTail     /
6910: 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74  * OUT: Pointer t
6920: 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e  o unused portion
6930: 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a   of zSql */.);..
6940: 2f 2a 0a 2a 2a 20 50 6f 69 6e 74 65 72 73 20 74  /*.** Pointers t
6950: 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  o the following 
6960: 74 77 6f 20 6f 70 61 71 75 65 20 73 74 72 75 63  two opaque struc
6970: 74 75 72 65 73 20 61 72 65 20 75 73 65 64 20 74  tures are used t
6980: 6f 20 63 6f 6d 6d 75 6e 69 63 61 74 65 0a 2a 2a  o communicate.**
6990: 20 77 69 74 68 20 74 68 65 20 69 6d 70 6c 65 6d   with the implem
69a0: 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 75 73 65  entations of use
69b0: 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  r-defined functi
69c0: 6f 6e 73 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ons..*/.typedef 
69d0: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 63  struct sqlite3_c
69e0: 6f 6e 74 65 78 74 20 73 71 6c 69 74 65 33 5f 63  ontext sqlite3_c
69f0: 6f 6e 74 65 78 74 3b 0a 74 79 70 65 64 65 66 20  ontext;.typedef 
6a00: 73 74 72 75 63 74 20 4d 65 6d 20 73 71 6c 69 74  struct Mem sqlit
6a10: 65 33 5f 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a 2a  e3_value;../*.**
6a20: 20 49 6e 20 74 68 65 20 53 51 4c 20 73 74 72 69   In the SQL stri
6a30: 6e 67 73 20 69 6e 70 75 74 20 74 6f 20 73 71 6c  ngs input to sql
6a40: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 61  ite3_prepare() a
6a50: 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nd sqlite3_prepa
6a60: 72 65 31 36 28 29 2c 0a 2a 2a 20 6f 6e 65 20 6f  re16(),.** one o
6a70: 72 20 6d 6f 72 65 20 6c 69 74 65 72 61 6c 73 20  r more literals 
6a80: 63 61 6e 20 62 65 20 72 65 70 6c 61 63 65 20 62  can be replace b
6a90: 79 20 70 61 72 61 6d 65 74 65 72 73 20 22 3f 22  y parameters "?"
6aa0: 20 6f 72 20 22 3a 41 41 41 22 20 6f 72 0a 2a 2a   or ":AAA" or.**
6ab0: 20 22 24 56 56 56 22 20 77 68 65 72 65 20 41 41   "$VVV" where AA
6ac0: 41 20 69 73 20 61 6e 20 69 64 65 6e 74 69 66 65  A is an identife
6ad0: 72 20 61 6e 64 20 56 56 56 20 69 73 20 61 20 76  r and VVV is a v
6ae0: 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 61 63 63  ariable name acc
6af0: 6f 72 64 69 6e 67 0a 2a 2a 20 74 6f 20 74 68 65  ording.** to the
6b00: 20 73 79 6e 74 61 78 20 72 75 6c 65 73 20 6f 66   syntax rules of
6b10: 20 74 68 65 20 54 43 4c 20 70 72 6f 67 72 61 6d   the TCL program
6b20: 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 2e 0a 2a  ming language..*
6b30: 2a 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  * The value of t
6b40: 68 65 73 65 20 70 61 72 61 6d 65 74 65 72 73 20  hese parameters 
6b50: 28 61 6c 73 6f 20 63 61 6c 6c 65 64 20 22 68 6f  (also called "ho
6b60: 73 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d  st parameter nam
6b70: 65 73 22 29 20 63 61 6e 0a 2a 2a 20 62 65 20 73  es") can.** be s
6b80: 65 74 20 75 73 69 6e 67 20 74 68 65 20 72 6f 75  et using the rou
6b90: 74 69 6e 65 73 20 6c 69 73 74 65 64 20 62 65 6c  tines listed bel
6ba0: 6f 77 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 65 76 65  ow..**.** In eve
6bb0: 72 79 20 63 61 73 65 2c 20 74 68 65 20 66 69 72  ry case, the fir
6bc0: 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  st parameter is 
6bd0: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
6be0: 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
6bf0: 20 73 74 72 75 63 74 75 72 65 20 72 65 74 75 72   structure retur
6c00: 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
6c10: 5f 70 72 65 70 61 72 65 28 29 2e 20 20 54 68 65  _prepare().  The
6c20: 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
6c30: 72 20 69 73 20 74 68 65 0a 2a 2a 20 69 6e 64 65  r is the.** inde
6c40: 78 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74  x of the paramet
6c50: 65 72 2e 20 20 54 68 65 20 66 69 72 73 74 20 70  er.  The first p
6c60: 61 72 61 6d 65 74 65 72 20 61 73 20 61 6e 20 69  arameter as an i
6c70: 6e 64 65 78 20 6f 66 20 31 2e 20 20 46 6f 72 0a  ndex of 1.  For.
6c80: 2a 2a 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74  ** named paramet
6c90: 65 72 73 20 28 22 3a 41 41 41 22 20 6f 72 20 22  ers (":AAA" or "
6ca0: 24 56 56 56 22 29 20 79 6f 75 20 63 61 6e 20 75  $VVV") you can u
6cb0: 73 65 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 62  se .** sqlite3_b
6cc0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
6cd0: 64 65 78 28 29 20 74 6f 20 67 65 74 20 74 68 65  dex() to get the
6ce0: 20 63 6f 72 72 65 63 74 20 69 6e 64 65 78 20 76   correct index v
6cf0: 61 6c 75 65 20 67 69 76 65 6e 0a 2a 2a 20 74 68  alue given.** th
6d00: 65 20 70 61 72 61 6d 65 74 65 72 73 20 6e 61 6d  e parameters nam
6d10: 65 2e 20 20 49 66 20 74 68 65 20 73 61 6d 65 20  e.  If the same 
6d20: 6e 61 6d 65 64 20 70 61 72 61 6d 65 74 65 72 20  named parameter 
6d30: 6f 63 63 75 72 73 20 6d 6f 72 65 20 74 68 61 6e  occurs more than
6d40: 0a 2a 2a 20 6f 6e 63 65 2c 20 69 74 20 69 73 20  .** once, it is 
6d50: 61 73 73 69 67 6e 65 64 20 74 68 65 20 73 61 6d  assigned the sam
6d60: 65 20 69 6e 64 65 78 20 65 61 63 68 20 74 69 6d  e index each tim
6d70: 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 66  e..**.** The fif
6d80: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
6d90: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
6da0: 62 28 29 2c 20 73 71 6c 69 74 65 33 5f 62 69 6e  b(), sqlite3_bin
6db0: 64 5f 74 65 78 74 28 29 2c 20 61 6e 64 0a 2a 2a  d_text(), and.**
6dc0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
6dd0: 78 74 31 36 28 29 20 69 73 20 61 20 64 65 73 74  xt16() is a dest
6de0: 72 75 63 74 6f 72 20 75 73 65 64 20 74 6f 20 64  ructor used to d
6df0: 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20 42 4c  ispose of the BL
6e00: 4f 42 20 6f 72 0a 2a 2a 20 74 65 78 74 20 61 66  OB or.** text af
6e10: 74 65 72 20 53 51 4c 69 74 65 20 68 61 73 20 66  ter SQLite has f
6e20: 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2e  inished with it.
6e30: 20 20 49 66 20 74 68 65 20 66 69 66 74 68 20 61    If the fifth a
6e40: 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a  rgument is the.*
6e50: 2a 20 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20  * special value 
6e60: 53 51 4c 49 54 45 5f 53 54 41 54 49 43 2c 20 74  SQLITE_STATIC, t
6e70: 68 65 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20  hen the library 
6e80: 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65  assumes that the
6e90: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20   information.** 
6ea0: 69 73 20 69 6e 20 73 74 61 74 69 63 2c 20 75 6e  is in static, un
6eb0: 6d 61 6e 61 67 65 64 20 73 70 61 63 65 20 61 6e  managed space an
6ec0: 64 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20  d does not need 
6ed0: 74 6f 20 62 65 20 66 72 65 65 64 2e 20 20 49 66  to be freed.  If
6ee0: 20 74 68 65 0a 2a 2a 20 66 69 66 74 68 20 61 72   the.** fifth ar
6ef0: 67 75 6d 65 6e 74 20 68 61 73 20 74 68 65 20 76  gument has the v
6f00: 61 6c 75 65 20 53 51 4c 49 54 45 5f 54 52 41 4e  alue SQLITE_TRAN
6f10: 53 49 45 4e 54 2c 20 74 68 65 6e 20 53 51 4c 69  SIENT, then SQLi
6f20: 74 65 20 6d 61 6b 65 73 20 69 74 73 0a 2a 2a 20  te makes its.** 
6f30: 6f 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79  own private copy
6f40: 20 6f 66 20 74 68 65 20 64 61 74 61 2e 0a 2a 2a   of the data..**
6f50: 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
6f60: 62 69 6e 64 5f 2a 20 72 6f 75 74 69 6e 65 20 6d  bind_* routine m
6f70: 75 73 74 20 62 65 20 63 61 6c 6c 65 64 20 62 65  ust be called be
6f80: 66 6f 72 65 20 73 71 6c 69 74 65 33 5f 73 74 65  fore sqlite3_ste
6f90: 70 28 29 20 61 66 74 65 72 0a 2a 2a 20 61 6e 20  p() after.** an 
6fa0: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
6fb0: 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 73  ) or sqlite3_res
6fc0: 65 74 28 29 2e 20 20 55 6e 62 6f 75 6e 64 20 70  et().  Unbound p
6fd0: 61 72 61 6d 65 74 65 72 73 73 20 61 72 65 0a 2a  arameterss are.*
6fe0: 2a 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  * interpreted as
6ff0: 20 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e 74 20 73 71   NULL..*/.int sq
7000: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
7010: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
7020: 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  nt, const void*,
7030: 20 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 29 28   int n, void(*)(
7040: 76 6f 69 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c  void*));.int sql
7050: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
7060: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
7070: 69 6e 74 2c 20 64 6f 75 62 6c 65 29 3b 0a 69 6e  int, double);.in
7080: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  t sqlite3_bind_i
7090: 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  nt(sqlite3_stmt*
70a0: 2c 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e 74  , int, int);.int
70b0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
70c0: 74 36 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  t64(sqlite3_stmt
70d0: 2a 2c 20 69 6e 74 2c 20 73 71 6c 69 74 65 5f 69  *, int, sqlite_i
70e0: 6e 74 36 34 29 3b 0a 69 6e 74 20 73 71 6c 69 74  nt64);.int sqlit
70f0: 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73 71 6c  e3_bind_null(sql
7100: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29  ite3_stmt*, int)
7110: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  ;.int sqlite3_bi
7120: 6e 64 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f  nd_text(sqlite3_
7130: 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73  stmt*, int, cons
7140: 74 20 63 68 61 72 2a 2c 20 69 6e 74 20 6e 2c 20  t char*, int n, 
7150: 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b  void(*)(void*));
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 31 36 28 73 71 6c 69 74 65 33  d_text16(sqlite3
7180: 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e  _stmt*, int, con
7190: 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 20 76  st void*, int, 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 76 61 6c 75 65 28 73 71 6c 69 74 65 33 5f 73  _value(sqlite3_s
71d0: 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74  tmt*, int, const
71e0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29   sqlite3_value*)
71f0: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  ;../*.** Return 
7200: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61  the number of pa
7210: 72 61 6d 65 74 65 72 73 20 69 6e 20 61 20 63 6f  rameters in a co
7220: 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65  mpiled SQL state
7230: 6d 65 6e 74 2e 20 20 54 68 69 73 0a 2a 2a 20 72  ment.  This.** r
7240: 6f 75 74 69 6e 65 20 77 61 73 20 61 64 64 65 64  outine was added
7250: 20 74 6f 20 73 75 70 70 6f 72 74 20 44 42 44 3a   to support DBD:
7260: 3a 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20  :SQLite..*/.int 
7270: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
7280: 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 73 71 6c  ameter_count(sql
7290: 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a  ite3_stmt*);../*
72a0: 0a 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e  .** Return the n
72b0: 61 6d 65 20 6f 66 20 74 68 65 20 69 2d 74 68 20  ame of the i-th 
72c0: 70 61 72 61 6d 65 74 65 72 2e 20 20 4f 72 64 69  parameter.  Ordi
72d0: 6e 61 72 79 20 70 61 72 61 6d 65 74 65 72 73 20  nary parameters 
72e0: 22 3f 22 20 61 72 65 0a 2a 2a 20 6e 61 6d 65 6c  "?" are.** namel
72f0: 65 73 73 20 61 6e 64 20 61 20 4e 55 4c 4c 20 69  ess and a NULL i
7300: 73 20 72 65 74 75 72 6e 65 64 2e 20 20 46 6f 72  s returned.  For
7310: 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74   parameters of t
7320: 68 65 20 66 6f 72 6d 20 3a 41 41 41 20 6f 72 0a  he form :AAA or.
7330: 2a 2a 20 24 56 56 56 20 74 68 65 20 63 6f 6d 70  ** $VVV the comp
7340: 6c 65 74 65 20 74 65 78 74 20 6f 66 20 74 68 65  lete text of the
7350: 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 20   parameter name 
7360: 69 73 20 72 65 74 75 72 6e 65 64 2c 20 69 6e 63  is returned, inc
7370: 6c 75 64 69 6e 67 0a 2a 2a 20 74 68 65 20 69 6e  luding.** the in
7380: 69 74 69 61 6c 20 22 3a 22 20 6f 72 20 22 24 22  itial ":" or "$"
7390: 2e 20 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72  .  NULL is retur
73a0: 6e 65 64 20 69 66 20 74 68 65 20 69 6e 64 65 78  ned if the index
73b0: 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65   is out of range
73c0: 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20  ..*/.const char 
73d0: 2a 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61  *sqlite3_bind_pa
73e0: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73 71 6c  rameter_name(sql
73f0: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29  ite3_stmt*, int)
7400: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  ;../*.** Return 
7410: 74 68 65 20 69 6e 64 65 78 20 6f 66 20 61 20 70  the index of a p
7420: 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68  arameter with th
7430: 65 20 67 69 76 65 6e 20 6e 61 6d 65 2e 20 20 54  e given name.  T
7440: 68 65 20 6e 61 6d 65 0a 2a 2a 20 6d 75 73 74 20  he name.** must 
7450: 6d 61 74 63 68 20 65 78 61 63 74 6c 79 2e 20 20  match exactly.  
7460: 49 66 20 6e 6f 20 70 61 72 61 6d 65 74 65 72 20  If no parameter 
7470: 77 69 74 68 20 74 68 65 20 67 69 76 65 6e 20 6e  with the given n
7480: 61 6d 65 20 69 73 20 66 6f 75 6e 64 2c 0a 2a 2a  ame is found,.**
7490: 20 72 65 74 75 72 6e 20 30 2e 0a 2a 2f 0a 69 6e   return 0..*/.in
74a0: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  t sqlite3_bind_p
74b0: 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 73  arameter_index(s
74c0: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 63 6f  qlite3_stmt*, co
74d0: 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29  nst char *zName)
74e0: 3b 0a 0a 2f 2a 0a 2a 2a 20 53 65 74 20 61 6c 6c  ;../*.** Set all
74f0: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20   the parameters 
7500: 69 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20  in the compiled 
7510: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f  SQL statement to
7520: 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a   NULL..**.******
7530: 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45 58 50  * THIS IS AN EXP
7540: 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41 4e  ERIMENTAL API AN
7550: 44 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f 20  D IS SUBJECT TO 
7560: 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a 2f  CHANGE ******.*/
7570: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c 65  .int sqlite3_cle
7580: 61 72 5f 62 69 6e 64 69 6e 67 73 28 73 71 6c 69  ar_bindings(sqli
7590: 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
75a0: 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75  ** Return the nu
75b0: 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
75c0: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  in the result se
75d0: 74 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  t returned by th
75e0: 65 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51  e compiled.** SQ
75f0: 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 69  L statement. Thi
7600: 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
7610: 73 20 30 20 69 66 20 70 53 74 6d 74 20 69 73 20  s 0 if pStmt is 
7620: 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  an SQL statement
7630: 0a 2a 2a 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  .** that does no
7640: 74 20 72 65 74 75 72 6e 20 64 61 74 61 20 28 66  t return data (f
7650: 6f 72 20 65 78 61 6d 70 6c 65 20 61 6e 20 55 50  or example an UP
7660: 44 41 54 45 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71  DATE)..*/.int sq
7670: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
7680: 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  nt(sqlite3_stmt 
7690: 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  *pStmt);../*.** 
76a0: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  The first parame
76b0: 74 65 72 20 69 73 20 61 20 63 6f 6d 70 69 6c 65  ter is a compile
76c0: 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  d SQL statement.
76d0: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72   This function r
76e0: 65 74 75 72 6e 73 0a 2a 2a 20 74 68 65 20 63 6f  eturns.** the co
76f0: 6c 75 6d 6e 20 68 65 61 64 69 6e 67 20 66 6f 72  lumn heading for
7700: 20 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20   the Nth column 
7710: 6f 66 20 74 68 61 74 20 73 74 61 74 65 6d 65 6e  of that statemen
7720: 74 2c 20 77 68 65 72 65 20 4e 20 69 73 20 74 68  t, where N is th
7730: 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 66 75 6e 63  e.** second func
7740: 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 2e 20  tion parameter. 
7750: 20 54 68 65 20 73 74 72 69 6e 67 20 72 65 74 75   The string retu
7760: 72 6e 65 64 20 69 73 20 55 54 46 2d 38 20 66 6f  rned is UTF-8 fo
7770: 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c  r.** sqlite3_col
7780: 75 6d 6e 5f 6e 61 6d 65 28 29 20 61 6e 64 20 55  umn_name() and U
7790: 54 46 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65  TF-16 for sqlite
77a0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28  3_column_name16(
77b0: 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72  )..*/.const char
77c0: 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   *sqlite3_column
77d0: 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74  _name(sqlite3_st
77e0: 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20  mt*,int);.const 
77f0: 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f  void *sqlite3_co
7800: 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 73 71 6c 69  lumn_name16(sqli
7810: 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a  te3_stmt*,int);.
7820: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ./*.** The first
7830: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
7840: 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61  compiled SQL sta
7850: 74 65 6d 65 6e 74 2e 20 49 66 20 74 68 69 73 20  tement. If this 
7860: 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69 73 20  statement.** is 
7870: 61 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  a SELECT stateme
7880: 6e 74 2c 20 74 68 65 20 4e 74 68 20 63 6f 6c 75  nt, the Nth colu
7890: 6d 6e 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e  mn of the return
78a0: 65 64 20 72 65 73 75 6c 74 20 73 65 74 20 0a 2a  ed result set .*
78b0: 2a 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20  * of the SELECT 
78c0: 69 73 20 61 20 74 61 62 6c 65 20 63 6f 6c 75 6d  is a table colum
78d0: 6e 20 74 68 65 6e 20 74 68 65 20 64 65 63 6c 61  n then the decla
78e0: 72 65 64 20 74 79 70 65 20 6f 66 20 74 68 65 20  red type of the 
78f0: 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 20  table.** column 
7900: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49 66 20  is returned. If 
7910: 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f  the Nth column o
7920: 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
7930: 20 69 73 20 6e 6f 74 20 61 74 20 74 61 62 6c 65   is not at table
7940: 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e  .** column, then
7950: 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
7960: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68 65  is returned. The
7970: 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67   returned string
7980: 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20 55 54   is always.** UT
7990: 46 2d 38 20 65 6e 63 6f 64 65 64 2e 20 46 6f 72  F-8 encoded. For
79a0: 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65   example, in the
79b0: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
79c0: 3a 0a 2a 2a 0a 2a 2a 20 43 52 45 41 54 45 20 54  :.**.** CREATE T
79d0: 41 42 4c 45 20 74 31 28 63 31 20 56 41 52 49 41  ABLE t1(c1 VARIA
79e0: 4e 54 29 3b 0a 2a 2a 0a 2a 2a 20 41 6e 64 20 74  NT);.**.** And t
79f0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 61  he following sta
7a00: 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65 64 3a  tement compiled:
7a10: 0a 2a 2a 0a 2a 2a 20 53 45 4c 45 43 54 20 63 31  .**.** SELECT c1
7a20: 20 2b 20 31 2c 20 30 20 46 52 4f 4d 20 74 31 3b   + 1, 0 FROM t1;
7a30: 0a 2a 2a 0a 2a 2a 20 54 68 65 6e 20 74 68 69 73  .**.** Then this
7a40: 20 72 6f 75 74 69 6e 65 20 77 6f 75 6c 64 20 72   routine would r
7a50: 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67  eturn the string
7a60: 20 22 56 41 52 49 41 4e 54 22 20 66 6f 72 20 74   "VARIANT" for t
7a70: 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 72 65 73  he second.** res
7a80: 75 6c 74 20 63 6f 6c 75 6d 6e 20 28 69 3d 3d 31  ult column (i==1
7a90: 29 2c 20 61 6e 64 20 61 20 4e 55 4c 4c 20 70 6f  ), and a NULL po
7aa0: 69 6e 74 65 72 20 66 6f 72 20 74 68 65 20 66 69  inter for the fi
7ab0: 72 73 74 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d  rst result colum
7ac0: 6e 0a 2a 2a 20 28 69 3d 3d 30 29 2e 0a 2a 2f 0a  n.** (i==0)..*/.
7ad0: 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69  const char *sqli
7ae0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
7af0: 79 70 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ype(sqlite3_stmt
7b00: 20 2a 2c 20 69 6e 74 20 69 29 3b 0a 0a 2f 2a 0a   *, int i);../*.
7b10: 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 61 72  ** The first par
7b20: 61 6d 65 74 65 72 20 69 73 20 61 20 63 6f 6d 70  ameter is a comp
7b30: 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65  iled SQL stateme
7b40: 6e 74 2e 20 49 66 20 74 68 69 73 20 73 74 61 74  nt. If this stat
7b50: 65 6d 65 6e 74 0a 2a 2a 20 69 73 20 61 20 53 45  ement.** is a SE
7b60: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2c 20  LECT statement, 
7b70: 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f  the Nth column o
7b80: 66 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 72  f the returned r
7b90: 65 73 75 6c 74 20 73 65 74 20 0a 2a 2a 20 6f 66  esult set .** of
7ba0: 20 74 68 65 20 53 45 4c 45 43 54 20 69 73 20 61   the SELECT is a
7bb0: 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 68   table column th
7bc0: 65 6e 20 74 68 65 20 64 65 63 6c 61 72 65 64 20  en the declared 
7bd0: 74 79 70 65 20 6f 66 20 74 68 65 20 74 61 62 6c  type of the tabl
7be0: 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 69 73 20 72  e.** column is r
7bf0: 65 74 75 72 6e 65 64 2e 20 49 66 20 74 68 65 20  eturned. If the 
7c00: 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68  Nth column of th
7c10: 65 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20  e result set is 
7c20: 6e 6f 74 20 61 74 20 74 61 62 6c 65 0a 2a 2a 20  not at table.** 
7c30: 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 61 20 4e  column, then a N
7c40: 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 73 20 72  ULL pointer is r
7c50: 65 74 75 72 6e 65 64 2e 20 54 68 65 20 72 65 74  eturned. The ret
7c60: 75 72 6e 65 64 20 73 74 72 69 6e 67 20 69 73 20  urned string is 
7c70: 61 6c 77 61 79 73 0a 2a 2a 20 55 54 46 2d 31 36  always.** UTF-16
7c80: 20 65 6e 63 6f 64 65 64 2e 20 46 6f 72 20 65 78   encoded. For ex
7c90: 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65 20 64 61  ample, in the da
7ca0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 3a 0a 2a  tabase schema:.*
7cb0: 2a 0a 2a 2a 20 43 52 45 41 54 45 20 54 41 42 4c  *.** CREATE TABL
7cc0: 45 20 74 31 28 63 31 20 49 4e 54 45 47 45 52 29  E t1(c1 INTEGER)
7cd0: 3b 0a 2a 2a 0a 2a 2a 20 41 6e 64 20 74 68 65 20  ;.**.** And the 
7ce0: 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 61 74 65 6d  following statem
7cf0: 65 6e 74 20 63 6f 6d 70 69 6c 65 64 3a 0a 2a 2a  ent compiled:.**
7d00: 0a 2a 2a 20 53 45 4c 45 43 54 20 63 31 20 2b 20  .** SELECT c1 + 
7d10: 31 2c 20 30 20 46 52 4f 4d 20 74 31 3b 0a 2a 2a  1, 0 FROM t1;.**
7d20: 0a 2a 2a 20 54 68 65 6e 20 74 68 69 73 20 72 6f  .** Then this ro
7d30: 75 74 69 6e 65 20 77 6f 75 6c 64 20 72 65 74 75  utine would retu
7d40: 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20 22 49  rn the string "I
7d50: 4e 54 45 47 45 52 22 20 66 6f 72 20 74 68 65 20  NTEGER" for the 
7d60: 73 65 63 6f 6e 64 0a 2a 2a 20 72 65 73 75 6c 74  second.** result
7d70: 20 63 6f 6c 75 6d 6e 20 28 69 3d 3d 31 29 2c 20   column (i==1), 
7d80: 61 6e 64 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  and a NULL point
7d90: 65 72 20 66 6f 72 20 74 68 65 20 66 69 72 73 74  er for the first
7da0: 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 0a 2a   result column.*
7db0: 2a 20 28 69 3d 3d 30 29 2e 0a 2a 2f 0a 63 6f 6e  * (i==0)..*/.con
7dc0: 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  st void *sqlite3
7dd0: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
7de0: 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  16(sqlite3_stmt*
7df0: 2c 69 6e 74 29 3b 0a 0a 2f 2a 20 0a 2a 2a 20 41  ,int);../* .** A
7e00: 66 74 65 72 20 61 6e 20 53 51 4c 20 71 75 65 72  fter an SQL quer
7e10: 79 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69  y has been compi
7e20: 6c 65 64 20 77 69 74 68 20 61 20 63 61 6c 6c 20  led with a call 
7e30: 74 6f 20 65 69 74 68 65 72 0a 2a 2a 20 73 71 6c  to either.** sql
7e40: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 6f  ite3_prepare() o
7e50: 72 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  r sqlite3_prepar
7e60: 65 31 36 28 29 2c 20 74 68 65 6e 20 74 68 69 73  e16(), then this
7e70: 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62   function must b
7e80: 65 0a 2a 2a 20 63 61 6c 6c 65 64 20 6f 6e 65 20  e.** called one 
7e90: 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 20 74 6f  or more times to
7ea0: 20 65 78 65 63 75 74 65 20 74 68 65 20 73 74 61   execute the sta
7eb0: 74 65 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68  tement..**.** Th
7ec0: 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 77  e return value w
7ed0: 69 6c 6c 20 62 65 20 65 69 74 68 65 72 20 53 51  ill be either SQ
7ee0: 4c 49 54 45 5f 42 55 53 59 2c 20 53 51 4c 49 54  LITE_BUSY, SQLIT
7ef0: 45 5f 44 4f 4e 45 2c 20 0a 2a 2a 20 53 51 4c 49  E_DONE, .** SQLI
7f00: 54 45 5f 52 4f 57 2c 20 53 51 4c 49 54 45 5f 45  TE_ROW, SQLITE_E
7f10: 52 52 4f 52 2c 20 6f 72 20 53 51 4c 49 54 45 5f  RROR, or SQLITE_
7f20: 4d 49 53 55 53 45 2e 0a 2a 2a 0a 2a 2a 20 53 51  MISUSE..**.** SQ
7f30: 4c 49 54 45 5f 42 55 53 59 20 6d 65 61 6e 73 20  LITE_BUSY means 
7f40: 74 68 61 74 20 74 68 65 20 64 61 74 61 62 61 73  that the databas
7f50: 65 20 65 6e 67 69 6e 65 20 61 74 74 65 6d 70 74  e engine attempt
7f60: 65 64 20 74 6f 20 6f 70 65 6e 0a 2a 2a 20 61 20  ed to open.** a 
7f70: 6c 6f 63 6b 65 64 20 64 61 74 61 62 61 73 65 20  locked database 
7f80: 61 6e 64 20 74 68 65 72 65 20 69 73 20 6e 6f 20  and there is no 
7f90: 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 72 65  busy callback re
7fa0: 67 69 73 74 65 72 65 64 2e 0a 2a 2a 20 43 61 6c  gistered..** Cal
7fb0: 6c 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  l sqlite3_step()
7fc0: 20 61 67 61 69 6e 20 74 6f 20 72 65 74 72 79 20   again to retry 
7fd0: 74 68 65 20 6f 70 65 6e 2e 0a 2a 2a 0a 2a 2a 20  the open..**.** 
7fe0: 53 51 4c 49 54 45 5f 44 4f 4e 45 20 6d 65 61 6e  SQLITE_DONE mean
7ff0: 73 20 74 68 61 74 20 74 68 65 20 73 74 61 74 65  s that the state
8000: 6d 65 6e 74 20 68 61 73 20 66 69 6e 69 73 68 65  ment has finishe
8010: 64 20 65 78 65 63 75 74 69 6e 67 0a 2a 2a 20 73  d executing.** s
8020: 75 63 63 65 73 73 66 75 6c 6c 79 2e 20 20 73 71  uccessfully.  sq
8030: 6c 69 74 65 33 5f 73 74 65 70 28 29 20 73 68 6f  lite3_step() sho
8040: 75 6c 64 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65  uld not be calle
8050: 64 20 61 67 61 69 6e 20 6f 6e 20 74 68 69 73 20  d again on this 
8060: 76 69 72 74 75 61 6c 0a 2a 2a 20 6d 61 63 68 69  virtual.** machi
8070: 6e 65 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65  ne..**.** If the
8080: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 62   SQL statement b
8090: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 72 65  eing executed re
80a0: 74 75 72 6e 73 20 61 6e 79 20 64 61 74 61 2c 20  turns any data, 
80b0: 74 68 65 6e 20 0a 2a 2a 20 53 51 4c 49 54 45 5f  then .** SQLITE_
80c0: 52 4f 57 20 69 73 20 72 65 74 75 72 6e 65 64 20  ROW is returned 
80d0: 65 61 63 68 20 74 69 6d 65 20 61 20 6e 65 77 20  each time a new 
80e0: 72 6f 77 20 6f 66 20 64 61 74 61 20 69 73 20 72  row of data is r
80f0: 65 61 64 79 0a 2a 2a 20 66 6f 72 20 70 72 6f 63  eady.** for proc
8100: 65 73 73 69 6e 67 20 62 79 20 74 68 65 20 63 61  essing by the ca
8110: 6c 6c 65 72 2e 20 54 68 65 20 76 61 6c 75 65 73  ller. The values
8120: 20 6d 61 79 20 62 65 20 61 63 63 65 73 73 65 64   may be accessed
8130: 20 75 73 69 6e 67 0a 2a 2a 20 74 68 65 20 73 71   using.** the sq
8140: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 2a 28 29  lite3_column_*()
8150: 20 66 75 6e 63 74 69 6f 6e 73 20 64 65 73 63 72   functions descr
8160: 69 62 65 64 20 62 65 6c 6f 77 2e 20 73 71 6c 69  ibed below. sqli
8170: 74 65 33 5f 73 74 65 70 28 29 0a 2a 2a 20 69 73  te3_step().** is
8180: 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 74 6f   called again to
8190: 20 72 65 74 72 69 65 76 65 20 74 68 65 20 6e 65   retrieve the ne
81a0: 78 74 20 72 6f 77 20 6f 66 20 64 61 74 61 2e 0a  xt row of data..
81b0: 2a 2a 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 45 52  ** .** SQLITE_ER
81c0: 52 4f 52 20 6d 65 61 6e 73 20 74 68 61 74 20 61  ROR means that a
81d0: 20 72 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 20   run-time error 
81e0: 28 73 75 63 68 20 61 73 20 61 20 63 6f 6e 73 74  (such as a const
81f0: 72 61 69 6e 74 0a 2a 2a 20 76 69 6f 6c 61 74 69  raint.** violati
8200: 6f 6e 29 20 68 61 73 20 6f 63 63 75 72 72 65 64  on) has occurred
8210: 2e 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  .  sqlite3_step(
8220: 29 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20  ) should not be 
8230: 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 6f 6e 0a  called again on.
8240: 2a 2a 20 74 68 65 20 56 4d 2e 20 4d 6f 72 65 20  ** the VM. More 
8250: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 79 20  information may 
8260: 62 65 20 66 6f 75 6e 64 20 62 79 20 63 61 6c 6c  be found by call
8270: 69 6e 67 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  ing sqlite3_errm
8280: 73 67 28 29 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 49  sg()..**.** SQLI
8290: 54 45 5f 4d 49 53 55 53 45 20 6d 65 61 6e 73 20  TE_MISUSE means 
82a0: 74 68 61 74 20 74 68 65 20 74 68 69 73 20 72 6f  that the this ro
82b0: 75 74 69 6e 65 20 77 61 73 20 63 61 6c 6c 65 64  utine was called
82c0: 20 69 6e 61 70 70 72 6f 70 72 69 61 74 65 6c 79   inappropriately
82d0: 2e 0a 2a 2a 20 50 65 72 68 61 70 73 20 69 74 20  ..** Perhaps it 
82e0: 77 61 73 20 63 61 6c 6c 65 64 20 6f 6e 20 61 20  was called on a 
82f0: 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20  virtual machine 
8300: 74 68 61 74 20 68 61 64 20 61 6c 72 65 61 64 79  that had already
8310: 20 62 65 65 6e 0a 2a 2a 20 66 69 6e 61 6c 69 7a   been.** finaliz
8320: 65 64 20 6f 72 20 6f 6e 20 6f 6e 65 20 74 68 61  ed or on one tha
8330: 74 20 68 61 64 20 70 72 65 76 69 6f 75 73 6c 79  t had previously
8340: 20 72 65 74 75 72 6e 65 64 20 53 51 4c 49 54 45   returned SQLITE
8350: 5f 45 52 52 4f 52 20 6f 72 0a 2a 2a 20 53 51 4c  _ERROR or.** SQL
8360: 49 54 45 5f 44 4f 4e 45 2e 20 20 4f 72 20 69 74  ITE_DONE.  Or it
8370: 20 63 6f 75 6c 64 20 62 65 20 74 68 65 20 63 61   could be the ca
8380: 73 65 20 74 68 65 20 74 68 65 20 73 61 6d 65 20  se the the same 
8390: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
83a0: 69 6f 6e 0a 2a 2a 20 69 73 20 62 65 69 6e 67 20  ion.** is being 
83b0: 75 73 65 64 20 73 69 6d 75 6c 61 74 61 6e 65 6f  used simulataneo
83c0: 75 73 6c 79 20 62 79 20 74 77 6f 20 6f 72 20 6d  usly by two or m
83d0: 6f 72 65 20 74 68 72 65 61 64 73 2e 0a 2a 2f 0a  ore threads..*/.
83e0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 65 70  int sqlite3_step
83f0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b  (sqlite3_stmt*);
8400: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
8410: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c  he number of val
8420: 75 65 73 20 69 6e 20 74 68 65 20 63 75 72 72 65  ues in the curre
8430: 6e 74 20 72 6f 77 20 6f 66 20 74 68 65 20 72 65  nt row of the re
8440: 73 75 6c 74 20 73 65 74 2e 0a 2a 2a 0a 2a 2a 20  sult set..**.** 
8450: 41 66 74 65 72 20 61 20 63 61 6c 6c 20 74 6f 20  After a call to 
8460: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 74  sqlite3_step() t
8470: 68 61 74 20 72 65 74 75 72 6e 73 20 53 51 4c 49  hat returns SQLI
8480: 54 45 5f 52 4f 57 2c 20 74 68 69 73 20 72 6f 75  TE_ROW, this rou
8490: 74 69 6e 65 0a 2a 2a 20 77 69 6c 6c 20 72 65 74  tine.** will ret
84a0: 75 72 6e 20 74 68 65 20 73 61 6d 65 20 76 61 6c  urn the same val
84b0: 75 65 20 61 73 20 74 68 65 20 73 71 6c 69 74 65  ue as the sqlite
84c0: 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 29  3_column_count()
84d0: 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20 41 66   function..** Af
84e0: 74 65 72 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ter sqlite3_step
84f0: 28 29 20 68 61 73 20 72 65 74 75 72 6e 65 64 20  () has returned 
8500: 61 6e 20 53 51 4c 49 54 45 5f 44 4f 4e 45 2c 20  an SQLITE_DONE, 
8510: 53 51 4c 49 54 45 5f 42 55 53 59 20 6f 72 0a 2a  SQLITE_BUSY or.*
8520: 2a 20 65 72 72 6f 72 20 63 6f 64 65 2c 20 6f 72  * error code, or
8530: 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f   before sqlite3_
8540: 73 74 65 70 28 29 20 68 61 73 20 62 65 65 6e 20  step() has been 
8550: 63 61 6c 6c 65 64 20 6f 6e 20 61 20 0a 2a 2a 20  called on a .** 
8560: 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61  compiled SQL sta
8570: 74 65 6d 65 6e 74 2c 20 74 68 69 73 20 72 6f 75  tement, this rou
8580: 74 69 6e 65 20 72 65 74 75 72 6e 73 20 7a 65 72  tine returns zer
8590: 6f 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  o..*/.int sqlite
85a0: 33 5f 64 61 74 61 5f 63 6f 75 6e 74 28 73 71 6c  3_data_count(sql
85b0: 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74  ite3_stmt *pStmt
85c0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 56 61 6c 75 65 73  );../*.** Values
85d0: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
85e0: 68 65 20 64 61 74 61 62 61 73 65 20 69 6e 20 6f  he database in o
85f0: 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ne of the follow
8600: 69 6e 67 20 66 75 6e 64 61 6d 65 6e 74 61 6c 0a  ing fundamental.
8610: 2a 2a 20 74 79 70 65 73 2e 0a 2a 2f 0a 23 64 65  ** types..*/.#de
8620: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45  fine SQLITE_INTE
8630: 47 45 52 20 20 31 0a 23 64 65 66 69 6e 65 20 53  GER  1.#define S
8640: 51 4c 49 54 45 5f 46 4c 4f 41 54 20 20 20 20 32  QLITE_FLOAT    2
8650: 0a 2f 2a 20 23 64 65 66 69 6e 65 20 53 51 4c 49  ./* #define SQLI
8660: 54 45 5f 54 45 58 54 20 20 33 20 20 2f 2f 20 53  TE_TEXT  3  // S
8670: 65 65 20 62 65 6c 6f 77 20 2a 2f 0a 23 64 65 66  ee below */.#def
8680: 69 6e 65 20 53 51 4c 49 54 45 5f 42 4c 4f 42 20  ine SQLITE_BLOB 
8690: 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51      4.#define SQ
86a0: 4c 49 54 45 5f 4e 55 4c 4c 20 20 20 20 20 35 0a  LITE_NULL     5.
86b0: 0a 2f 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 76 65  ./*.** SQLite ve
86c0: 72 73 69 6f 6e 20 32 20 64 65 66 69 6e 65 73 20  rsion 2 defines 
86d0: 53 51 4c 49 54 45 5f 54 45 58 54 20 64 69 66 66  SQLITE_TEXT diff
86e0: 65 72 65 6e 74 6c 79 2e 20 20 54 6f 20 61 6c 6c  erently.  To all
86f0: 6f 77 20 62 6f 74 68 0a 2a 2a 20 76 65 72 73 69  ow both.** versi
8700: 6f 6e 20 32 20 61 6e 64 20 76 65 72 73 69 6f 6e  on 2 and version
8710: 20 33 20 74 6f 20 62 65 20 69 6e 63 6c 75 64 65   3 to be include
8720: 64 2c 20 75 6e 64 65 66 69 6e 65 20 74 68 65 6d  d, undefine them
8730: 20 62 6f 74 68 20 69 66 20 61 0a 2a 2a 20 63 6f   both if a.** co
8740: 6e 66 6c 69 63 74 20 69 73 20 73 65 65 6e 2e 20  nflict is seen. 
8750: 20 44 65 66 69 6e 65 20 53 51 4c 49 54 45 33 5f   Define SQLITE3_
8760: 54 45 58 54 20 74 6f 20 62 65 20 74 68 65 20 76  TEXT to be the v
8770: 65 72 73 69 6f 6e 20 33 20 76 61 6c 75 65 2e 0a  ersion 3 value..
8780: 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  */.#ifdef SQLITE
8790: 5f 54 45 58 54 0a 23 20 75 6e 64 65 66 20 53 51  _TEXT.# undef SQ
87a0: 4c 49 54 45 5f 54 45 58 54 0a 23 65 6c 73 65 0a  LITE_TEXT.#else.
87b0: 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  # define SQLITE_
87c0: 54 45 58 54 20 20 20 20 20 33 0a 23 65 6e 64 69  TEXT     3.#endi
87d0: 66 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  f.#define SQLITE
87e0: 33 5f 54 45 58 54 20 20 20 20 20 33 0a 0a 2f 2a  3_TEXT     3../*
87f0: 0a 2a 2a 20 54 68 65 20 6e 65 78 74 20 67 72 6f  .** The next gro
8800: 75 70 20 6f 66 20 72 6f 75 74 69 6e 65 73 20 72  up of routines r
8810: 65 74 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69  eturns informati
8820: 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 69 6e 66  on about the inf
8830: 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 69 6e 20 61  ormation.** in a
8840: 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 6f   single column o
8850: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65  f the current re
8860: 73 75 6c 74 20 72 6f 77 20 6f 66 20 61 20 71 75  sult row of a qu
8870: 65 72 79 2e 20 20 49 6e 20 65 76 65 72 79 0a 2a  ery.  In every.*
8880: 2a 20 63 61 73 65 20 74 68 65 20 66 69 72 73 74  * case the first
8890: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
88a0: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 53  pointer to the S
88b0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  QL statement tha
88c0: 74 20 69 73 20 62 65 69 6e 67 0a 2a 2a 20 65 78  t is being.** ex
88d0: 65 63 75 74 65 64 20 28 74 68 65 20 73 71 6c 69  ecuted (the sqli
88e0: 74 65 5f 73 74 6d 74 2a 20 74 68 61 74 20 77 61  te_stmt* that wa
88f0: 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  s returned from 
8900: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
8910: 29 29 20 61 6e 64 0a 2a 2a 20 74 68 65 20 73 65  )) and.** the se
8920: 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73  cond argument is
8930: 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68   the index of th
8940: 65 20 63 6f 6c 75 6d 6e 20 66 6f 72 20 77 68 69  e column for whi
8950: 63 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 0a  ch information .
8960: 2a 2a 20 73 68 6f 75 6c 64 20 62 65 20 72 65 74  ** should be ret
8970: 75 72 6e 65 64 2e 20 20 69 43 6f 6c 20 69 73 20  urned.  iCol is 
8980: 7a 65 72 6f 2d 69 6e 64 65 78 65 64 2e 20 20 54  zero-indexed.  T
8990: 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c  he left-most col
89a0: 75 6d 6e 20 61 73 20 61 6e 0a 2a 2a 20 69 6e 64  umn as an.** ind
89b0: 65 78 20 6f 66 20 30 2e 0a 2a 2a 0a 2a 2a 20 49  ex of 0..**.** I
89c0: 66 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  f the SQL statem
89d0: 65 6e 74 20 69 73 20 6e 6f 74 20 63 75 72 72 65  ent is not curre
89e0: 6e 74 6c 79 20 70 6f 69 6e 74 20 74 6f 20 61 20  ntly point to a 
89f0: 76 61 6c 69 64 20 72 6f 77 2c 20 6f 72 20 69 66  valid row, or if
8a00: 20 74 68 65 0a 2a 2a 20 74 68 65 20 63 6f 6c 75   the.** the colu
8a10: 6c 6d 6e 20 69 6e 64 65 78 20 69 73 20 6f 75 74  lmn index is out
8a20: 20 6f 66 20 72 61 6e 67 65 2c 20 74 68 65 20 72   of range, the r
8a30: 65 73 75 6c 74 20 69 73 20 75 6e 64 65 66 69 6e  esult is undefin
8a40: 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ed..**.** These 
8a50: 72 6f 75 74 69 6e 65 73 20 61 74 74 65 6d 70 74  routines attempt
8a60: 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20   to convert the 
8a70: 76 61 6c 75 65 20 77 68 65 72 65 20 61 70 70 72  value where appr
8a80: 6f 70 72 69 61 74 65 2e 20 20 46 6f 72 0a 2a 2a  opriate.  For.**
8a90: 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65   example, if the
8aa0: 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73   internal repres
8ab0: 65 6e 74 61 74 69 6f 6e 20 69 73 20 46 4c 4f 41  entation is FLOA
8ac0: 54 20 61 6e 64 20 61 20 74 65 78 74 20 72 65 73  T and a text res
8ad0: 75 6c 74 0a 2a 2a 20 69 73 20 72 65 71 75 65 73  ult.** is reques
8ae0: 74 65 64 2c 20 73 70 72 69 6e 74 66 28 29 20 69  ted, sprintf() i
8af0: 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c  s used internall
8b00: 79 20 74 6f 20 64 6f 20 74 68 65 20 63 6f 6e 76  y to do the conv
8b10: 65 72 73 69 6f 6e 0a 2a 2a 20 61 75 74 6f 6d 61  ersion.** automa
8b20: 74 69 63 61 6c 6c 79 2e 20 20 54 68 65 20 66 6f  tically.  The fo
8b30: 6c 6c 6f 77 69 6e 67 20 74 61 62 6c 65 20 64 65  llowing table de
8b40: 74 61 69 6c 73 20 74 68 65 20 63 6f 6e 76 65 72  tails the conver
8b50: 73 69 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 61 72  sions that.** ar
8b60: 65 20 61 70 70 6c 69 65 64 3a 0a 2a 2a 0a 2a 2a  e applied:.**.**
8b70: 20 20 20 20 49 6e 74 65 72 6e 61 6c 20 54 79 70      Internal Typ
8b80: 65 20 20 20 20 52 65 71 75 65 73 74 65 64 20 54  e    Requested T
8b90: 79 70 65 20 20 20 20 20 43 6f 6e 76 65 72 73 69  ype     Conversi
8ba0: 6f 6e 0a 2a 2a 20 20 20 20 2d 2d 2d 2d 2d 2d 2d  on.**    -------
8bb0: 2d 2d 2d 2d 2d 2d 20 20 20 20 2d 2d 2d 2d 2d 2d  ------    ------
8bc0: 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20 2d 2d 2d 2d  --------    ----
8bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8be0: 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20 20 20  ------.**       
8bf0: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
8c00: 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20 20   INTEGER        
8c10: 20 52 65 73 75 6c 74 20 69 73 20 30 0a 2a 2a 20   Result is 0.** 
8c20: 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
8c30: 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20         FLOAT    
8c40: 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 69 73         Result is
8c50: 20 30 2e 30 0a 2a 2a 20 20 20 20 20 20 20 4e 55   0.0.**       NU
8c60: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 54  LL             T
8c70: 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20 52  EXT            R
8c80: 65 73 75 6c 74 20 69 73 20 61 6e 20 65 6d 70 74  esult is an empt
8c90: 79 20 73 74 72 69 6e 67 0a 2a 2a 20 20 20 20 20  y string.**     
8ca0: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
8cb0: 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20     BLOB         
8cc0: 20 20 20 52 65 73 75 6c 74 20 69 73 20 61 20 7a     Result is a z
8cd0: 65 72 6f 2d 6c 65 6e 67 74 68 20 42 4c 4f 42 0a  ero-length BLOB.
8ce0: 2a 2a 20 20 20 20 20 20 20 49 4e 54 45 47 45 52  **       INTEGER
8cf0: 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54 20            FLOAT 
8d00: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72            Conver
8d10: 74 20 66 72 6f 6d 20 69 6e 74 65 67 65 72 20 74  t from integer t
8d20: 6f 20 66 6c 6f 61 74 0a 2a 2a 20 20 20 20 20 20  o float.**      
8d30: 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20 20   INTEGER        
8d40: 20 20 54 45 58 54 20 20 20 20 20 20 20 20 20 20    TEXT          
8d50: 20 20 41 53 43 49 49 20 72 65 6e 64 65 72 69 6e    ASCII renderin
8d60: 67 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72  g of the integer
8d70: 0a 2a 2a 20 20 20 20 20 20 20 49 4e 54 45 47 45  .**       INTEGE
8d80: 52 20 20 20 20 20 20 20 20 20 20 42 4c 4f 42 20  R          BLOB 
8d90: 20 20 20 20 20 20 20 20 20 20 20 53 61 6d 65 20             Same 
8da0: 61 73 20 66 6f 72 20 49 4e 54 45 47 45 52 2d 3e  as for INTEGER->
8db0: 54 45 58 54 0a 2a 2a 20 20 20 20 20 20 20 46 4c  TEXT.**       FL
8dc0: 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 20 49  OAT            I
8dd0: 4e 54 45 47 45 52 20 20 20 20 20 20 20 20 20 43  NTEGER         C
8de0: 6f 6e 76 65 72 74 20 66 72 6f 6d 20 66 6c 6f 61  onvert from floa
8df0: 74 20 74 6f 20 69 6e 74 65 67 65 72 0a 2a 2a 20  t to integer.** 
8e00: 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20        FLOAT     
8e10: 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20         TEXT     
8e20: 20 20 20 20 20 20 20 41 53 43 49 49 20 72 65 6e         ASCII ren
8e30: 64 65 72 69 6e 67 20 6f 66 20 74 68 65 20 66 6c  dering of the fl
8e40: 6f 61 74 0a 2a 2a 20 20 20 20 20 20 20 46 4c 4f  oat.**       FLO
8e50: 41 54 20 20 20 20 20 20 20 20 20 20 20 20 42 4c  AT            BL
8e60: 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 53 61  OB            Sa
8e70: 6d 65 20 61 73 20 46 4c 4f 41 54 2d 3e 54 45 58  me as FLOAT->TEX
8e80: 54 0a 2a 2a 20 20 20 20 20 20 20 54 45 58 54 20  T.**       TEXT 
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 49 4e 54 45              INTE
8ea0: 47 45 52 20 20 20 20 20 20 20 20 20 55 73 65 20  GER         Use 
8eb0: 61 74 6f 69 28 29 0a 2a 2a 20 20 20 20 20 20 20  atoi().**       
8ec0: 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20  TEXT            
8ed0: 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20   FLOAT          
8ee0: 20 55 73 65 20 61 74 6f 66 28 29 0a 2a 2a 20 20   Use atof().**  
8ef0: 20 20 20 20 20 54 45 58 54 20 20 20 20 20 20 20       TEXT       
8f00: 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20        BLOB      
8f10: 20 20 20 20 20 20 4e 6f 20 63 68 61 6e 67 65 0a        No change.
8f20: 2a 2a 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20  **       BLOB   
8f30: 20 20 20 20 20 20 20 20 20 20 49 4e 54 45 47 45            INTEGE
8f40: 52 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72  R         Conver
8f50: 74 20 74 6f 20 54 45 58 54 20 74 68 65 6e 20 75  t to TEXT then u
8f60: 73 65 20 61 74 6f 69 28 29 0a 2a 2a 20 20 20 20  se atoi().**    
8f70: 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20     BLOB         
8f80: 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20      FLOAT       
8f90: 20 20 20 20 43 6f 6e 76 65 72 74 20 74 6f 20 54      Convert to T
8fa0: 45 58 54 20 74 68 65 6e 20 75 73 65 20 61 74 6f  EXT then use ato
8fb0: 66 28 29 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f  f().**       BLO
8fc0: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 54 45  B             TE
8fd0: 58 54 20 20 20 20 20 20 20 20 20 20 20 20 41 64  XT            Ad
8fe0: 64 20 61 20 5c 30 30 30 20 74 65 72 6d 69 6e 61  d a \000 termina
8ff0: 74 6f 72 20 69 66 20 6e 65 65 64 65 64 0a 2a 2a  tor if needed.**
9000: 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  .** The followin
9010: 67 20 61 63 63 65 73 73 20 72 6f 75 74 69 6e 65  g access routine
9020: 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 3a 0a  s are provided:.
9030: 2a 2a 0a 2a 2a 20 5f 74 79 70 65 28 29 20 20 20  **.** _type()   
9040: 20 20 52 65 74 75 72 6e 20 74 68 65 20 64 61 74    Return the dat
9050: 61 74 79 70 65 20 6f 66 20 74 68 65 20 72 65 73  atype of the res
9060: 75 6c 74 2e 20 20 54 68 69 73 20 69 73 20 6f 6e  ult.  This is on
9070: 65 20 6f 66 0a 2a 2a 20 20 20 20 20 20 20 20 20  e of.**         
9080: 20 20 20 20 53 51 4c 49 54 45 5f 49 4e 54 45 47      SQLITE_INTEG
9090: 45 52 2c 20 53 51 4c 49 54 45 5f 46 4c 4f 41 54  ER, SQLITE_FLOAT
90a0: 2c 20 53 51 4c 49 54 45 5f 54 45 58 54 2c 20 53  , SQLITE_TEXT, S
90b0: 51 4c 49 54 45 5f 42 4c 4f 42 2c 0a 2a 2a 20 20  QLITE_BLOB,.**  
90c0: 20 20 20 20 20 20 20 20 20 20 20 6f 72 20 53 51             or SQ
90d0: 4c 49 54 45 5f 4e 55 4c 4c 2e 0a 2a 2a 20 5f 62  LITE_NULL..** _b
90e0: 6c 6f 62 28 29 20 20 20 20 20 52 65 74 75 72 6e  lob()     Return
90f0: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 20   the value of a 
9100: 42 4c 4f 42 2e 0a 2a 2a 20 5f 62 79 74 65 73 28  BLOB..** _bytes(
9110: 29 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20  )    Return the 
9120: 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
9130: 69 6e 20 61 20 42 4c 4f 42 20 76 61 6c 75 65 20  in a BLOB value 
9140: 6f 72 20 74 68 65 20 6e 75 6d 62 65 72 0a 2a 2a  or the number.**
9150: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 20               of 
9160: 62 79 74 65 73 20 69 6e 20 61 20 54 45 58 54 20  bytes in a TEXT 
9170: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 65  value represente
9180: 64 20 61 73 20 55 54 46 2d 38 2e 20 20 54 68 65  d as UTF-8.  The
9190: 20 5c 30 30 30 0a 2a 2a 20 20 20 20 20 20 20 20   \000.**        
91a0: 20 20 20 20 20 74 65 72 6d 69 6e 61 74 6f 72 20       terminator 
91b0: 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  is included in t
91c0: 68 65 20 62 79 74 65 20 63 6f 75 6e 74 20 66 6f  he byte count fo
91d0: 72 20 54 45 58 54 20 76 61 6c 75 65 73 2e 0a 2a  r TEXT values..*
91e0: 2a 20 5f 62 79 74 65 73 31 36 28 29 20 20 52 65  * _bytes16()  Re
91f0: 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  turn the number 
9200: 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 42 4c  of bytes in a BL
9210: 4f 42 20 76 61 6c 75 65 20 6f 72 20 74 68 65 20  OB value or the 
9220: 6e 75 6d 62 65 72 0a 2a 2a 20 20 20 20 20 20 20  number.**       
9230: 20 20 20 20 20 20 6f 66 20 62 79 74 65 73 20 69        of bytes i
9240: 6e 20 61 20 54 45 58 54 20 76 61 6c 75 65 20 72  n a TEXT value r
9250: 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 55 54  epresented as UT
9260: 46 2d 31 36 2e 20 20 54 68 65 20 5c 75 30 30 30  F-16.  The \u000
9270: 30 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  0.**            
9280: 20 74 65 72 6d 69 6e 61 74 6f 72 20 69 73 20 69   terminator is i
9290: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 62  ncluded in the b
92a0: 79 74 65 20 63 6f 75 6e 74 20 66 6f 72 20 54 45  yte count for TE
92b0: 58 54 20 76 61 6c 75 65 73 2e 0a 2a 2a 20 5f 64  XT values..** _d
92c0: 6f 75 62 6c 65 28 29 20 20 20 52 65 74 75 72 6e  ouble()   Return
92d0: 20 61 20 46 4c 4f 41 54 20 76 61 6c 75 65 2e 0a   a FLOAT value..
92e0: 2a 2a 20 5f 69 6e 74 28 29 20 20 20 20 20 20 52  ** _int()      R
92f0: 65 74 75 72 6e 20 61 6e 20 49 4e 54 45 47 45 52  eturn an INTEGER
9300: 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 68 6f   value in the ho
9310: 73 74 20 63 6f 6d 70 75 74 65 72 27 73 20 6e 61  st computer's na
9320: 74 69 76 65 0a 2a 2a 20 20 20 20 20 20 20 20 20  tive.**         
9330: 20 20 20 20 69 6e 74 65 67 65 72 20 72 65 70 72      integer repr
9340: 65 73 65 6e 74 61 74 69 6f 6e 2e 20 20 54 68 69  esentation.  Thi
9350: 73 20 6d 69 67 68 74 20 62 65 20 65 69 74 68 65  s might be eithe
9360: 72 20 61 20 33 32 2d 20 6f 72 20 36 34 2d 62 69  r a 32- or 64-bi
9370: 74 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  t.**            
9380: 20 69 6e 74 65 67 65 72 20 64 65 70 65 6e 64 69   integer dependi
9390: 6e 67 20 6f 6e 20 74 68 65 20 68 6f 73 74 2e 0a  ng on the host..
93a0: 2a 2a 20 5f 69 6e 74 36 34 28 29 20 20 20 20 52  ** _int64()    R
93b0: 65 74 75 72 6e 20 61 6e 20 49 4e 54 45 47 45 52  eturn an INTEGER
93c0: 20 76 61 6c 75 65 20 61 73 20 61 20 36 34 2d 62   value as a 64-b
93d0: 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
93e0: 72 2e 0a 2a 2a 20 5f 74 65 78 74 28 29 20 20 20  r..** _text()   
93f0: 20 20 52 65 74 75 72 6e 20 74 68 65 20 76 61 6c    Return the val
9400: 75 65 20 61 73 20 55 54 46 2d 38 20 74 65 78 74  ue as UTF-8 text
9410: 2e 0a 2a 2a 20 5f 74 65 78 74 31 36 28 29 20 20  ..** _text16()  
9420: 20 52 65 74 75 72 6e 20 74 68 65 20 76 61 6c 75   Return the valu
9430: 65 20 61 73 20 55 54 46 2d 31 36 20 74 65 78 74  e as UTF-16 text
9440: 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69 64 20  ..*/.const void 
9450: 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
9460: 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73 74 6d  blob(sqlite3_stm
9470: 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 69  t*, int iCol);.i
9480: 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
9490: 6e 5f 62 79 74 65 73 28 73 71 6c 69 74 65 33 5f  n_bytes(sqlite3_
94a0: 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29  stmt*, int iCol)
94b0: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  ;.int sqlite3_co
94c0: 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 73 71 6c  lumn_bytes16(sql
94d0: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
94e0: 69 43 6f 6c 29 3b 0a 64 6f 75 62 6c 65 20 73 71  iCol);.double sq
94f0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
9500: 62 6c 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ble(sqlite3_stmt
9510: 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e  *, int iCol);.in
9520: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
9530: 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d  _int(sqlite3_stm
9540: 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 73  t*, int iCol);.s
9550: 71 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c 69  qlite_int64 sqli
9560: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
9570: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
9580: 69 6e 74 20 69 43 6f 6c 29 3b 0a 63 6f 6e 73 74  int iCol);.const
9590: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a   unsigned char *
95a0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
95b0: 65 78 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ext(sqlite3_stmt
95c0: 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 63 6f  *, int iCol);.co
95d0: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
95e0: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28  3_column_text16(
95f0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
9600: 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71  nt iCol);.int sq
9610: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70  lite3_column_typ
9620: 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  e(sqlite3_stmt*,
9630: 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 0a 2f 2a 0a   int iCol);../*.
9640: 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 66  ** The sqlite3_f
9650: 69 6e 61 6c 69 7a 65 28 29 20 66 75 6e 63 74 69  inalize() functi
9660: 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 74 6f 20  on is called to 
9670: 64 65 6c 65 74 65 20 61 20 63 6f 6d 70 69 6c 65  delete a compile
9680: 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65  d.** SQL stateme
9690: 6e 74 20 6f 62 74 61 69 6e 65 64 20 62 79 20 61  nt obtained by a
96a0: 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20 74   previous call t
96b0: 6f 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  o sqlite3_prepar
96c0: 65 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65  e().** or sqlite
96d0: 33 5f 70 72 65 70 61 72 65 31 36 28 29 2e 20 49  3_prepare16(). I
96e0: 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
96f0: 77 61 73 20 65 78 65 63 75 74 65 64 20 73 75 63  was executed suc
9700: 63 65 73 73 66 75 6c 6c 79 2c 20 6f 72 0a 2a 2a  cessfully, or.**
9710: 20 6e 6f 74 20 65 78 65 63 75 74 65 64 20 61 74   not executed at
9720: 20 61 6c 6c 2c 20 74 68 65 6e 20 53 51 4c 49 54   all, then SQLIT
9730: 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e 65 64  E_OK is returned
9740: 2e 20 49 66 20 65 78 65 63 75 74 69 6f 6e 20 6f  . If execution o
9750: 66 20 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d 65  f the.** stateme
9760: 6e 74 20 66 61 69 6c 65 64 20 74 68 65 6e 20 61  nt failed then a
9770: 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  n error code is 
9780: 72 65 74 75 72 6e 65 64 2e 20 0a 2a 2a 0a 2a 2a  returned. .**.**
9790: 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63 61   This routine ca
97a0: 6e 20 62 65 20 63 61 6c 6c 65 64 20 61 74 20 61  n be called at a
97b0: 6e 79 20 70 6f 69 6e 74 20 64 75 72 69 6e 67 20  ny point during 
97c0: 74 68 65 20 65 78 65 63 75 74 69 6f 6e 20 6f 66  the execution of
97d0: 20 74 68 65 0a 2a 2a 20 76 69 72 74 75 61 6c 20   the.** virtual 
97e0: 6d 61 63 68 69 6e 65 2e 20 20 49 66 20 74 68 65  machine.  If the
97f0: 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65   virtual machine
9800: 20 68 61 73 20 6e 6f 74 20 63 6f 6d 70 6c 65 74   has not complet
9810: 65 64 20 65 78 65 63 75 74 69 6f 6e 0a 2a 2a 20  ed execution.** 
9820: 77 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e  when this routin
9830: 65 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 61  e is called, tha
9840: 74 20 69 73 20 6c 69 6b 65 20 65 6e 63 6f 75 6e  t is like encoun
9850: 74 65 72 69 6e 67 20 61 6e 20 65 72 72 6f 72 20  tering an error 
9860: 6f 72 0a 2a 2a 20 61 6e 20 69 6e 74 65 72 72 75  or.** an interru
9870: 70 74 2e 20 20 28 53 65 65 20 73 71 6c 69 74 65  pt.  (See sqlite
9880: 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2e 29 20  3_interrupt().) 
9890: 20 49 6e 63 6f 6d 70 6c 65 74 65 20 75 70 64 61   Incomplete upda
98a0: 74 65 73 20 6d 61 79 20 62 65 0a 2a 2a 20 72 6f  tes may be.** ro
98b0: 6c 6c 65 64 20 62 61 63 6b 20 61 6e 64 20 74 72  lled back and tr
98c0: 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 63 65  ansactions cance
98d0: 6c 6c 65 64 2c 20 20 64 65 70 65 6e 64 69 6e 67  lled,  depending
98e0: 20 6f 6e 20 74 68 65 20 63 69 72 63 75 6d 73 74   on the circumst
98f0: 61 6e 63 65 73 2c 0a 2a 2a 20 61 6e 64 20 74 68  ances,.** and th
9900: 65 20 72 65 73 75 6c 74 20 63 6f 64 65 20 72 65  e result code re
9910: 74 75 72 6e 65 64 20 77 69 6c 6c 20 62 65 20 53  turned will be S
9920: 51 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 2a 2f 0a  QLITE_ABORT..*/.
9930: 69 6e 74 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  int sqlite3_fina
9940: 6c 69 7a 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  lize(sqlite3_stm
9950: 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a  t *pStmt);../*.*
9960: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 72 65  * The sqlite3_re
9970: 73 65 74 28 29 20 66 75 6e 63 74 69 6f 6e 20 69  set() function i
9980: 73 20 63 61 6c 6c 65 64 20 74 6f 20 72 65 73 65  s called to rese
9990: 74 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  t a compiled SQL
99a0: 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 6f 62  .** statement ob
99b0: 74 61 69 6e 65 64 20 62 79 20 61 20 70 72 65 76  tained by a prev
99c0: 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20 73 71 6c  ious call to sql
99d0: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 6f  ite3_prepare() o
99e0: 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65  r.** sqlite3_pre
99f0: 70 61 72 65 31 36 28 29 20 62 61 63 6b 20 74 6f  pare16() back to
9a00: 20 69 74 27 73 20 69 6e 69 74 69 61 6c 20 73 74   it's initial st
9a10: 61 74 65 2c 20 72 65 61 64 79 20 74 6f 20 62 65  ate, ready to be
9a20: 20 72 65 2d 65 78 65 63 75 74 65 64 2e 0a 2a 2a   re-executed..**
9a30: 20 41 6e 79 20 53 51 4c 20 73 74 61 74 65 6d 65   Any SQL stateme
9a40: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 74 68 61  nt variables tha
9a50: 74 20 68 61 64 20 76 61 6c 75 65 73 20 62 6f 75  t had values bou
9a60: 6e 64 20 74 6f 20 74 68 65 6d 20 75 73 69 6e 67  nd to them using
9a70: 0a 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f  .** the sqlite3_
9a80: 62 69 6e 64 5f 2a 28 29 20 41 50 49 20 72 65 74  bind_*() API ret
9a90: 61 69 6e 20 74 68 65 69 72 20 76 61 6c 75 65 73  ain their values
9aa0: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
9ab0: 5f 72 65 73 65 74 28 73 71 6c 69 74 65 33 5f 73  _reset(sqlite3_s
9ac0: 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a  tmt *pStmt);../*
9ad0: 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  .** The followin
9ae0: 67 20 74 77 6f 20 66 75 6e 63 74 69 6f 6e 73 20  g two functions 
9af0: 61 72 65 20 75 73 65 64 20 74 6f 20 61 64 64 20  are used to add 
9b00: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 6f  user functions o
9b10: 72 20 61 67 67 72 65 67 61 74 65 73 0a 2a 2a 20  r aggregates.** 
9b20: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 43  implemented in C
9b30: 20 74 6f 20 74 68 65 20 53 51 4c 20 6c 61 6e 67   to the SQL lang
9b40: 61 75 67 65 20 69 6e 74 65 72 70 72 65 74 65 64  auge interpreted
9b50: 20 62 79 20 53 51 4c 69 74 65 2e 20 54 68 65 0a   by SQLite. The.
9b60: 2a 2a 20 64 69 66 66 65 72 65 6e 63 65 20 6f 6e  ** difference on
9b70: 6c 79 20 62 65 74 77 65 65 6e 20 74 68 65 20 74  ly between the t
9b80: 77 6f 20 69 73 20 74 68 61 74 20 74 68 65 20 73  wo is that the s
9b90: 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2c  econd parameter,
9ba0: 20 74 68 65 0a 2a 2a 20 6e 61 6d 65 20 6f 66 20   the.** name of 
9bb0: 74 68 65 20 28 73 63 61 6c 61 72 29 20 66 75 6e  the (scalar) fun
9bc0: 63 74 69 6f 6e 20 6f 72 20 61 67 67 72 65 67 61  ction or aggrega
9bd0: 74 65 2c 20 69 73 20 65 6e 63 6f 64 65 64 20 69  te, is encoded i
9be0: 6e 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a 20 73  n UTF-8 for.** s
9bf0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
9c00: 6e 63 74 69 6f 6e 28 29 20 61 6e 64 20 55 54 46  nction() and UTF
9c10: 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65 33 5f  -16 for sqlite3_
9c20: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 31  create_function1
9c30: 36 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  6()..**.** The f
9c40: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73  irst argument is
9c50: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 68 61   the database ha
9c60: 6e 64 6c 65 20 74 68 61 74 20 74 68 65 20 6e 65  ndle that the ne
9c70: 77 20 66 75 6e 63 74 69 6f 6e 20 6f 72 0a 2a 2a  w function or.**
9c80: 20 61 67 67 72 65 67 61 74 65 20 69 73 20 74 6f   aggregate is to
9c90: 20 62 65 20 61 64 64 65 64 20 74 6f 2e 20 49 66   be added to. If
9ca0: 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67 72 61   a single progra
9cb0: 6d 20 75 73 65 73 20 6d 6f 72 65 20 74 68 61 6e  m uses more than
9cc0: 20 6f 6e 65 0a 2a 2a 20 64 61 74 61 62 61 73 65   one.** database
9cd0: 20 68 61 6e 64 6c 65 20 69 6e 74 65 72 6e 61 6c   handle internal
9ce0: 6c 79 2c 20 74 68 65 6e 20 75 73 65 72 20 66 75  ly, then user fu
9cf0: 6e 63 74 69 6f 6e 73 20 6f 72 20 61 67 67 72 65  nctions or aggre
9d00: 67 61 74 65 73 20 6d 75 73 74 20 0a 2a 2a 20 62  gates must .** b
9d10: 65 20 61 64 64 65 64 20 69 6e 64 69 76 69 64 75  e added individu
9d20: 61 6c 6c 79 20 74 6f 20 65 61 63 68 20 64 61 74  ally to each dat
9d30: 61 62 61 73 65 20 68 61 6e 64 6c 65 20 77 69 74  abase handle wit
9d40: 68 20 77 68 69 63 68 20 74 68 65 79 20 77 69 6c  h which they wil
9d50: 6c 20 62 65 0a 2a 2a 20 75 73 65 64 2e 0a 2a 2a  l be.** used..**
9d60: 0a 2a 2a 20 54 68 65 20 74 68 69 72 64 20 70 61  .** The third pa
9d70: 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6e  rameter is the n
9d80: 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
9d90: 74 73 20 74 68 61 74 20 74 68 65 20 66 75 6e 63  ts that the func
9da0: 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67 72 65  tion or.** aggre
9db0: 67 61 74 65 20 74 61 6b 65 73 2e 20 49 66 20 74  gate takes. If t
9dc0: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 69 73  his parameter is
9dd0: 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20   negative, then 
9de0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72 0a  the function or.
9df0: 2a 2a 20 61 67 67 72 65 67 61 74 65 20 6d 61 79  ** aggregate may
9e00: 20 74 61 6b 65 20 61 6e 79 20 6e 75 6d 62 65 72   take any number
9e10: 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a   of arguments..*
9e20: 2a 0a 2a 2a 20 54 68 65 20 66 6f 75 72 74 68 20  *.** The fourth 
9e30: 70 61 72 61 6d 65 74 65 72 20 69 73 20 6f 6e 65  parameter is one
9e40: 20 6f 66 20 53 51 4c 49 54 45 5f 55 54 46 2a 20   of SQLITE_UTF* 
9e50: 76 61 6c 75 65 73 20 64 65 66 69 6e 65 64 20 62  values defined b
9e60: 65 6c 6f 77 2c 0a 2a 2a 20 69 6e 64 69 63 61 74  elow,.** indicat
9e70: 69 6e 67 20 74 68 65 20 65 6e 63 6f 64 69 6e 67  ing the encoding
9e80: 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69   that the functi
9e90: 6f 6e 20 69 73 20 6d 6f 73 74 20 6c 69 6b 65 6c  on is most likel
9ea0: 79 20 74 6f 20 68 61 6e 64 6c 65 0a 2a 2a 20 76  y to handle.** v
9eb0: 61 6c 75 65 73 20 69 6e 2e 20 20 54 68 69 73 20  alues in.  This 
9ec0: 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20  does not change 
9ed0: 74 68 65 20 62 65 68 61 76 69 6f 75 72 20 6f 66  the behaviour of
9ee0: 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 69 6e 67   the programming
9ef0: 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 2e 20 48  .** interface. H
9f00: 6f 77 65 76 65 72 2c 20 69 66 20 74 77 6f 20 76  owever, if two v
9f10: 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 73  ersions of the s
9f20: 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 61 72 65  ame function are
9f30: 20 72 65 67 69 73 74 65 72 65 64 0a 2a 2a 20 77   registered.** w
9f40: 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 65 6e  ith different en
9f50: 63 6f 64 69 6e 67 20 76 61 6c 75 65 73 2c 20 53  coding values, S
9f60: 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74 68  QLite invokes th
9f70: 65 20 76 65 72 73 69 6f 6e 20 6c 69 6b 65 6c 79  e version likely
9f80: 20 74 6f 0a 2a 2a 20 6d 69 6e 69 6d 69 7a 65 20   to.** minimize 
9f90: 63 6f 6e 76 65 72 73 69 6f 6e 73 20 62 65 74 77  conversions betw
9fa0: 65 65 6e 20 74 65 78 74 20 65 6e 63 6f 64 69 6e  een text encodin
9fb0: 67 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 65  gs..**.** The se
9fc0: 76 65 6e 74 68 2c 20 65 69 67 68 74 68 20 61 6e  venth, eighth an
9fd0: 64 20 6e 69 6e 74 68 20 70 61 72 61 6d 65 74 65  d ninth paramete
9fe0: 72 73 2c 20 78 46 75 6e 63 2c 20 78 53 74 65 70  rs, xFunc, xStep
9ff0: 20 61 6e 64 20 78 46 69 6e 61 6c 2c 20 61 72 65   and xFinal, are
a000: 0a 2a 2a 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  .** pointers to 
a010: 75 73 65 72 20 69 6d 70 6c 65 6d 65 6e 74 65 64  user implemented
a020: 20 43 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61   C functions tha
a030: 74 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20  t implement the 
a040: 75 73 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  user.** function
a050: 20 6f 72 20 61 67 67 72 65 67 61 74 65 2e 20 41   or aggregate. A
a060: 20 73 63 61 6c 61 72 20 66 75 6e 63 74 69 6f 6e   scalar function
a070: 20 72 65 71 75 69 72 65 73 20 61 6e 20 69 6d 70   requires an imp
a080: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 2a  lementation of.*
a090: 2a 20 74 68 65 20 78 46 75 6e 63 20 63 61 6c 6c  * the xFunc call
a0a0: 62 61 63 6b 20 6f 6e 6c 79 2c 20 4e 55 4c 4c 20  back only, NULL 
a0b0: 70 6f 69 6e 74 65 72 73 20 73 68 6f 75 6c 64 20  pointers should 
a0c0: 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  be passed as the
a0d0: 20 78 53 74 65 70 0a 2a 2a 20 61 6e 64 20 78 46   xStep.** and xF
a0e0: 69 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 73 2e  inal parameters.
a0f0: 20 41 6e 20 61 67 67 72 65 67 61 74 65 20 66 75   An aggregate fu
a100: 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65 73 20  nction requires 
a110: 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  an implementatio
a120: 6e 0a 2a 2a 20 6f 66 20 78 53 74 65 70 20 61 6e  n.** of xStep an
a130: 64 20 78 46 69 6e 61 6c 2c 20 62 75 74 20 4e 55  d xFinal, but NU
a140: 4c 4c 20 73 68 6f 75 6c 64 20 62 65 20 70 61 73  LL should be pas
a150: 73 65 64 20 66 6f 72 20 78 46 75 6e 63 2e 20 54  sed for xFunc. T
a160: 6f 20 64 65 6c 65 74 65 20 61 6e 0a 2a 2a 20 65  o delete an.** e
a170: 78 69 73 74 69 6e 67 20 75 73 65 72 20 66 75 6e  xisting user fun
a180: 63 74 69 6f 6e 20 6f 72 20 61 67 67 72 65 67 61  ction or aggrega
a190: 74 65 2c 20 70 61 73 73 20 4e 55 4c 4c 20 66 6f  te, pass NULL fo
a1a0: 72 20 61 6c 6c 20 74 68 72 65 65 20 66 75 6e 63  r all three func
a1b0: 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b  tion.** callback
a1c0: 2e 20 53 70 65 63 69 66 79 69 6e 67 20 61 6e 20  . Specifying an 
a1d0: 69 6e 63 6f 6e 73 74 65 6e 74 20 73 65 74 20 6f  inconstent set o
a1e0: 66 20 63 61 6c 6c 62 61 63 6b 20 76 61 6c 75 65  f callback value
a1f0: 73 2c 20 73 75 63 68 20 61 73 20 61 6e 0a 2a 2a  s, such as an.**
a200: 20 78 46 75 6e 63 20 61 6e 64 20 61 6e 20 78 46   xFunc and an xF
a210: 69 6e 61 6c 2c 20 6f 72 20 61 6e 20 78 53 74 65  inal, or an xSte
a220: 70 20 62 75 74 20 6e 6f 20 78 46 69 6e 61 6c 2c  p but no xFinal,
a230: 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 73   SQLITE_ERROR is
a240: 0a 2a 2a 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2f  .** returned..*/
a250: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65  .int sqlite3_cre
a260: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 0a 20 20  ate_function(.  
a270: 73 71 6c 69 74 65 33 20 2a 2c 0a 20 20 63 6f 6e  sqlite3 *,.  con
a280: 73 74 20 63 68 61 72 20 2a 7a 46 75 6e 63 74 69  st char *zFuncti
a290: 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e 74 20 6e 41  onName,.  int nA
a2a0: 72 67 2c 0a 20 20 69 6e 74 20 65 54 65 78 74 52  rg,.  int eTextR
a2b0: 65 70 2c 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 76  ep,.  void*,.  v
a2c0: 6f 69 64 20 28 2a 78 46 75 6e 63 29 28 73 71 6c  oid (*xFunc)(sql
a2d0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e  ite3_context*,in
a2e0: 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  t,sqlite3_value*
a2f0: 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 53 74  *),.  void (*xSt
a300: 65 70 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  ep)(sqlite3_cont
a310: 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74 65 33  ext*,int,sqlite3
a320: 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f 69  _value**),.  voi
a330: 64 20 28 2a 78 46 69 6e 61 6c 29 28 73 71 6c 69  d (*xFinal)(sqli
a340: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 0a 29 3b  te3_context*).);
a350: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65  .int sqlite3_cre
a360: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 31 36 28 0a  ate_function16(.
a370: 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20 63 6f    sqlite3*,.  co
a380: 6e 73 74 20 76 6f 69 64 20 2a 7a 46 75 6e 63 74  nst void *zFunct
a390: 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e 74 20 6e  ionName,.  int n
a3a0: 41 72 67 2c 0a 20 20 69 6e 74 20 65 54 65 78 74  Arg,.  int eText
a3b0: 52 65 70 2c 0a 20 20 76 6f 69 64 2a 2c 0a 20 20  Rep,.  void*,.  
a3c0: 76 6f 69 64 20 28 2a 78 46 75 6e 63 29 28 73 71  void (*xFunc)(sq
a3d0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69  lite3_context*,i
a3e0: 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt,sqlite3_value
a3f0: 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 53  **),.  void (*xS
a400: 74 65 70 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e  tep)(sqlite3_con
a410: 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74 65  text*,int,sqlite
a420: 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f  3_value**),.  vo
a430: 69 64 20 28 2a 78 46 69 6e 61 6c 29 28 73 71 6c  id (*xFinal)(sql
a440: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 0a 29  ite3_context*).)
a450: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 6e 65 78  ;../*.** The nex
a460: 74 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  t routine return
a470: 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
a480: 63 61 6c 6c 73 20 74 6f 20 78 53 74 65 70 20 66  calls to xStep f
a490: 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a  or a particular.
a4a0: 2a 2a 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  ** aggregate fun
a4b0: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 20  ction instance. 
a4c0: 20 54 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c   The current cal
a4d0: 6c 20 74 6f 20 78 53 74 65 70 20 63 6f 75 6e 74  l to xStep count
a4e0: 73 20 73 6f 20 74 68 69 73 0a 2a 2a 20 72 6f 75  s so this.** rou
a4f0: 74 69 6e 65 20 61 6c 77 61 79 73 20 72 65 74 75  tine always retu
a500: 72 6e 73 20 61 74 20 6c 65 61 73 74 20 31 2e 0a  rns at least 1..
a510: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 61  */.int sqlite3_a
a520: 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 73  ggregate_count(s
a530: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29  qlite3_context*)
a540: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 6e 65 78  ;../*.** The nex
a550: 74 20 67 72 6f 75 70 20 6f 66 20 72 6f 75 74 69  t group of routi
a560: 6e 65 73 20 72 65 74 75 72 6e 73 20 69 6e 66 6f  nes returns info
a570: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 70 61  rmation about pa
a580: 72 61 6d 65 74 65 72 73 20 74 6f 0a 2a 2a 20 61  rameters to.** a
a590: 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75   user-defined fu
a5a0: 6e 63 74 69 6f 6e 2e 20 20 46 75 6e 63 74 69 6f  nction.  Functio
a5b0: 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  n implementation
a5c0: 73 20 75 73 65 20 74 68 65 73 65 20 72 6f 75 74  s use these rout
a5d0: 69 6e 65 73 0a 2a 2a 20 74 6f 20 61 63 63 65 73  ines.** to acces
a5e0: 73 20 74 68 65 69 72 20 70 61 72 61 6d 65 74 65  s their paramete
a5f0: 72 73 2e 20 20 54 68 65 73 65 20 72 6f 75 74 69  rs.  These routi
a600: 6e 65 73 20 61 72 65 20 74 68 65 20 73 61 6d 65  nes are the same
a610: 20 61 73 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74   as the.** sqlit
a620: 65 33 5f 63 6f 6c 75 6d 6e 5f 2a 20 72 6f 75 74  e3_column_* rout
a630: 69 6e 65 73 20 65 78 63 65 70 74 20 74 68 61 74  ines except that
a640: 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20   these routines 
a650: 74 61 6b 65 20 61 20 73 69 6e 67 6c 65 0a 2a 2a  take a single.**
a660: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 20   sqlite3_value* 
a670: 70 6f 69 6e 74 65 72 20 69 6e 73 74 65 61 64 20  pointer instead 
a680: 6f 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 73 74  of an sqlite3_st
a690: 6d 74 2a 20 61 6e 64 20 61 6e 20 69 6e 74 65 67  mt* and an integ
a6a0: 65 72 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 6e 75 6d  er.** column num
a6b0: 62 65 72 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f  ber..*/.const vo
a6c0: 69 64 20 2a 73 71 6c 69 74 65 33 5f 76 61 6c 75  id *sqlite3_valu
a6d0: 65 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 76  e_blob(sqlite3_v
a6e0: 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69  alue*);.int sqli
a6f0: 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28  te3_value_bytes(
a700: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
a710: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  .int sqlite3_val
a720: 75 65 5f 62 79 74 65 73 31 36 28 73 71 6c 69 74  ue_bytes16(sqlit
a730: 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 64 6f 75 62  e3_value*);.doub
a740: 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  le sqlite3_value
a750: 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f  _double(sqlite3_
a760: 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c  value*);.int sql
a770: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 73  ite3_value_int(s
a780: 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a  qlite3_value*);.
a790: 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c  sqlite_int64 sql
a7a0: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
a7b0: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29  (sqlite3_value*)
a7c0: 3b 0a 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64  ;.const unsigned
a7d0: 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 76   char *sqlite3_v
a7e0: 61 6c 75 65 5f 74 65 78 74 28 73 71 6c 69 74 65  alue_text(sqlite
a7f0: 33 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74  3_value*);.const
a800: 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 76   void *sqlite3_v
a810: 61 6c 75 65 5f 74 65 78 74 31 36 28 73 71 6c 69  alue_text16(sqli
a820: 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e  te3_value*);.con
a830: 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  st void *sqlite3
a840: 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 6c 65 28  _value_text16le(
a850: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
a860: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
a870: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
a880: 36 62 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  6be(sqlite3_valu
a890: 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  e*);.int sqlite3
a8a0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 73 71 6c 69  _value_type(sqli
a8b0: 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 0a 2f 2a  te3_value*);../*
a8c0: 0a 2a 2a 20 41 67 67 72 65 67 61 74 65 20 66 75  .** Aggregate fu
a8d0: 6e 63 74 69 6f 6e 73 20 75 73 65 20 74 68 65 20  nctions use the 
a8e0: 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69 6e  following routin
a8f0: 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 0a 2a 2a  e to allocate.**
a900: 20 61 20 73 74 72 75 63 74 75 72 65 20 66 6f 72   a structure for
a910: 20 73 74 6f 72 69 6e 67 20 74 68 65 69 72 20 73   storing their s
a920: 74 61 74 65 2e 20 20 54 68 65 20 66 69 72 73 74  tate.  The first
a930: 20 74 69 6d 65 20 74 68 69 73 20 72 6f 75 74 69   time this routi
a940: 6e 65 0a 2a 2a 20 69 73 20 63 61 6c 6c 65 64 20  ne.** is called 
a950: 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72  for a particular
a960: 20 61 67 67 72 65 67 61 74 65 2c 20 61 20 6e 65   aggregate, a ne
a970: 77 20 73 74 72 75 63 74 75 72 65 20 6f 66 20 73  w structure of s
a980: 69 7a 65 20 6e 42 79 74 65 73 0a 2a 2a 20 69 73  ize nBytes.** is
a990: 20 61 6c 6c 6f 63 61 74 65 64 2c 20 7a 65 72 6f   allocated, zero
a9a0: 65 64 2c 20 61 6e 64 20 72 65 74 75 72 6e 65 64  ed, and returned
a9b0: 2e 20 20 4f 6e 20 73 75 62 73 65 71 75 65 6e 74  .  On subsequent
a9c0: 20 63 61 6c 6c 73 20 28 66 6f 72 20 74 68 65 0a   calls (for the.
a9d0: 2a 2a 20 73 61 6d 65 20 61 67 67 72 65 67 61 74  ** same aggregat
a9e0: 65 20 69 6e 73 74 61 6e 63 65 29 20 74 68 65 20  e instance) the 
a9f0: 73 61 6d 65 20 62 75 66 66 65 72 20 69 73 20 72  same buffer is r
aa00: 65 74 75 72 6e 65 64 2e 20 20 54 68 65 20 69 6d  eturned.  The im
aa10: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20  plementation.** 
aa20: 6f 66 20 74 68 65 20 61 67 67 72 65 67 61 74 65  of the aggregate
aa30: 20 63 61 6e 20 75 73 65 20 74 68 65 20 72 65 74   can use the ret
aa40: 75 72 6e 65 64 20 62 75 66 66 65 72 20 74 6f 20  urned buffer to 
aa50: 61 63 63 75 6d 75 6c 61 74 65 20 64 61 74 61 2e  accumulate data.
aa60: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 62 75 66 66 65  .**.** The buffe
aa70: 72 20 61 6c 6c 6f 63 61 74 65 64 20 69 73 20 66  r allocated is f
aa80: 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  reed automatical
aa90: 6c 79 20 62 79 20 53 51 4c 69 74 65 2e 0a 2a 2f  ly by SQLite..*/
aaa0: 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 61  .void *sqlite3_a
aab0: 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74  ggregate_context
aac0: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
aad0: 2a 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0a  *, int nBytes);.
aae0: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 70 55 73 65 72  ./*.** The pUser
aaf0: 44 61 74 61 20 70 61 72 61 6d 65 74 65 72 20 74  Data parameter t
ab00: 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72  o the sqlite3_cr
ab10: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 20  eate_function() 
ab20: 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  and.** sqlite3_c
ab30: 72 65 61 74 65 5f 61 67 67 72 65 67 61 74 65 28  reate_aggregate(
ab40: 29 20 72 6f 75 74 69 6e 65 73 20 75 73 65 64 20  ) routines used 
ab50: 74 6f 20 72 65 67 69 73 74 65 72 20 75 73 65 72  to register user
ab60: 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 69 73   functions.** is
ab70: 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68   available to th
ab80: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
ab90: 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   of the function
aba0: 20 75 73 69 6e 67 20 74 68 69 73 0a 2a 2a 20 63   using this.** c
abb0: 61 6c 6c 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71  all..*/.void *sq
abc0: 6c 69 74 65 33 5f 75 73 65 72 5f 64 61 74 61 28  lite3_user_data(
abd0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
abe0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f  );../*.** The fo
abf0: 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 66 75 6e 63  llowing two func
ac00: 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 75 73 65  tions may be use
ac10: 64 20 62 79 20 73 63 61 6c 61 72 20 75 73 65 72  d by scalar user
ac20: 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 0a 2a 2a   functions to.**
ac30: 20 61 73 73 6f 63 69 61 74 65 20 6d 65 74 61 2d   associate meta-
ac40: 64 61 74 61 20 77 69 74 68 20 61 72 67 75 6d 65  data with argume
ac50: 6e 74 20 76 61 6c 75 65 73 2e 20 49 66 20 74 68  nt values. If th
ac60: 65 20 73 61 6d 65 20 76 61 6c 75 65 20 69 73 20  e same value is 
ac70: 70 61 73 73 65 64 20 74 6f 0a 2a 2a 20 6d 75 6c  passed to.** mul
ac80: 74 69 70 6c 65 20 69 6e 76 6f 63 61 74 69 6f 6e  tiple invocation
ac90: 73 20 6f 66 20 74 68 65 20 75 73 65 72 2d 66 75  s of the user-fu
aca0: 6e 63 74 69 6f 6e 20 64 75 72 69 6e 67 20 71 75  nction during qu
acb0: 65 72 79 20 65 78 65 63 75 74 69 6f 6e 2c 20 75  ery execution, u
acc0: 6e 64 65 72 0a 2a 2a 20 73 6f 6d 65 20 63 69 72  nder.** some cir
acd0: 63 75 6d 73 74 61 6e 63 65 73 20 74 68 65 20 61  cumstances the a
ace0: 73 73 6f 63 69 61 74 65 64 20 6d 65 74 61 2d 64  ssociated meta-d
acf0: 61 74 61 20 6d 61 79 20 62 65 20 70 72 65 73 65  ata may be prese
ad00: 72 76 65 64 2e 20 54 68 69 73 20 6d 61 79 0a 2a  rved. This may.*
ad10: 2a 20 62 65 20 75 73 65 64 2c 20 66 6f 72 20 65  * be used, for e
ad20: 78 61 6d 70 6c 65 2c 20 74 6f 20 61 64 64 20 61  xample, to add a
ad30: 20 72 65 67 75 6c 61 72 2d 65 78 70 72 65 73 73   regular-express
ad40: 69 6f 6e 20 6d 61 74 63 68 69 6e 67 20 73 63 61  ion matching sca
ad50: 6c 61 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 2e  lar.** function.
ad60: 20 54 68 65 20 63 6f 6d 70 69 6c 65 64 20 76 65   The compiled ve
ad70: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 67  rsion of the reg
ad80: 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20  ular expression 
ad90: 69 73 20 73 74 6f 72 65 64 20 61 73 0a 2a 2a 20  is stored as.** 
ada0: 6d 65 74 61 2d 64 61 74 61 20 61 73 73 6f 63 69  meta-data associ
adb0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 53 51  ated with the SQ
adc0: 4c 20 76 61 6c 75 65 20 70 61 73 73 65 64 20 61  L value passed a
add0: 73 20 74 68 65 20 72 65 67 75 6c 61 72 20 65 78  s the regular ex
ade0: 70 72 65 73 73 69 6f 6e 0a 2a 2a 20 70 61 74 74  pression.** patt
adf0: 65 72 6e 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 69  ern..**.** Calli
ae00: 6e 67 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61  ng sqlite3_get_a
ae10: 75 78 64 61 74 61 28 29 20 72 65 74 75 72 6e 73  uxdata() returns
ae20: 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
ae30: 65 20 6d 65 74 61 20 64 61 74 61 0a 2a 2a 20 61  e meta data.** a
ae40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
ae50: 68 65 20 4e 74 68 20 61 72 67 75 6d 65 6e 74 20  he Nth argument 
ae60: 76 61 6c 75 65 20 74 6f 20 74 68 65 20 63 75 72  value to the cur
ae70: 72 65 6e 74 20 75 73 65 72 20 66 75 6e 63 74 69  rent user functi
ae80: 6f 6e 0a 2a 2a 20 63 61 6c 6c 2c 20 77 68 65 72  on.** call, wher
ae90: 65 20 4e 20 69 73 20 74 68 65 20 73 65 63 6f 6e  e N is the secon
aea0: 64 20 70 61 72 61 6d 65 74 65 72 2e 20 49 66 20  d parameter. If 
aeb0: 6e 6f 20 6d 65 74 61 2d 64 61 74 61 20 68 61 73  no meta-data has
aec0: 20 62 65 65 6e 20 73 65 74 20 66 6f 72 0a 2a 2a   been set for.**
aed0: 20 74 68 61 74 20 76 61 6c 75 65 2c 20 74 68 65   that value, the
aee0: 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  n a NULL pointer
aef0: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a   is returned..**
af00: 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
af10: 73 65 74 5f 61 75 78 64 61 74 61 28 29 20 69 73  set_auxdata() is
af20: 20 75 73 65 64 20 74 6f 20 61 73 73 6f 63 69 61   used to associa
af30: 74 65 20 6d 65 74 61 20 64 61 74 61 20 77 69 74  te meta data wit
af40: 68 20 61 20 75 73 65 72 0a 2a 2a 20 66 75 6e 63  h a user.** func
af50: 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 2e 20 54  tion argument. T
af60: 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  he third paramet
af70: 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  er is a pointer 
af80: 74 6f 20 74 68 65 20 6d 65 74 61 20 64 61 74 61  to the meta data
af90: 0a 2a 2a 20 74 6f 20 62 65 20 61 73 73 6f 63 69  .** to be associ
afa0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 4e 74  ated with the Nt
afb0: 68 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20  h user function 
afc0: 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 2e 20  argument value. 
afd0: 54 68 65 20 66 6f 75 72 74 68 0a 2a 2a 20 70 61  The fourth.** pa
afe0: 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65  rameter specifie
aff0: 73 20 61 20 27 64 65 6c 65 74 65 20 66 75 6e 63  s a 'delete func
b000: 74 69 6f 6e 27 20 74 68 61 74 20 77 69 6c 6c 20  tion' that will 
b010: 62 65 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65  be called on the
b020: 20 6d 65 74 61 0a 2a 2a 20 64 61 74 61 20 70 6f   meta.** data po
b030: 69 6e 74 65 72 20 74 6f 20 72 65 6c 65 61 73 65  inter to release
b040: 20 69 74 20 77 68 65 6e 20 69 74 20 69 73 20 6e   it when it is n
b050: 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65  o longer require
b060: 64 2e 20 49 66 20 74 68 65 20 64 65 6c 65 74 65  d. If the delete
b070: 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69  .** function poi
b080: 6e 74 65 72 20 69 73 20 4e 55 4c 4c 2c 20 69 74  nter is NULL, it
b090: 20 69 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 2e   is not invoked.
b0a0: 0a 2a 2a 0a 2a 2a 20 49 6e 20 70 72 61 63 74 69  .**.** In practi
b0b0: 63 65 2c 20 6d 65 74 61 2d 64 61 74 61 20 69 73  ce, meta-data is
b0c0: 20 70 72 65 73 65 72 76 65 64 20 62 65 74 77 65   preserved betwe
b0d0: 65 6e 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c  en function call
b0e0: 73 20 66 6f 72 0a 2a 2a 20 65 78 70 72 65 73 73  s for.** express
b0f0: 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 63 6f  ions that are co
b100: 6e 73 74 61 6e 74 20 61 74 20 63 6f 6d 70 69 6c  nstant at compil
b110: 65 20 74 69 6d 65 2e 20 54 68 69 73 20 69 6e 63  e time. This inc
b120: 6c 75 64 65 73 20 6c 69 74 65 72 61 6c 0a 2a 2a  ludes literal.**
b130: 20 76 61 6c 75 65 73 20 61 6e 64 20 53 51 4c 20   values and SQL 
b140: 76 61 72 69 61 62 6c 65 73 2e 0a 2a 2f 0a 76 6f  variables..*/.vo
b150: 69 64 20 2a 73 71 6c 69 74 65 33 5f 67 65 74 5f  id *sqlite3_get_
b160: 61 75 78 64 61 74 61 28 73 71 6c 69 74 65 33 5f  auxdata(sqlite3_
b170: 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 29 3b 0a  context*, int);.
b180: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 73 65 74  void sqlite3_set
b190: 5f 61 75 78 64 61 74 61 28 73 71 6c 69 74 65 33  _auxdata(sqlite3
b1a0: 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 2c 20  _context*, int, 
b1b0: 76 6f 69 64 2a 2c 20 76 6f 69 64 20 28 2a 29 28  void*, void (*)(
b1c0: 76 6f 69 64 2a 29 29 3b 0a 0a 0a 2f 2a 0a 2a 2a  void*));.../*.**
b1d0: 20 54 68 65 73 65 20 61 72 65 20 73 70 65 63 69   These are speci
b1e0: 61 6c 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  al value for the
b1f0: 20 64 65 73 74 72 75 63 74 6f 72 20 74 68 61 74   destructor that
b200: 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 73   is passed in as
b210: 20 74 68 65 0a 2a 2a 20 66 69 6e 61 6c 20 61 72   the.** final ar
b220: 67 75 6d 65 6e 74 20 74 6f 20 72 6f 75 74 69 6e  gument to routin
b230: 65 73 20 6c 69 6b 65 20 73 71 6c 69 74 65 33 5f  es like sqlite3_
b240: 72 65 73 75 6c 74 5f 62 6c 6f 62 28 29 2e 20 20  result_blob().  
b250: 49 66 20 74 68 65 20 64 65 73 74 72 75 63 74 6f  If the destructo
b260: 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73  r.** argument is
b270: 20 53 51 4c 49 54 45 5f 53 54 41 54 49 43 2c 20   SQLITE_STATIC, 
b280: 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  it means that th
b290: 65 20 63 6f 6e 74 65 6e 74 20 70 6f 69 6e 74 65  e content pointe
b2a0: 72 20 69 73 20 63 6f 6e 73 74 61 6e 74 0a 2a 2a  r is constant.**
b2b0: 20 61 6e 64 20 77 69 6c 6c 20 6e 65 76 65 72 20   and will never 
b2c0: 63 68 61 6e 67 65 2e 20 20 49 74 20 64 6f 65 73  change.  It does
b2d0: 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 62 65 20   not need to be 
b2e0: 64 65 73 74 72 6f 79 65 64 2e 20 20 54 68 65 20  destroyed.  The 
b2f0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 54 52 41 4e 53  .** SQLITE_TRANS
b300: 49 45 4e 54 20 76 61 6c 75 65 20 6d 65 61 6e 73  IENT value means
b310: 20 74 68 61 74 20 74 68 65 20 63 6f 6e 74 65 6e   that the conten
b320: 74 20 77 69 6c 6c 20 6c 69 6b 65 6c 79 20 63 68  t will likely ch
b330: 61 6e 67 65 20 69 6e 0a 2a 2a 20 74 68 65 20 6e  ange in.** the n
b340: 65 61 72 20 66 75 74 75 72 65 20 61 6e 64 20 74  ear future and t
b350: 68 61 74 20 53 51 4c 69 74 65 20 73 68 6f 75 6c  hat SQLite shoul
b360: 64 20 6d 61 6b 65 20 69 74 73 20 6f 77 6e 20 70  d make its own p
b370: 72 69 76 61 74 65 20 63 6f 70 79 20 6f 66 0a 2a  rivate copy of.*
b380: 2a 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 62 65  * the content be
b390: 66 6f 72 65 20 72 65 74 75 72 6e 69 6e 67 2e 0a  fore returning..
b3a0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b3b0: 45 5f 53 54 41 54 49 43 20 20 20 20 20 20 28 28  E_STATIC      ((
b3c0: 76 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 29 29  void(*)(void *))
b3d0: 30 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  0).#define SQLIT
b3e0: 45 5f 54 52 41 4e 53 49 45 4e 54 20 20 20 28 28  E_TRANSIENT   ((
b3f0: 76 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 29 29  void(*)(void *))
b400: 2d 31 29 0a 0a 2f 2a 0a 2a 2a 20 55 73 65 72 2d  -1)../*.** User-
b410: 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
b420: 73 20 69 6e 76 6f 6b 65 20 74 68 65 20 66 6f 6c  s invoke the fol
b430: 6c 6f 77 69 6e 67 20 72 6f 75 74 69 6e 65 73 20  lowing routines 
b440: 69 6e 20 6f 72 64 65 72 20 74 6f 0a 2a 2a 20 73  in order to.** s
b450: 65 74 20 74 68 65 69 72 20 72 65 74 75 72 6e 20  et their return 
b460: 76 61 6c 75 65 2e 0a 2a 2f 0a 76 6f 69 64 20 73  value..*/.void s
b470: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c  qlite3_result_bl
b480: 6f 62 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  ob(sqlite3_conte
b490: 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a  xt*, const void*
b4a0: 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76  , int, void(*)(v
b4b0: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
b4c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
b4d0: 6c 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  le(sqlite3_conte
b4e0: 78 74 2a 2c 20 64 6f 75 62 6c 65 29 3b 0a 76 6f  xt*, double);.vo
b4f0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b500: 74 5f 65 72 72 6f 72 28 73 71 6c 69 74 65 33 5f  t_error(sqlite3_
b510: 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20  context*, const 
b520: 63 68 61 72 2a 2c 20 69 6e 74 29 3b 0a 76 6f 69  char*, int);.voi
b530: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
b540: 5f 65 72 72 6f 72 31 36 28 73 71 6c 69 74 65 33  _error16(sqlite3
b550: 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74  _context*, const
b560: 20 76 6f 69 64 2a 2c 20 69 6e 74 29 3b 0a 76 6f   void*, int);.vo
b570: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b580: 74 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 63 6f  t_int(sqlite3_co
b590: 6e 74 65 78 74 2a 2c 20 69 6e 74 29 3b 0a 76 6f  ntext*, int);.vo
b5a0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b5b0: 74 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33 5f  t_int64(sqlite3_
b5c0: 63 6f 6e 74 65 78 74 2a 2c 20 73 71 6c 69 74 65  context*, sqlite
b5d0: 5f 69 6e 74 36 34 29 3b 0a 76 6f 69 64 20 73 71  _int64);.void sq
b5e0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c  lite3_result_nul
b5f0: 6c 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  l(sqlite3_contex
b600: 74 2a 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65  t*);.void sqlite
b610: 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 73 71  3_result_text(sq
b620: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20  lite3_context*, 
b630: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74  const char*, int
b640: 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29  , void(*)(void*)
b650: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
b660: 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 73 71  result_text16(sq
b670: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20  lite3_context*, 
b680: 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74  const void*, int
b690: 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29  , void(*)(void*)
b6a0: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
b6b0: 72 65 73 75 6c 74 5f 74 65 78 74 31 36 6c 65 28  result_text16le(
b6c0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
b6d0: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69  , const void*, i
b6e0: 6e 74 2c 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  nt,void(*)(void*
b6f0: 29 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33  ));.void sqlite3
b700: 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 62 65  _result_text16be
b710: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
b720: 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20  *, const void*, 
b730: 69 6e 74 2c 76 6f 69 64 28 2a 29 28 76 6f 69 64  int,void(*)(void
b740: 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65  *));.void sqlite
b750: 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 73  3_result_value(s
b760: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c  qlite3_context*,
b770: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29   sqlite3_value*)
b780: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 61  ;../*.** These a
b790: 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76  re the allowed v
b7a0: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 65 54  alues for the eT
b7b0: 65 78 74 52 65 70 20 61 72 67 75 6d 65 6e 74 20  extRep argument 
b7c0: 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72  to.** sqlite3_cr
b7d0: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 20 61  eate_collation a
b7e0: 6e 64 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  nd sqlite3_creat
b7f0: 65 5f 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 23  e_function..*/.#
b800: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 55 54  define SQLITE_UT
b810: 46 38 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20  F8    1.#define 
b820: 53 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 20 32  SQLITE_UTF16LE 2
b830: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b840: 55 54 46 31 36 42 45 20 33 0a 23 64 65 66 69 6e  UTF16BE 3.#defin
b850: 65 20 53 51 4c 49 54 45 5f 55 54 46 31 36 20 20  e SQLITE_UTF16  
b860: 20 34 20 20 20 20 2f 2a 20 55 73 65 20 6e 61 74   4    /* Use nat
b870: 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 20 2a  ive byte order *
b880: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b890: 5f 41 4e 59 20 20 20 20 20 35 20 20 20 20 2f 2a  _ANY     5    /*
b8a0: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
b8b0: 66 75 6e 63 74 69 6f 6e 20 6f 6e 6c 79 20 2a 2f  function only */
b8c0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 74 77  ../*.** These tw
b8d0: 6f 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  o functions are 
b8e0: 75 73 65 64 20 74 6f 20 61 64 64 20 6e 65 77 20  used to add new 
b8f0: 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
b900: 63 65 73 20 74 6f 20 74 68 65 0a 2a 2a 20 73 71  ces to the.** sq
b910: 6c 69 74 65 33 20 68 61 6e 64 6c 65 20 73 70 65  lite3 handle spe
b920: 63 69 66 69 65 64 20 61 73 20 74 68 65 20 66 69  cified as the fi
b930: 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 20 0a 2a  rst argument. .*
b940: 2a 0a 2a 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66  *.** The name of
b950: 20 74 68 65 20 6e 65 77 20 63 6f 6c 6c 61 74 69   the new collati
b960: 6f 6e 20 73 65 71 75 65 6e 63 65 20 69 73 20 73  on sequence is s
b970: 70 65 63 69 66 69 65 64 20 61 73 20 61 20 55 54  pecified as a UT
b980: 46 2d 38 20 73 74 72 69 6e 67 0a 2a 2a 20 66 6f  F-8 string.** fo
b990: 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  r sqlite3_create
b9a0: 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29 20 61 6e 64  _collation() and
b9b0: 20 61 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67   a UTF-16 string
b9c0: 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   for.** sqlite3_
b9d0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
b9e0: 31 36 28 29 2e 20 49 6e 20 62 6f 74 68 20 63 61  16(). In both ca
b9f0: 73 65 73 20 74 68 65 20 6e 61 6d 65 20 69 73 20  ses the name is 
ba00: 70 61 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a  passed as the.**
ba10: 20 73 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e   second function
ba20: 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a   argument..**.**
ba30: 20 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d   The third argum
ba40: 65 6e 74 20 6d 75 73 74 20 62 65 20 6f 6e 65 20  ent must be one 
ba50: 6f 66 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73  of the constants
ba60: 20 53 51 4c 49 54 45 5f 55 54 46 38 2c 0a 2a 2a   SQLITE_UTF8,.**
ba70: 20 53 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 20   SQLITE_UTF16LE 
ba80: 6f 72 20 53 51 4c 49 54 45 5f 55 54 46 31 36 42  or SQLITE_UTF16B
ba90: 45 2c 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68  E, indicating th
baa0: 61 74 20 74 68 65 20 75 73 65 72 2d 73 75 70 70  at the user-supp
bab0: 6c 69 65 64 0a 2a 2a 20 72 6f 75 74 69 6e 65 20  lied.** routine 
bac0: 65 78 70 65 63 74 73 20 74 6f 20 62 65 20 70 61  expects to be pa
bad0: 73 73 65 64 20 70 6f 69 6e 74 65 72 73 20 74 6f  ssed pointers to
bae0: 20 73 74 72 69 6e 67 73 20 65 6e 63 6f 64 65 64   strings encoded
baf0: 20 75 73 69 6e 67 20 55 54 46 2d 38 2c 0a 2a 2a   using UTF-8,.**
bb00: 20 55 54 46 2d 31 36 20 6c 69 74 74 6c 65 2d 65   UTF-16 little-e
bb10: 6e 64 69 61 6e 20 6f 72 20 55 54 46 2d 31 36 20  ndian or UTF-16 
bb20: 62 69 67 2d 65 6e 64 69 61 6e 20 72 65 73 70 65  big-endian respe
bb30: 63 74 69 76 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41  ctively..**.** A
bb40: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
bb50: 75 73 65 72 20 73 75 70 70 6c 69 65 64 20 72 6f  user supplied ro
bb60: 75 74 69 6e 65 20 6d 75 73 74 20 62 65 20 70 61  utine must be pa
bb70: 73 73 65 64 20 61 73 20 74 68 65 20 66 69 66 74  ssed as the fift
bb80: 68 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 2e 20 49  h.** argument. I
bb90: 66 20 69 74 20 69 73 20 4e 55 4c 4c 2c 20 74 68  f it is NULL, th
bba0: 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  is is the same a
bbb0: 73 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63  s deleting the c
bbc0: 6f 6c 6c 61 74 69 6f 6e 0a 2a 2a 20 73 65 71 75  ollation.** sequ
bbd0: 65 6e 63 65 20 28 73 6f 20 74 68 61 74 20 53 51  ence (so that SQ
bbe0: 4c 69 74 65 20 63 61 6e 6e 6f 74 20 63 61 6c 6c  Lite cannot call
bbf0: 20 69 74 20 61 6e 79 6d 6f 72 65 29 2e 20 45 61   it anymore). Ea
bc00: 63 68 20 74 69 6d 65 20 74 68 65 20 75 73 65 72  ch time the user
bc10: 0a 2a 2a 20 73 75 70 70 6c 69 65 64 20 66 75 6e  .** supplied fun
bc20: 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
bc30: 2c 20 69 74 20 69 73 20 70 61 73 73 65 64 20 61  , it is passed a
bc40: 20 63 6f 70 79 20 6f 66 20 74 68 65 20 76 6f 69   copy of the voi
bc50: 64 2a 20 70 61 73 73 65 64 20 61 73 0a 2a 2a 20  d* passed as.** 
bc60: 74 68 65 20 66 6f 75 72 74 68 20 61 72 67 75 6d  the fourth argum
bc70: 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63  ent to sqlite3_c
bc80: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
bc90: 29 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ) or.** sqlite3_
bca0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
bcb0: 31 36 28 29 20 61 73 20 69 74 73 20 66 69 72 73  16() as its firs
bcc0: 74 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a  t parameter..**.
bcd0: 2a 2a 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67  ** The remaining
bce0: 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
bcf0: 65 20 75 73 65 72 2d 73 75 70 70 6c 69 65 64 20  e user-supplied 
bd00: 72 6f 75 74 69 6e 65 20 61 72 65 20 74 77 6f 20  routine are two 
bd10: 73 74 72 69 6e 67 73 2c 0a 2a 2a 20 65 61 63 68  strings,.** each
bd20: 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20   represented by 
bd30: 61 20 5b 6c 65 6e 67 74 68 2c 20 64 61 74 61 5d  a [length, data]
bd40: 20 70 61 69 72 20 61 6e 64 20 65 6e 63 6f 64 65   pair and encode
bd50: 64 20 69 6e 20 74 68 65 20 65 6e 63 6f 64 69 6e  d in the encodin
bd60: 67 0a 2a 2a 20 74 68 61 74 20 77 61 73 20 70 61  g.** that was pa
bd70: 73 73 65 64 20 61 73 20 74 68 65 20 74 68 69 72  ssed as the thir
bd80: 64 20 61 72 67 75 6d 65 6e 74 20 77 68 65 6e 20  d argument when 
bd90: 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  the collation se
bda0: 71 75 65 6e 63 65 20 77 61 73 0a 2a 2a 20 72 65  quence was.** re
bdb0: 67 69 73 74 65 72 65 64 2e 20 54 68 65 20 75 73  gistered. The us
bdc0: 65 72 20 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c  er routine shoul
bdd0: 64 20 72 65 74 75 72 6e 20 6e 65 67 61 74 69 76  d return negativ
bde0: 65 2c 20 7a 65 72 6f 20 6f 72 20 70 6f 73 69 74  e, zero or posit
bdf0: 69 76 65 20 69 66 0a 2a 2a 20 74 68 65 20 66 69  ive if.** the fi
be00: 72 73 74 20 73 74 72 69 6e 67 20 69 73 20 6c 65  rst string is le
be10: 73 73 20 74 68 61 6e 2c 20 65 71 75 61 6c 20 74  ss than, equal t
be20: 6f 2c 20 6f 72 20 67 72 65 61 74 65 72 20 74 68  o, or greater th
be30: 61 6e 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a  an the second.**
be40: 20 73 74 72 69 6e 67 2e 20 69 2e 65 2e 20 28 53   string. i.e. (S
be50: 54 52 49 4e 47 31 20 2d 20 53 54 52 49 4e 47 32  TRING1 - STRING2
be60: 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  )..*/.int sqlite
be70: 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
be80: 6f 6e 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20  on(.  sqlite3*, 
be90: 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
bea0: 4e 61 6d 65 2c 20 0a 20 20 69 6e 74 20 65 54 65  Name, .  int eTe
beb0: 78 74 52 65 70 2c 20 0a 20 20 76 6f 69 64 2a 2c  xtRep, .  void*,
bec0: 0a 20 20 69 6e 74 28 2a 78 43 6f 6d 70 61 72 65  .  int(*xCompare
bed0: 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73  )(void*,int,cons
bee0: 74 20 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73  t void*,int,cons
bef0: 74 20 76 6f 69 64 2a 29 0a 29 3b 0a 69 6e 74 20  t void*).);.int 
bf00: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
bf10: 6f 6c 6c 61 74 69 6f 6e 31 36 28 0a 20 20 73 71  ollation16(.  sq
bf20: 6c 69 74 65 33 2a 2c 20 0a 20 20 63 6f 6e 73 74  lite3*, .  const
bf30: 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 0a 20   char *zName, . 
bf40: 20 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20 0a   int eTextRep, .
bf50: 20 20 76 6f 69 64 2a 2c 0a 20 20 69 6e 74 28 2a    void*,.  int(*
bf60: 78 43 6f 6d 70 61 72 65 29 28 76 6f 69 64 2a 2c  xCompare)(void*,
bf70: 69 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  int,const void*,
bf80: 69 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29  int,const void*)
bf90: 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 6f 20 61 76  .);../*.** To av
bfa0: 6f 69 64 20 68 61 76 69 6e 67 20 74 6f 20 72 65  oid having to re
bfb0: 67 69 73 74 65 72 20 61 6c 6c 20 63 6f 6c 6c 61  gister all colla
bfc0: 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 73 20 62  tion sequences b
bfd0: 65 66 6f 72 65 20 61 20 64 61 74 61 62 61 73 65  efore a database
bfe0: 0a 2a 2a 20 63 61 6e 20 62 65 20 75 73 65 64 2c  .** can be used,
bff0: 20 61 20 73 69 6e 67 6c 65 20 63 61 6c 6c 62 61   a single callba
c000: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20  ck function may 
c010: 62 65 20 72 65 67 69 73 74 65 72 65 64 20 77 69  be registered wi
c020: 74 68 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61  th the.** databa
c030: 73 65 20 68 61 6e 64 6c 65 20 74 6f 20 62 65 20  se handle to be 
c040: 63 61 6c 6c 65 64 20 77 68 65 6e 65 76 65 72 20  called whenever 
c050: 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 63 6f 6c  an undefined col
c060: 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
c070: 69 73 0a 2a 2a 20 72 65 71 75 69 72 65 64 2e 0a  is.** required..
c080: 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 66 75 6e  **.** If the fun
c090: 63 74 69 6f 6e 20 69 73 20 72 65 67 69 73 74 65  ction is registe
c0a0: 72 65 64 20 75 73 69 6e 67 20 74 68 65 20 73 71  red using the sq
c0b0: 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f  lite3_collation_
c0c0: 6e 65 65 64 65 64 28 29 20 41 50 49 2c 0a 2a 2a  needed() API,.**
c0d0: 20 74 68 65 6e 20 69 74 20 69 73 20 70 61 73 73   then it is pass
c0e0: 65 64 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  ed the names of 
c0f0: 75 6e 64 65 66 69 6e 65 64 20 63 6f 6c 6c 61 74  undefined collat
c100: 69 6f 6e 20 73 65 71 75 65 6e 63 65 73 20 61 73  ion sequences as
c110: 20 73 74 72 69 6e 67 73 0a 2a 2a 20 65 6e 63 6f   strings.** enco
c120: 64 65 64 20 69 6e 20 55 54 46 2d 38 2e 20 49 66  ded in UTF-8. If
c130: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69   sqlite3_collati
c140: 6f 6e 5f 6e 65 65 64 65 64 31 36 28 29 20 69 73  on_needed16() is
c150: 20 75 73 65 64 2c 20 74 68 65 20 6e 61 6d 65 73   used, the names
c160: 0a 2a 2a 20 61 72 65 20 70 61 73 73 65 64 20 61  .** are passed a
c170: 73 20 55 54 46 2d 31 36 20 69 6e 20 6d 61 63 68  s UTF-16 in mach
c180: 69 6e 65 20 6e 61 74 69 76 65 20 62 79 74 65 20  ine native byte 
c190: 6f 72 64 65 72 2e 20 41 20 63 61 6c 6c 20 74 6f  order. A call to
c1a0: 20 65 69 74 68 65 72 0a 2a 2a 20 66 75 6e 63 74   either.** funct
c1b0: 69 6f 6e 20 72 65 70 6c 61 63 65 73 20 61 6e 79  ion replaces any
c1c0: 20 65 78 69 73 74 69 6e 67 20 63 61 6c 6c 62 61   existing callba
c1d0: 63 6b 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74  ck..**.** When t
c1e0: 68 65 20 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e  he user-function
c1f0: 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65   is invoked, the
c200: 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
c210: 70 61 73 73 65 64 20 69 73 20 61 20 63 6f 70 79  passed is a copy
c220: 0a 2a 2a 20 6f 66 20 74 68 65 20 73 65 63 6f 6e  .** of the secon
c230: 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  d argument to sq
c240: 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f  lite3_collation_
c250: 6e 65 65 64 65 64 28 29 20 6f 72 0a 2a 2a 20 73  needed() or.** s
c260: 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e  qlite3_collation
c270: 5f 6e 65 65 64 65 64 31 36 28 29 2e 20 54 68 65  _needed16(). The
c280: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
c290: 20 69 73 20 74 68 65 20 64 61 74 61 62 61 73 65   is the database
c2a0: 0a 2a 2a 20 68 61 6e 64 6c 65 2e 20 54 68 65 20  .** handle. The 
c2b0: 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 69  third argument i
c2c0: 73 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f  s one of SQLITE_
c2d0: 55 54 46 38 2c 20 53 51 4c 49 54 45 5f 55 54 46  UTF8, SQLITE_UTF
c2e0: 31 36 42 45 20 6f 72 0a 2a 2a 20 53 51 4c 49 54  16BE or.** SQLIT
c2f0: 45 5f 55 54 46 31 36 4c 45 2c 20 69 6e 64 69 63  E_UTF16LE, indic
c300: 61 74 69 6e 67 20 74 68 65 20 6d 6f 73 74 20 64  ating the most d
c310: 65 73 69 72 61 62 6c 65 20 66 6f 72 6d 20 6f 66  esirable form of
c320: 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 0a 2a   the collation.*
c330: 2a 20 73 65 71 75 65 6e 63 65 20 66 75 6e 63 74  * sequence funct
c340: 69 6f 6e 20 72 65 71 75 69 72 65 64 2e 20 54 68  ion required. Th
c350: 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
c360: 65 72 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  er is the name o
c370: 66 20 74 68 65 0a 2a 2a 20 72 65 71 75 69 72 65  f the.** require
c380: 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  d collation sequ
c390: 65 6e 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ence..**.** The 
c3a0: 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
c3b0: 63 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 74  ce is returned t
c3c0: 6f 20 53 51 4c 69 74 65 20 62 79 20 61 20 63 6f  o SQLite by a co
c3d0: 6c 6c 61 74 69 6f 6e 2d 6e 65 65 64 65 64 0a 2a  llation-needed.*
c3e0: 2a 20 63 61 6c 6c 62 61 63 6b 20 75 73 69 6e 67  * callback using
c3f0: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72 65   the sqlite3_cre
c400: 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29 20  ate_collation() 
c410: 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72  or.** sqlite3_cr
c420: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36  eate_collation16
c430: 28 29 20 41 50 49 73 2c 20 64 65 73 63 72 69 62  () APIs, describ
c440: 65 64 20 61 62 6f 76 65 2e 0a 2a 2f 0a 69 6e 74  ed above..*/.int
c450: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69   sqlite3_collati
c460: 6f 6e 5f 6e 65 65 64 65 64 28 0a 20 20 73 71 6c  on_needed(.  sql
c470: 69 74 65 33 2a 2c 20 0a 20 20 76 6f 69 64 2a 2c  ite3*, .  void*,
c480: 20 0a 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64   .  void(*)(void
c490: 2a 2c 73 71 6c 69 74 65 33 2a 2c 69 6e 74 20 65  *,sqlite3*,int e
c4a0: 54 65 78 74 52 65 70 2c 63 6f 6e 73 74 20 63 68  TextRep,const ch
c4b0: 61 72 2a 29 0a 29 3b 0a 69 6e 74 20 73 71 6c 69  ar*).);.int sqli
c4c0: 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65  te3_collation_ne
c4d0: 65 64 65 64 31 36 28 0a 20 20 73 71 6c 69 74 65  eded16(.  sqlite
c4e0: 33 2a 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20  3*, .  void*,.  
c4f0: 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71  void(*)(void*,sq
c500: 6c 69 74 65 33 2a 2c 69 6e 74 20 65 54 65 78 74  lite3*,int eText
c510: 52 65 70 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29  Rep,const void*)
c520: 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69  .);../*.** Speci
c530: 66 79 20 74 68 65 20 6b 65 79 20 66 6f 72 20 61  fy the key for a
c540: 6e 20 65 6e 63 72 79 70 74 65 64 20 64 61 74 61  n encrypted data
c550: 62 61 73 65 2e 20 20 54 68 69 73 20 72 6f 75 74  base.  This rout
c560: 69 6e 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a  ine should be.**
c570: 20 63 61 6c 6c 65 64 20 72 69 67 68 74 20 61 66   called right af
c580: 74 65 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ter sqlite3_open
c590: 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f  ()..**.** The co
c5a0: 64 65 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  de to implement 
c5b0: 74 68 69 73 20 41 50 49 20 69 73 20 6e 6f 74 20  this API is not 
c5c0: 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65  available in the
c5d0: 20 70 75 62 6c 69 63 20 72 65 6c 65 61 73 65 0a   public release.
c5e0: 2a 2a 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f  ** of SQLite..*/
c5f0: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 6b 65 79  .int sqlite3_key
c600: 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
c610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c620: 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 74     /* Database t
c630: 6f 20 62 65 20 72 65 6b 65 79 65 64 20 2a 2f 0a  o be rekeyed */.
c640: 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 4b    const void *pK
c650: 65 79 2c 20 69 6e 74 20 6e 4b 65 79 20 20 20 20  ey, int nKey    
c660: 20 2f 2a 20 54 68 65 20 6b 65 79 20 2a 2f 0a 29   /* The key */.)
c670: 3b 0a 0a 2f 2a 0a 2a 2a 20 43 68 61 6e 67 65 20  ;../*.** Change 
c680: 74 68 65 20 6b 65 79 20 6f 6e 20 61 6e 20 6f 70  the key on an op
c690: 65 6e 20 64 61 74 61 62 61 73 65 2e 20 20 49 66  en database.  If
c6a0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
c6b0: 61 62 61 73 65 20 69 73 20 6e 6f 74 0a 2a 2a 20  abase is not.** 
c6c0: 65 6e 63 72 79 70 74 65 64 2c 20 74 68 69 73 20  encrypted, this 
c6d0: 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 65 6e 63  routine will enc
c6e0: 72 79 70 74 20 69 74 2e 20 20 49 66 20 70 4e 65  rypt it.  If pNe
c6f0: 77 3d 3d 30 20 6f 72 20 6e 4e 65 77 3d 3d 30 2c  w==0 or nNew==0,
c700: 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65   the.** database
c710: 20 69 73 20 64 65 63 72 79 70 74 65 64 2e 0a 2a   is decrypted..*
c720: 2a 0a 2a 2a 20 54 68 65 20 63 6f 64 65 20 74 6f  *.** The code to
c730: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 69 73 20   implement this 
c740: 41 50 49 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  API is not avail
c750: 61 62 6c 65 20 69 6e 20 74 68 65 20 70 75 62 6c  able in the publ
c760: 69 63 20 72 65 6c 65 61 73 65 0a 2a 2a 20 6f 66  ic release.** of
c770: 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20   SQLite..*/.int 
c780: 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 0a 20  sqlite3_rekey(. 
c790: 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
c7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7b0: 2f 2a 20 44 61 74 61 62 61 73 65 20 74 6f 20 62  /* Database to b
c7c0: 65 20 72 65 6b 65 79 65 64 20 2a 2f 0a 20 20 63  e rekeyed */.  c
c7d0: 6f 6e 73 74 20 76 6f 69 64 20 2a 70 4b 65 79 2c  onst void *pKey,
c7e0: 20 69 6e 74 20 6e 4b 65 79 20 20 20 20 20 2f 2a   int nKey     /*
c7f0: 20 54 68 65 20 6e 65 77 20 6b 65 79 20 2a 2f 0a   The new key */.
c800: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 6c 65 65 70 20  );../*.** Sleep 
c810: 66 6f 72 20 61 20 6c 69 74 74 6c 65 20 77 68 69  for a little whi
c820: 6c 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 70  le. The second p
c830: 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20  arameter is the 
c840: 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 6d 69 6c  number of.** mil
c850: 69 73 65 63 6f 6e 64 73 20 74 6f 20 73 6c 65 65  iseconds to slee
c860: 70 20 66 6f 72 2e 20 0a 2a 2a 0a 2a 2a 20 49 66  p for. .**.** If
c870: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
c880: 79 73 74 65 6d 20 64 6f 65 73 20 6e 6f 74 20 73  ystem does not s
c890: 75 70 70 6f 72 74 20 73 6c 65 65 70 20 72 65 71  upport sleep req
c8a0: 75 65 73 74 73 20 77 69 74 68 20 0a 2a 2a 20 6d  uests with .** m
c8b0: 69 6c 69 73 65 63 6f 6e 64 20 74 69 6d 65 20 72  ilisecond time r
c8c0: 65 73 6f 6c 75 74 69 6f 6e 2c 20 74 68 65 6e 20  esolution, then 
c8d0: 74 68 65 20 74 69 6d 65 20 77 69 6c 6c 20 62 65  the time will be
c8e0: 20 72 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 0a   rounded up to .
c8f0: 2a 2a 20 74 68 65 20 6e 65 61 72 65 73 74 20 73  ** the nearest s
c900: 65 63 6f 6e 64 2e 20 54 68 65 20 6e 75 6d 62 65  econd. The numbe
c910: 72 20 6f 66 20 6d 69 6c 69 73 65 63 6f 6e 64 73  r of miliseconds
c920: 20 6f 66 20 73 6c 65 65 70 20 61 63 74 75 61 6c   of sleep actual
c930: 6c 79 20 0a 2a 2a 20 72 65 71 75 65 73 74 65 64  ly .** requested
c940: 20 66 72 6f 6d 20 74 68 65 20 6f 70 65 72 61 74   from the operat
c950: 69 6e 67 20 73 79 73 74 65 6d 20 69 73 20 72 65  ing system is re
c960: 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a  turned..**.*****
c970: 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45 58  ** THIS IS AN EX
c980: 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41  PERIMENTAL API A
c990: 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f  ND IS SUBJECT TO
c9a0: 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a   CHANGE ******.*
c9b0: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 6c  /.int sqlite3_sl
c9c0: 65 65 70 28 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a  eep(int);../*.**
c9d0: 20 52 65 74 75 72 6e 20 54 52 55 45 20 28 6e 6f   Return TRUE (no
c9e0: 6e 2d 7a 65 72 6f 29 20 6f 66 20 74 68 65 20 73  n-zero) of the s
c9f0: 74 61 74 65 6d 65 6e 74 20 73 75 70 70 6c 69 65  tatement supplie
ca00: 64 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74  d as an argument
ca10: 20 6e 65 65 64 73 0a 2a 2a 20 74 6f 20 62 65 20   needs.** to be 
ca20: 72 65 63 6f 6d 70 69 6c 65 64 2e 20 20 41 20 73  recompiled.  A s
ca30: 74 61 74 65 6d 65 6e 74 20 6e 65 65 64 73 20 74  tatement needs t
ca40: 6f 20 62 65 20 72 65 63 6f 6d 70 69 6c 65 64 20  o be recompiled 
ca50: 77 68 65 6e 65 76 65 72 20 74 68 65 0a 2a 2a 20  whenever the.** 
ca60: 65 78 65 63 75 74 69 6f 6e 20 65 6e 76 69 72 6f  execution enviro
ca70: 6e 6d 65 6e 74 20 63 68 61 6e 67 65 73 20 69 6e  nment changes in
ca80: 20 61 20 77 61 79 20 74 68 61 74 20 77 6f 75 6c   a way that woul
ca90: 64 20 61 6c 74 65 72 20 74 68 65 20 70 72 6f 67  d alter the prog
caa0: 72 61 6d 0a 2a 2a 20 74 68 61 74 20 73 71 6c 69  ram.** that sqli
cab0: 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 67 65  te3_prepare() ge
cac0: 6e 65 72 61 74 65 73 2e 20 20 46 6f 72 20 65 78  nerates.  For ex
cad0: 61 6d 70 6c 65 2c 20 69 66 20 6e 65 77 20 66 75  ample, if new fu
cae0: 6e 63 74 69 6f 6e 73 20 6f 72 0a 2a 2a 20 63 6f  nctions or.** co
caf0: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
cb00: 73 20 61 72 65 20 72 65 67 69 73 74 65 72 65 64  s are registered
cb10: 20 6f 72 20 69 66 20 61 6e 20 61 75 74 68 6f 72   or if an author
cb20: 69 7a 65 72 20 66 75 6e 63 74 69 6f 6e 20 69 73  izer function is
cb30: 0a 2a 2a 20 61 64 64 65 64 20 6f 72 20 63 68 61  .** added or cha
cb40: 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a  nged..**.*******
cb50: 20 54 48 49 53 20 49 53 20 41 4e 20 45 58 50 45   THIS IS AN EXPE
cb60: 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41 4e 44  RIMENTAL API AND
cb70: 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f 20 43   IS SUBJECT TO C
cb80: 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a  HANGE ******.*/.
cb90: 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 70 69  int sqlite3_expi
cba0: 72 65 64 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  red(sqlite3_stmt
cbb0: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 74 68  *);../*.** If th
cbc0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67 6c 6f 62  e following glob
cbd0: 61 6c 20 76 61 72 69 61 62 6c 65 20 69 73 20 6d  al variable is m
cbe0: 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20  ade to point to 
cbf0: 61 0a 2a 2a 20 73 74 72 69 6e 67 20 77 68 69 63  a.** string whic
cc00: 68 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  h is the name of
cc10: 20 61 20 64 69 72 65 63 74 6f 72 79 2c 20 74 68   a directory, th
cc20: 65 6e 20 61 6c 6c 20 74 65 6d 70 6f 72 61 72 79  en all temporary
cc30: 20 66 69 6c 65 73 0a 2a 2a 20 63 72 65 61 74 65   files.** create
cc40: 64 20 62 79 20 53 51 4c 69 74 65 20 77 69 6c 6c  d by SQLite will
cc50: 20 62 65 20 70 6c 61 63 65 64 20 69 6e 20 74 68   be placed in th
cc60: 61 74 20 64 69 72 65 63 74 6f 72 79 2e 20 20 49  at directory.  I
cc70: 66 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 0a  f this variable.
cc80: 2a 2a 20 69 73 20 4e 55 4c 4c 20 70 6f 69 6e 74  ** is NULL point
cc90: 65 72 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  er, then SQLite 
cca0: 64 6f 65 73 20 61 20 73 65 61 72 63 68 20 66 6f  does a search fo
ccb0: 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  r an appropriate
ccc0: 20 74 65 6d 70 6f 72 61 72 79 0a 2a 2a 20 66 69   temporary.** fi
ccd0: 6c 65 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a 2a  le directory..**
cce0: 0a 2a 2a 20 4f 6e 63 65 20 73 71 6c 69 74 65 33  .** Once sqlite3
ccf0: 5f 6f 70 65 6e 28 29 20 68 61 73 20 62 65 65 6e  _open() has been
cd00: 20 63 61 6c 6c 65 64 2c 20 63 68 61 6e 67 69 6e   called, changin
cd10: 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20  g this variable 
cd20: 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 20  will invalidate 
cd30: 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 74  the.** current t
cd40: 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61 73  emporary databas
cd50: 65 2c 20 69 66 20 61 6e 79 2e 0a 2a 2f 0a 65 78  e, if any..*/.ex
cd60: 74 65 72 6e 20 63 68 61 72 20 2a 73 71 6c 69 74  tern char *sqlit
cd70: 65 33 5f 74 65 6d 70 5f 64 69 72 65 63 74 6f 72  e3_temp_director
cd80: 79 3b 0a 0a 23 69 66 64 65 66 20 5f 5f 63 70 6c  y;..#ifdef __cpl
cd90: 75 73 70 6c 75 73 0a 7d 20 20 2f 2a 20 45 6e 64  usplus.}  /* End
cda0: 20 6f 66 20 74 68 65 20 27 65 78 74 65 72 6e 20   of the 'extern 
cdb0: 22 43 22 27 20 62 6c 6f 63 6b 20 2a 2f 0a 23 65  "C"' block */.#e
cdc0: 6e 64 69 66 0a 23 65 6e 64 69 66 0a              ndif.#endif.