System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact eaa8e77f287e004e205aa26907f940373515ffa6:


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 35 20 32 30 30 35 2f 30 36  .h,v 1.5 2005/06
0200: 2f 31 33 20 32 32 3a 33 32 3a 31 39 20 72 6d 73  /13 22:32:19 rms
0210: 69 6d 70 73 6f 6e 20 45 78 70 20 24 0a 2a 2f 0a  impson Exp $.*/.
0220: 23 69 66 6e 64 65 66 20 5f 53 51 4c 49 54 45 33  #ifndef _SQLITE3
0230: 5f 48 5f 0a 23 64 65 66 69 6e 65 20 5f 53 51 4c  _H_.#define _SQL
0240: 49 54 45 33 5f 48 5f 0a 23 69 6e 63 6c 75 64 65  ITE3_H_.#include
0250: 20 3c 73 74 64 61 72 67 2e 68 3e 20 20 20 20 20   <stdarg.h>     
0260: 2f 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 74 68  /* Needed for th
0270: 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20  e definition of 
0280: 76 61 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a 0a 2a  va_list */../*.*
0290: 2a 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 63  * Make sure we c
02a0: 61 6e 20 63 61 6c 6c 20 74 68 69 73 20 73 74 75  an call this stu
02b0: 66 66 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a 2f 0a  ff from C++..*/.
02c0: 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c  #ifdef __cpluspl
02d0: 75 73 0a 65 78 74 65 72 6e 20 22 43 22 20 7b 0a  us.extern "C" {.
02e0: 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54 68  #endif../*.** Th
02f0: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
0300: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
0310: 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54  .*/.#ifdef SQLIT
0320: 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64 65  E_VERSION.# unde
0330: 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  f SQLITE_VERSION
0340: 0a 23 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20  .#endif.#define 
0350: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20 20  SQLITE_VERSION  
0360: 20 20 20 20 20 20 20 22 33 2e 32 2e 32 22 0a 0a         "3.2.2"..
0370: 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 72 6d 61 74  /*.** The format
0380: 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f 6e 20   of the version 
0390: 73 74 72 69 6e 67 20 69 73 20 22 58 2e 59 2e 5a  string is "X.Y.Z
03a0: 3c 74 72 61 69 6c 69 6e 67 20 73 74 72 69 6e 67  <trailing string
03b0: 3e 22 2c 20 77 68 65 72 65 0a 2a 2a 20 58 20 69  >", where.** X i
03c0: 73 20 74 68 65 20 6d 61 6a 6f 72 20 76 65 72 73  s the major vers
03d0: 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 59 20 69 73  ion number, Y is
03e0: 20 74 68 65 20 6d 69 6e 6f 72 20 76 65 72 73 69   the minor versi
03f0: 6f 6e 20 6e 75 6d 62 65 72 20 61 6e 64 20 5a 0a  on number and Z.
0400: 2a 2a 20 69 73 20 74 68 65 20 72 65 6c 65 61 73  ** is the releas
0410: 65 20 6e 75 6d 62 65 72 2e 20 54 68 65 20 74 72  e number. The tr
0420: 61 69 6c 69 6e 67 20 73 74 72 69 6e 67 20 69 73  ailing string is
0430: 20 6f 66 74 65 6e 20 22 61 6c 70 68 61 22 20 6f   often "alpha" o
0440: 72 20 22 62 65 74 61 22 2e 0a 2a 2a 20 46 6f 72  r "beta"..** For
0450: 20 65 78 61 6d 70 6c 65 20 22 33 2e 31 2e 31 62   example "3.1.1b
0460: 65 74 61 22 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eta"..**.** The 
0470: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e  SQLITE_VERSION_N
0480: 55 4d 42 45 52 20 69 73 20 61 6e 20 69 6e 74 65  UMBER is an inte
0490: 67 65 72 20 77 69 74 68 20 74 68 65 20 76 61 6c  ger with the val
04a0: 75 65 20 0a 2a 2a 20 28 58 2a 31 30 30 30 30 30  ue .** (X*100000
04b0: 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a 29 2e 20   + Y*1000 + Z). 
04c0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 66 6f 72  For example, for
04d0: 20 76 65 72 73 69 6f 6e 20 22 33 2e 31 2e 31 62   version "3.1.1b
04e0: 65 74 61 22 2c 20 0a 2a 2a 20 53 51 4c 49 54 45  eta", .** SQLITE
04f0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20  _VERSION_NUMBER 
0500: 69 73 20 73 65 74 20 74 6f 20 33 30 30 31 30 30  is set to 300100
0510: 31 2e 20 54 6f 20 64 65 74 65 63 74 20 69 66 20  1. To detect if 
0520: 74 68 65 79 20 61 72 65 20 75 73 69 6e 67 20 0a  they are using .
0530: 2a 2a 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 31  ** version 3.1.1
0540: 20 6f 72 20 67 72 65 61 74 65 72 20 61 74 20 63   or greater at c
0550: 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 20 70 72 6f  ompile time, pro
0560: 67 72 61 6d 73 20 6d 61 79 20 75 73 65 20 74 68  grams may use th
0570: 65 20 74 65 73 74 20 0a 2a 2a 20 28 53 51 4c 49  e test .** (SQLI
0580: 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45  TE_VERSION_NUMBE
0590: 52 3e 3d 33 30 30 31 30 30 31 29 2e 0a 2a 2f 0a  R>=3001001)..*/.
05a0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 56 45  #ifdef SQLITE_VE
05b0: 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 20 75  RSION_NUMBER.# u
05c0: 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53  ndef SQLITE_VERS
05d0: 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 65 6e 64 69  ION_NUMBER.#endi
05e0: 66 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  f.#define SQLITE
05f0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20  _VERSION_NUMBER 
0600: 33 30 30 32 30 30 32 0a 0a 2f 2a 0a 2a 2a 20 54  3002002../*.** 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 2f 0a 69 6e 74 20 73 71   NULL..*/.int sq
7530: 6c 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64  lite3_clear_bind
7540: 69 6e 67 73 28 73 71 6c 69 74 65 33 5f 73 74 6d  ings(sqlite3_stm
7550: 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  t*);../*.** Retu
7560: 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  rn the number of
7570: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
7580: 72 65 73 75 6c 74 20 73 65 74 20 72 65 74 75 72  result set retur
7590: 6e 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 69  ned by the compi
75a0: 6c 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  led.** SQL state
75b0: 6d 65 6e 74 2e 20 54 68 69 73 20 72 6f 75 74 69  ment. This routi
75c0: 6e 65 20 72 65 74 75 72 6e 73 20 30 20 69 66 20  ne returns 0 if 
75d0: 70 53 74 6d 74 20 69 73 20 61 6e 20 53 51 4c 20  pStmt is an SQL 
75e0: 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 74 68 61  statement.** tha
75f0: 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72  t does not retur
7600: 6e 20 64 61 74 61 20 28 66 6f 72 20 65 78 61 6d  n data (for exam
7610: 70 6c 65 20 61 6e 20 55 50 44 41 54 45 29 2e 0a  ple an UPDATE)..
7620: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  */.int sqlite3_c
7630: 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 73 71 6c 69  olumn_count(sqli
7640: 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29  te3_stmt *pStmt)
7650: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72  ;../*.** The fir
7660: 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  st parameter is 
7670: 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73  a compiled SQL s
7680: 74 61 74 65 6d 65 6e 74 2e 20 54 68 69 73 20 66  tatement. This f
7690: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a  unction returns.
76a0: 2a 2a 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 65  ** the column he
76b0: 61 64 69 6e 67 20 66 6f 72 20 74 68 65 20 4e 74  ading for the Nt
76c0: 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 61 74  h column of that
76d0: 20 73 74 61 74 65 6d 65 6e 74 2c 20 77 68 65 72   statement, wher
76e0: 65 20 4e 20 69 73 20 74 68 65 0a 2a 2a 20 73 65  e N is the.** se
76f0: 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20 70 61  cond function pa
7700: 72 61 6d 65 74 65 72 2e 20 20 54 68 65 20 73 74  rameter.  The st
7710: 72 69 6e 67 20 72 65 74 75 72 6e 65 64 20 69 73  ring returned is
7720: 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a 20 73 71   UTF-8 for.** sq
7730: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
7740: 65 28 29 20 61 6e 64 20 55 54 46 2d 31 36 20 66  e() and UTF-16 f
7750: 6f 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  or sqlite3_colum
7760: 6e 5f 6e 61 6d 65 31 36 28 29 2e 0a 2a 2f 0a 63  n_name16()..*/.c
7770: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
7780: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 73  e3_column_name(s
7790: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74  qlite3_stmt*,int
77a0: 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73  );.const void *s
77b0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
77c0: 6d 65 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d  me16(sqlite3_stm
77d0: 74 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  t*,int);../*.** 
77e0: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  The first parame
77f0: 74 65 72 20 69 73 20 61 20 63 6f 6d 70 69 6c 65  ter is a compile
7800: 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  d SQL statement.
7810: 20 49 66 20 74 68 69 73 20 73 74 61 74 65 6d 65   If this stateme
7820: 6e 74 0a 2a 2a 20 69 73 20 61 20 53 45 4c 45 43  nt.** is a SELEC
7830: 54 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 65  T statement, the
7840: 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74   Nth column of t
7850: 68 65 20 72 65 74 75 72 6e 65 64 20 72 65 73 75  he returned resu
7860: 6c 74 20 73 65 74 20 0a 2a 2a 20 6f 66 20 74 68  lt set .** of th
7870: 65 20 53 45 4c 45 43 54 20 69 73 20 61 20 74 61  e SELECT is a ta
7880: 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 65 6e 20  ble column then 
7890: 74 68 65 20 64 65 63 6c 61 72 65 64 20 74 79 70  the declared typ
78a0: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 0a 2a  e of the table.*
78b0: 2a 20 63 6f 6c 75 6d 6e 20 69 73 20 72 65 74 75  * column is retu
78c0: 72 6e 65 64 2e 20 49 66 20 74 68 65 20 4e 74 68  rned. If the Nth
78d0: 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72   column of the r
78e0: 65 73 75 6c 74 20 73 65 74 20 69 73 20 6e 6f 74  esult set is not
78f0: 20 61 74 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c   at table.** col
7900: 75 6d 6e 2c 20 74 68 65 6e 20 61 20 4e 55 4c 4c  umn, then a NULL
7910: 20 70 6f 69 6e 74 65 72 20 69 73 20 72 65 74 75   pointer is retu
7920: 72 6e 65 64 2e 20 54 68 65 20 72 65 74 75 72 6e  rned. The return
7930: 65 64 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77  ed string is alw
7940: 61 79 73 0a 2a 2a 20 55 54 46 2d 38 20 65 6e 63  ays.** UTF-8 enc
7950: 6f 64 65 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c  oded. For exampl
7960: 65 2c 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  e, in the databa
7970: 73 65 20 73 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a  se schema:.**.**
7980: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
7990: 28 63 31 20 56 41 52 49 41 4e 54 29 3b 0a 2a 2a  (c1 VARIANT);.**
79a0: 0a 2a 2a 20 41 6e 64 20 74 68 65 20 66 6f 6c 6c  .** And the foll
79b0: 6f 77 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20  owing statement 
79c0: 63 6f 6d 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20  compiled:.**.** 
79d0: 53 45 4c 45 43 54 20 63 31 20 2b 20 31 2c 20 30  SELECT c1 + 1, 0
79e0: 20 46 52 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20   FROM t1;.**.** 
79f0: 54 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e  Then this routin
7a00: 65 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 20 74  e would return t
7a10: 68 65 20 73 74 72 69 6e 67 20 22 56 41 52 49 41  he string "VARIA
7a20: 4e 54 22 20 66 6f 72 20 74 68 65 20 73 65 63 6f  NT" for the seco
7a30: 6e 64 0a 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c  nd.** result col
7a40: 75 6d 6e 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20  umn (i==1), and 
7a50: 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66  a NULL pointer f
7a60: 6f 72 20 74 68 65 20 66 69 72 73 74 20 72 65 73  or the first res
7a70: 75 6c 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69  ult column.** (i
7a80: 3d 3d 30 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63  ==0)..*/.const c
7a90: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  har *sqlite3_col
7aa0: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 73 71 6c  umn_decltype(sql
7ab0: 69 74 65 33 5f 73 74 6d 74 20 2a 2c 20 69 6e 74  ite3_stmt *, int
7ac0: 20 69 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20   i);../*.** The 
7ad0: 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20  first parameter 
7ae0: 69 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51  is a compiled SQ
7af0: 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 49 66 20  L statement. If 
7b00: 74 68 69 73 20 73 74 61 74 65 6d 65 6e 74 0a 2a  this statement.*
7b10: 2a 20 69 73 20 61 20 53 45 4c 45 43 54 20 73 74  * is a SELECT st
7b20: 61 74 65 6d 65 6e 74 2c 20 74 68 65 20 4e 74 68  atement, the Nth
7b30: 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72   column of the r
7b40: 65 74 75 72 6e 65 64 20 72 65 73 75 6c 74 20 73  eturned result s
7b50: 65 74 20 0a 2a 2a 20 6f 66 20 74 68 65 20 53 45  et .** of the SE
7b60: 4c 45 43 54 20 69 73 20 61 20 74 61 62 6c 65 20  LECT is a table 
7b70: 63 6f 6c 75 6d 6e 20 74 68 65 6e 20 74 68 65 20  column then the 
7b80: 64 65 63 6c 61 72 65 64 20 74 79 70 65 20 6f 66  declared type of
7b90: 20 74 68 65 20 74 61 62 6c 65 0a 2a 2a 20 63 6f   the table.** co
7ba0: 6c 75 6d 6e 20 69 73 20 72 65 74 75 72 6e 65 64  lumn is returned
7bb0: 2e 20 49 66 20 74 68 65 20 4e 74 68 20 63 6f 6c  . If the Nth col
7bc0: 75 6d 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c  umn of the resul
7bd0: 74 20 73 65 74 20 69 73 20 6e 6f 74 20 61 74 20  t set is not at 
7be0: 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c  table.** column,
7bf0: 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69   then a NULL poi
7c00: 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64  nter is returned
7c10: 2e 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73  . The returned s
7c20: 74 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 0a  tring is always.
7c30: 2a 2a 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  ** UTF-16 encode
7c40: 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  d. For example, 
7c50: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
7c60: 73 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43 52  schema:.**.** CR
7c70: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 63 31  EATE TABLE t1(c1
7c80: 20 49 4e 54 45 47 45 52 29 3b 0a 2a 2a 0a 2a 2a   INTEGER);.**.**
7c90: 20 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69   And the followi
7ca0: 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  ng statement com
7cb0: 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c  piled:.**.** SEL
7cc0: 45 43 54 20 63 31 20 2b 20 31 2c 20 30 20 46 52  ECT c1 + 1, 0 FR
7cd0: 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54 68 65  OM t1;.**.** The
7ce0: 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  n this routine w
7cf0: 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20  ould return the 
7d00: 73 74 72 69 6e 67 20 22 49 4e 54 45 47 45 52 22  string "INTEGER"
7d10: 20 66 6f 72 20 74 68 65 20 73 65 63 6f 6e 64 0a   for the second.
7d20: 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e  ** result column
7d30: 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20 61 20 4e   (i==1), and a N
7d40: 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72 20  ULL pointer for 
7d50: 74 68 65 20 66 69 72 73 74 20 72 65 73 75 6c 74  the first result
7d60: 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d 3d 30   column.** (i==0
7d70: 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69 64  )..*/.const void
7d80: 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   *sqlite3_column
7d90: 5f 64 65 63 6c 74 79 70 65 31 36 28 73 71 6c 69  _decltype16(sqli
7da0: 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a  te3_stmt*,int);.
7db0: 0a 2f 2a 20 0a 2a 2a 20 41 66 74 65 72 20 61 6e  ./* .** After an
7dc0: 20 53 51 4c 20 71 75 65 72 79 20 68 61 73 20 62   SQL query has b
7dd0: 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  een compiled wit
7de0: 68 20 61 20 63 61 6c 6c 20 74 6f 20 65 69 74 68  h a call to eith
7df0: 65 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72  er.** sqlite3_pr
7e00: 65 70 61 72 65 28 29 20 6f 72 20 73 71 6c 69 74  epare() or sqlit
7e10: 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c 20  e3_prepare16(), 
7e20: 74 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74 69  then this functi
7e30: 6f 6e 20 6d 75 73 74 20 62 65 0a 2a 2a 20 63 61  on must be.** ca
7e40: 6c 6c 65 64 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  lled one or more
7e50: 20 74 69 6d 65 73 20 74 6f 20 65 78 65 63 75 74   times to execut
7e60: 65 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2e  e the statement.
7e70: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75 72  .**.** The retur
7e80: 6e 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  n value will be 
7e90: 65 69 74 68 65 72 20 53 51 4c 49 54 45 5f 42 55  either SQLITE_BU
7ea0: 53 59 2c 20 53 51 4c 49 54 45 5f 44 4f 4e 45 2c  SY, SQLITE_DONE,
7eb0: 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 52 4f 57 2c   .** SQLITE_ROW,
7ec0: 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 2c 20 6f   SQLITE_ERROR, o
7ed0: 72 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2e  r SQLITE_MISUSE.
7ee0: 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 42 55  .**.** SQLITE_BU
7ef0: 53 59 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  SY means that th
7f00: 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
7f10: 65 20 61 74 74 65 6d 70 74 65 64 20 74 6f 20 6f  e attempted to o
7f20: 70 65 6e 0a 2a 2a 20 61 20 6c 6f 63 6b 65 64 20  pen.** a locked 
7f30: 64 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65  database and the
7f40: 72 65 20 69 73 20 6e 6f 20 62 75 73 79 20 63 61  re is no busy ca
7f50: 6c 6c 62 61 63 6b 20 72 65 67 69 73 74 65 72 65  llback registere
7f60: 64 2e 0a 2a 2a 20 43 61 6c 6c 20 73 71 6c 69 74  d..** Call sqlit
7f70: 65 33 5f 73 74 65 70 28 29 20 61 67 61 69 6e 20  e3_step() again 
7f80: 74 6f 20 72 65 74 72 79 20 74 68 65 20 6f 70 65  to retry the ope
7f90: 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f  n..**.** SQLITE_
7fa0: 44 4f 4e 45 20 6d 65 61 6e 73 20 74 68 61 74 20  DONE means that 
7fb0: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68 61  the statement ha
7fc0: 73 20 66 69 6e 69 73 68 65 64 20 65 78 65 63 75  s finished execu
7fd0: 74 69 6e 67 0a 2a 2a 20 73 75 63 63 65 73 73 66  ting.** successf
7fe0: 75 6c 6c 79 2e 20 20 73 71 6c 69 74 65 33 5f 73  ully.  sqlite3_s
7ff0: 74 65 70 28 29 20 73 68 6f 75 6c 64 20 6e 6f 74  tep() should not
8000: 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e   be called again
8010: 20 6f 6e 20 74 68 69 73 20 76 69 72 74 75 61 6c   on this virtual
8020: 0a 2a 2a 20 6d 61 63 68 69 6e 65 2e 0a 2a 2a 0a  .** machine..**.
8030: 2a 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73 74  ** If the SQL st
8040: 61 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 78  atement being ex
8050: 65 63 75 74 65 64 20 72 65 74 75 72 6e 73 20 61  ecuted returns a
8060: 6e 79 20 64 61 74 61 2c 20 74 68 65 6e 20 0a 2a  ny data, then .*
8070: 2a 20 53 51 4c 49 54 45 5f 52 4f 57 20 69 73 20  * SQLITE_ROW is 
8080: 72 65 74 75 72 6e 65 64 20 65 61 63 68 20 74 69  returned each ti
8090: 6d 65 20 61 20 6e 65 77 20 72 6f 77 20 6f 66 20  me a new row of 
80a0: 64 61 74 61 20 69 73 20 72 65 61 64 79 0a 2a 2a  data is ready.**
80b0: 20 66 6f 72 20 70 72 6f 63 65 73 73 69 6e 67 20   for processing 
80c0: 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 20 54  by the caller. T
80d0: 68 65 20 76 61 6c 75 65 73 20 6d 61 79 20 62 65  he values may be
80e0: 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 0a   accessed using.
80f0: 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  ** the sqlite3_c
8100: 6f 6c 75 6d 6e 5f 2a 28 29 20 66 75 6e 63 74 69  olumn_*() functi
8110: 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20 62 65  ons described be
8120: 6c 6f 77 2e 20 73 71 6c 69 74 65 33 5f 73 74 65  low. sqlite3_ste
8130: 70 28 29 0a 2a 2a 20 69 73 20 63 61 6c 6c 65 64  p().** is called
8140: 20 61 67 61 69 6e 20 74 6f 20 72 65 74 72 69 65   again to retrie
8150: 76 65 20 74 68 65 20 6e 65 78 74 20 72 6f 77 20  ve the next row 
8160: 6f 66 20 64 61 74 61 2e 0a 2a 2a 20 0a 2a 2a 20  of data..** .** 
8170: 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 6d 65 61  SQLITE_ERROR mea
8180: 6e 73 20 74 68 61 74 20 61 20 72 75 6e 2d 74 69  ns that a run-ti
8190: 6d 65 20 65 72 72 6f 72 20 28 73 75 63 68 20 61  me error (such a
81a0: 73 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a  s a constraint.*
81b0: 2a 20 76 69 6f 6c 61 74 69 6f 6e 29 20 68 61 73  * violation) has
81c0: 20 6f 63 63 75 72 72 65 64 2e 20 20 73 71 6c 69   occurred.  sqli
81d0: 74 65 33 5f 73 74 65 70 28 29 20 73 68 6f 75 6c  te3_step() shoul
81e0: 64 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65 64 20  d not be called 
81f0: 61 67 61 69 6e 20 6f 6e 0a 2a 2a 20 74 68 65 20  again on.** the 
8200: 56 4d 2e 20 4d 6f 72 65 20 69 6e 66 6f 72 6d 61  VM. More informa
8210: 74 69 6f 6e 20 6d 61 79 20 62 65 20 66 6f 75 6e  tion may be foun
8220: 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71 6c  d by calling sql
8230: 69 74 65 33 5f 65 72 72 6d 73 67 28 29 2e 0a 2a  ite3_errmsg()..*
8240: 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 4d 49 53 55  *.** SQLITE_MISU
8250: 53 45 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  SE means that th
8260: 65 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  e this routine w
8270: 61 73 20 63 61 6c 6c 65 64 20 69 6e 61 70 70 72  as called inappr
8280: 6f 70 72 69 61 74 65 6c 79 2e 0a 2a 2a 20 50 65  opriately..** Pe
8290: 72 68 61 70 73 20 69 74 20 77 61 73 20 63 61 6c  rhaps it was cal
82a0: 6c 65 64 20 6f 6e 20 61 20 76 69 72 74 75 61 6c  led on a virtual
82b0: 20 6d 61 63 68 69 6e 65 20 74 68 61 74 20 68 61   machine that ha
82c0: 64 20 61 6c 72 65 61 64 79 20 62 65 65 6e 0a 2a  d already been.*
82d0: 2a 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 20 6f  * finalized or o
82e0: 6e 20 6f 6e 65 20 74 68 61 74 20 68 61 64 20 70  n one that had p
82f0: 72 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72 6e  reviously return
8300: 65 64 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20  ed SQLITE_ERROR 
8310: 6f 72 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 4f 4e  or.** SQLITE_DON
8320: 45 2e 20 20 4f 72 20 69 74 20 63 6f 75 6c 64 20  E.  Or it could 
8330: 62 65 20 74 68 65 20 63 61 73 65 20 74 68 65 20  be the case the 
8340: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
8350: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20  e connection.** 
8360: 69 73 20 62 65 69 6e 67 20 75 73 65 64 20 73 69  is being used si
8370: 6d 75 6c 61 74 61 6e 65 6f 75 73 6c 79 20 62 79  mulataneously by
8380: 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74 68 72   two or more thr
8390: 65 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  eads..*/.int sql
83a0: 69 74 65 33 5f 73 74 65 70 28 73 71 6c 69 74 65  ite3_step(sqlite
83b0: 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  3_stmt*);../*.**
83c0: 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62   Return the numb
83d0: 65 72 20 6f 66 20 76 61 6c 75 65 73 20 69 6e 20  er of values in 
83e0: 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20  the current row 
83f0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
8400: 74 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 61  t..**.** After a
8410: 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
8420: 5f 73 74 65 70 28 29 20 74 68 61 74 20 72 65 74  _step() that ret
8430: 75 72 6e 73 20 53 51 4c 49 54 45 5f 52 4f 57 2c  urns SQLITE_ROW,
8440: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 0a 2a 2a   this routine.**
8450: 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65   will return the
8460: 20 73 61 6d 65 20 76 61 6c 75 65 20 61 73 20 74   same value as t
8470: 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  he sqlite3_colum
8480: 6e 5f 63 6f 75 6e 74 28 29 20 66 75 6e 63 74 69  n_count() functi
8490: 6f 6e 2e 0a 2a 2a 20 41 66 74 65 72 20 73 71 6c  on..** After sql
84a0: 69 74 65 33 5f 73 74 65 70 28 29 20 68 61 73 20  ite3_step() has 
84b0: 72 65 74 75 72 6e 65 64 20 61 6e 20 53 51 4c 49  returned an SQLI
84c0: 54 45 5f 44 4f 4e 45 2c 20 53 51 4c 49 54 45 5f  TE_DONE, SQLITE_
84d0: 42 55 53 59 20 6f 72 0a 2a 2a 20 65 72 72 6f 72  BUSY or.** error
84e0: 20 63 6f 64 65 2c 20 6f 72 20 62 65 66 6f 72 65   code, or before
84f0: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
8500: 68 61 73 20 62 65 65 6e 20 63 61 6c 6c 65 64 20  has been called 
8510: 6f 6e 20 61 20 0a 2a 2a 20 63 6f 6d 70 69 6c 65  on a .** compile
8520: 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c  d SQL statement,
8530: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   this routine re
8540: 74 75 72 6e 73 20 7a 65 72 6f 2e 0a 2a 2f 0a 69  turns zero..*/.i
8550: 6e 74 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f  nt sqlite3_data_
8560: 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 73 74  count(sqlite3_st
8570: 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a  mt *pStmt);../*.
8580: 2a 2a 20 56 61 6c 75 65 73 20 61 72 65 20 73 74  ** Values are st
8590: 6f 72 65 64 20 69 6e 20 74 68 65 20 64 61 74 61  ored in the data
85a0: 62 61 73 65 20 69 6e 20 6f 6e 65 20 6f 66 20 74  base in one of t
85b0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e  he following fun
85c0: 64 61 6d 65 6e 74 61 6c 0a 2a 2a 20 74 79 70 65  damental.** type
85d0: 73 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s..*/.#define SQ
85e0: 4c 49 54 45 5f 49 4e 54 45 47 45 52 20 20 31 0a  LITE_INTEGER  1.
85f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
8600: 4c 4f 41 54 20 20 20 20 32 0a 2f 2a 20 23 64 65  LOAT    2./* #de
8610: 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 45 58 54  fine SQLITE_TEXT
8620: 20 20 33 20 20 2f 2f 20 53 65 65 20 62 65 6c 6f    3  // See belo
8630: 77 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  w */.#define SQL
8640: 49 54 45 5f 42 4c 4f 42 20 20 20 20 20 34 0a 23  ITE_BLOB     4.#
8650: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 55  define SQLITE_NU
8660: 4c 4c 20 20 20 20 20 35 0a 0a 2f 2a 0a 2a 2a 20  LL     5../*.** 
8670: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32  SQLite version 2
8680: 20 64 65 66 69 6e 65 73 20 53 51 4c 49 54 45 5f   defines SQLITE_
8690: 54 45 58 54 20 64 69 66 66 65 72 65 6e 74 6c 79  TEXT differently
86a0: 2e 20 20 54 6f 20 61 6c 6c 6f 77 20 62 6f 74 68  .  To allow both
86b0: 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 32 20 61 6e  .** version 2 an
86c0: 64 20 76 65 72 73 69 6f 6e 20 33 20 74 6f 20 62  d version 3 to b
86d0: 65 20 69 6e 63 6c 75 64 65 64 2c 20 75 6e 64 65  e included, unde
86e0: 66 69 6e 65 20 74 68 65 6d 20 62 6f 74 68 20 69  fine them both i
86f0: 66 20 61 0a 2a 2a 20 63 6f 6e 66 6c 69 63 74 20  f a.** conflict 
8700: 69 73 20 73 65 65 6e 2e 20 20 44 65 66 69 6e 65  is seen.  Define
8710: 20 53 51 4c 49 54 45 33 5f 54 45 58 54 20 74 6f   SQLITE3_TEXT to
8720: 20 62 65 20 74 68 65 20 76 65 72 73 69 6f 6e 20   be the version 
8730: 33 20 76 61 6c 75 65 2e 0a 2a 2f 0a 23 69 66 64  3 value..*/.#ifd
8740: 65 66 20 53 51 4c 49 54 45 5f 54 45 58 54 0a 23  ef SQLITE_TEXT.#
8750: 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 54 45   undef SQLITE_TE
8760: 58 54 0a 23 65 6c 73 65 0a 23 20 64 65 66 69 6e  XT.#else.# defin
8770: 65 20 53 51 4c 49 54 45 5f 54 45 58 54 20 20 20  e SQLITE_TEXT   
8780: 20 20 33 0a 23 65 6e 64 69 66 0a 23 64 65 66 69    3.#endif.#defi
8790: 6e 65 20 53 51 4c 49 54 45 33 5f 54 45 58 54 20  ne SQLITE3_TEXT 
87a0: 20 20 20 20 33 0a 0a 2f 2a 0a 2a 2a 20 54 68 65      3../*.** The
87b0: 20 6e 65 78 74 20 67 72 6f 75 70 20 6f 66 20 72   next group of r
87c0: 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73 20  outines returns 
87d0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
87e0: 74 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f  t the informatio
87f0: 6e 0a 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c 65  n.** in a single
8800: 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 63   column of the c
8810: 75 72 72 65 6e 74 20 72 65 73 75 6c 74 20 72 6f  urrent result ro
8820: 77 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 49  w of a query.  I
8830: 6e 20 65 76 65 72 79 0a 2a 2a 20 63 61 73 65 20  n every.** case 
8840: 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  the first parame
8850: 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ter is a pointer
8860: 20 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61 74   to the SQL stat
8870: 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 62 65  ement that is be
8880: 69 6e 67 0a 2a 2a 20 65 78 65 63 75 74 65 64 20  ing.** executed 
8890: 28 74 68 65 20 73 71 6c 69 74 65 5f 73 74 6d 74  (the sqlite_stmt
88a0: 2a 20 74 68 61 74 20 77 61 73 20 72 65 74 75 72  * that was retur
88b0: 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
88c0: 5f 70 72 65 70 61 72 65 28 29 29 20 61 6e 64 0a  _prepare()) and.
88d0: 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  ** the second ar
88e0: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 69 6e  gument is the in
88f0: 64 65 78 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  dex of the colum
8900: 6e 20 66 6f 72 20 77 68 69 63 68 20 69 6e 66 6f  n for which info
8910: 72 6d 61 74 69 6f 6e 20 0a 2a 2a 20 73 68 6f 75  rmation .** shou
8920: 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20  ld be returned. 
8930: 20 69 43 6f 6c 20 69 73 20 7a 65 72 6f 2d 69 6e   iCol is zero-in
8940: 64 65 78 65 64 2e 20 20 54 68 65 20 6c 65 66 74  dexed.  The left
8950: 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 61 73 20  -most column as 
8960: 61 6e 0a 2a 2a 20 69 6e 64 65 78 20 6f 66 20 30  an.** index of 0
8970: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 53  ..**.** If the S
8980: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  QL statement is 
8990: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 70 6f  not currently po
89a0: 69 6e 74 20 74 6f 20 61 20 76 61 6c 69 64 20 72  int to a valid r
89b0: 6f 77 2c 20 6f 72 20 69 66 20 74 68 65 0a 2a 2a  ow, or if the.**
89c0: 20 74 68 65 20 63 6f 6c 75 6c 6d 6e 20 69 6e 64   the colulmn ind
89d0: 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e  ex is out of ran
89e0: 67 65 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69  ge, the result i
89f0: 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a  s undefined..**.
8a00: 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65  ** These routine
8a10: 73 20 61 74 74 65 6d 70 74 20 74 6f 20 63 6f 6e  s attempt to con
8a20: 76 65 72 74 20 74 68 65 20 76 61 6c 75 65 20 77  vert the value w
8a30: 68 65 72 65 20 61 70 70 72 6f 70 72 69 61 74 65  here appropriate
8a40: 2e 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70 6c  .  For.** exampl
8a50: 65 2c 20 69 66 20 74 68 65 20 69 6e 74 65 72 6e  e, if the intern
8a60: 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  al representatio
8a70: 6e 20 69 73 20 46 4c 4f 41 54 20 61 6e 64 20 61  n is FLOAT and a
8a80: 20 74 65 78 74 20 72 65 73 75 6c 74 0a 2a 2a 20   text result.** 
8a90: 69 73 20 72 65 71 75 65 73 74 65 64 2c 20 73 70  is requested, sp
8aa0: 72 69 6e 74 66 28 29 20 69 73 20 75 73 65 64 20  rintf() is used 
8ab0: 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 6f  internally to do
8ac0: 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 0a   the conversion.
8ad0: 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ** automatically
8ae0: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
8af0: 20 74 61 62 6c 65 20 64 65 74 61 69 6c 73 20 74   table details t
8b00: 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 74  he conversions t
8b10: 68 61 74 0a 2a 2a 20 61 72 65 20 61 70 70 6c 69  hat.** are appli
8b20: 65 64 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 49 6e 74  ed:.**.**    Int
8b30: 65 72 6e 61 6c 20 54 79 70 65 20 20 20 20 52 65  ernal Type    Re
8b40: 71 75 65 73 74 65 64 20 54 79 70 65 20 20 20 20  quested Type    
8b50: 20 43 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a 20 20   Conversion.**  
8b60: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20    ------------- 
8b70: 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     -------------
8b80: 2d 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  -    -----------
8b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
8ba0: 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  **       NULL   
8bb0: 20 20 20 20 20 20 20 20 20 20 49 4e 54 45 47 45            INTEGE
8bc0: 52 20 20 20 20 20 20 20 20 20 52 65 73 75 6c 74  R         Result
8bd0: 20 69 73 20 30 0a 2a 2a 20 20 20 20 20 20 20 4e   is 0.**       N
8be0: 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 20  ULL             
8bf0: 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20 20  FLOAT           
8c00: 52 65 73 75 6c 74 20 69 73 20 30 2e 30 0a 2a 2a  Result is 0.0.**
8c10: 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
8c20: 20 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20          TEXT    
8c30: 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 69          Result i
8c40: 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  s an empty strin
8c50: 67 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20  g.**       NULL 
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 42 4c 4f 42              BLOB
8c70: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 73 75              Resu
8c80: 6c 74 20 69 73 20 61 20 7a 65 72 6f 2d 6c 65 6e  lt is a zero-len
8c90: 67 74 68 20 42 4c 4f 42 0a 2a 2a 20 20 20 20 20  gth BLOB.**     
8ca0: 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20    INTEGER       
8cb0: 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20     FLOAT        
8cc0: 20 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20     Convert from 
8cd0: 69 6e 74 65 67 65 72 20 74 6f 20 66 6c 6f 61 74  integer to float
8ce0: 0a 2a 2a 20 20 20 20 20 20 20 49 4e 54 45 47 45  .**       INTEGE
8cf0: 52 20 20 20 20 20 20 20 20 20 20 54 45 58 54 20  R          TEXT 
8d00: 20 20 20 20 20 20 20 20 20 20 20 41 53 43 49 49             ASCII
8d10: 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68   rendering of th
8d20: 65 20 69 6e 74 65 67 65 72 0a 2a 2a 20 20 20 20  e integer.**    
8d30: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
8d40: 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20      BLOB        
8d50: 20 20 20 20 53 61 6d 65 20 61 73 20 66 6f 72 20      Same as for 
8d60: 49 4e 54 45 47 45 52 2d 3e 54 45 58 54 0a 2a 2a  INTEGER->TEXT.**
8d70: 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20         FLOAT    
8d80: 20 20 20 20 20 20 20 20 49 4e 54 45 47 45 52 20          INTEGER 
8d90: 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 20          Convert 
8da0: 66 72 6f 6d 20 66 6c 6f 61 74 20 74 6f 20 69 6e  from float to in
8db0: 74 65 67 65 72 0a 2a 2a 20 20 20 20 20 20 20 46  teger.**       F
8dc0: 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 20  LOAT            
8dd0: 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20  TEXT            
8de0: 41 53 43 49 49 20 72 65 6e 64 65 72 69 6e 67 20  ASCII rendering 
8df0: 6f 66 20 74 68 65 20 66 6c 6f 61 74 0a 2a 2a 20  of the float.** 
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 42 4c 4f 42 20 20 20 20 20         BLOB     
8e20: 20 20 20 20 20 20 20 53 61 6d 65 20 61 73 20 46         Same as F
8e30: 4c 4f 41 54 2d 3e 54 45 58 54 0a 2a 2a 20 20 20  LOAT->TEXT.**   
8e40: 20 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20      TEXT        
8e50: 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20       INTEGER    
8e60: 20 20 20 20 20 55 73 65 20 61 74 6f 69 28 29 0a       Use atoi().
8e70: 2a 2a 20 20 20 20 20 20 20 54 45 58 54 20 20 20  **       TEXT   
8e80: 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54 20            FLOAT 
8e90: 20 20 20 20 20 20 20 20 20 20 55 73 65 20 61 74            Use at
8ea0: 6f 66 28 29 0a 2a 2a 20 20 20 20 20 20 20 54 45  of().**       TE
8eb0: 58 54 20 20 20 20 20 20 20 20 20 20 20 20 20 42  XT             B
8ec0: 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 4e  LOB            N
8ed0: 6f 20 63 68 61 6e 67 65 0a 2a 2a 20 20 20 20 20  o change.**     
8ee0: 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20    BLOB          
8ef0: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
8f00: 20 20 20 43 6f 6e 76 65 72 74 20 74 6f 20 54 45     Convert to TE
8f10: 58 54 20 74 68 65 6e 20 75 73 65 20 61 74 6f 69  XT then use atoi
8f20: 28 29 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f 42  ().**       BLOB
8f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 4c 4f               FLO
8f40: 41 54 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e  AT           Con
8f50: 76 65 72 74 20 74 6f 20 54 45 58 54 20 74 68 65  vert to TEXT the
8f60: 6e 20 75 73 65 20 61 74 6f 66 28 29 0a 2a 2a 20  n use atof().** 
8f70: 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20        BLOB      
8f80: 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20         TEXT     
8f90: 20 20 20 20 20 20 20 41 64 64 20 61 20 5c 30 30         Add a \00
8fa0: 30 20 74 65 72 6d 69 6e 61 74 6f 72 20 69 66 20  0 terminator if 
8fb0: 6e 65 65 64 65 64 0a 2a 2a 0a 2a 2a 20 54 68 65  needed.**.** The
8fc0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 63 63 65 73   following acces
8fd0: 73 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 70  s routines are p
8fe0: 72 6f 76 69 64 65 64 3a 0a 2a 2a 0a 2a 2a 20 5f  rovided:.**.** _
8ff0: 74 79 70 65 28 29 20 20 20 20 20 52 65 74 75 72  type()     Retur
9000: 6e 20 74 68 65 20 64 61 74 61 74 79 70 65 20 6f  n the datatype o
9010: 66 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  f the result.  T
9020: 68 69 73 20 69 73 20 6f 6e 65 20 6f 66 0a 2a 2a  his is one of.**
9030: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
9040: 49 54 45 5f 49 4e 54 45 47 45 52 2c 20 53 51 4c  ITE_INTEGER, SQL
9050: 49 54 45 5f 46 4c 4f 41 54 2c 20 53 51 4c 49 54  ITE_FLOAT, SQLIT
9060: 45 5f 54 45 58 54 2c 20 53 51 4c 49 54 45 5f 42  E_TEXT, SQLITE_B
9070: 4c 4f 42 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20  LOB,.**         
9080: 20 20 20 20 6f 72 20 53 51 4c 49 54 45 5f 4e 55      or SQLITE_NU
9090: 4c 4c 2e 0a 2a 2a 20 5f 62 6c 6f 62 28 29 20 20  LL..** _blob()  
90a0: 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 76 61     Return the va
90b0: 6c 75 65 20 6f 66 20 61 20 42 4c 4f 42 2e 0a 2a  lue of a BLOB..*
90c0: 2a 20 5f 62 79 74 65 73 28 29 20 20 20 20 52 65  * _bytes()    Re
90d0: 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  turn the number 
90e0: 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 42 4c  of bytes in a BL
90f0: 4f 42 20 76 61 6c 75 65 20 6f 72 20 74 68 65 20  OB value or the 
9100: 6e 75 6d 62 65 72 0a 2a 2a 20 20 20 20 20 20 20  number.**       
9110: 20 20 20 20 20 20 6f 66 20 62 79 74 65 73 20 69        of bytes i
9120: 6e 20 61 20 54 45 58 54 20 76 61 6c 75 65 20 72  n a TEXT value r
9130: 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 55 54  epresented as UT
9140: 46 2d 38 2e 20 20 54 68 65 20 5c 30 30 30 0a 2a  F-8.  The \000.*
9150: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65  *             te
9160: 72 6d 69 6e 61 74 6f 72 20 69 73 20 69 6e 63 6c  rminator is incl
9170: 75 64 65 64 20 69 6e 20 74 68 65 20 62 79 74 65  uded in the byte
9180: 20 63 6f 75 6e 74 20 66 6f 72 20 54 45 58 54 20   count for TEXT 
9190: 76 61 6c 75 65 73 2e 0a 2a 2a 20 5f 62 79 74 65  values..** _byte
91a0: 73 31 36 28 29 20 20 52 65 74 75 72 6e 20 74 68  s16()  Return th
91b0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
91c0: 73 20 69 6e 20 61 20 42 4c 4f 42 20 76 61 6c 75  s in a BLOB valu
91d0: 65 20 6f 72 20 74 68 65 20 6e 75 6d 62 65 72 0a  e or the number.
91e0: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 6f  **             o
91f0: 66 20 62 79 74 65 73 20 69 6e 20 61 20 54 45 58  f bytes in a TEX
9200: 54 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  T value represen
9210: 74 65 64 20 61 73 20 55 54 46 2d 31 36 2e 20 20  ted as UTF-16.  
9220: 54 68 65 20 5c 75 30 30 30 30 0a 2a 2a 20 20 20  The \u0000.**   
9230: 20 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e            termin
9240: 61 74 6f 72 20 69 73 20 69 6e 63 6c 75 64 65 64  ator is included
9250: 20 69 6e 20 74 68 65 20 62 79 74 65 20 63 6f 75   in the byte cou
9260: 6e 74 20 66 6f 72 20 54 45 58 54 20 76 61 6c 75  nt for TEXT valu
9270: 65 73 2e 0a 2a 2a 20 5f 64 6f 75 62 6c 65 28 29  es..** _double()
9280: 20 20 20 52 65 74 75 72 6e 20 61 20 46 4c 4f 41     Return a FLOA
9290: 54 20 76 61 6c 75 65 2e 0a 2a 2a 20 5f 69 6e 74  T value..** _int
92a0: 28 29 20 20 20 20 20 20 52 65 74 75 72 6e 20 61  ()      Return a
92b0: 6e 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65 20  n INTEGER value 
92c0: 69 6e 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70  in the host comp
92d0: 75 74 65 72 27 73 20 6e 61 74 69 76 65 0a 2a 2a  uter's native.**
92e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
92f0: 65 67 65 72 20 72 65 70 72 65 73 65 6e 74 61 74  eger representat
9300: 69 6f 6e 2e 20 20 54 68 69 73 20 6d 69 67 68 74  ion.  This might
9310: 20 62 65 20 65 69 74 68 65 72 20 61 20 33 32 2d   be either a 32-
9320: 20 6f 72 20 36 34 2d 62 69 74 0a 2a 2a 20 20 20   or 64-bit.**   
9330: 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 67 65            intege
9340: 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74  r depending on t
9350: 68 65 20 68 6f 73 74 2e 0a 2a 2a 20 5f 69 6e 74  he host..** _int
9360: 36 34 28 29 20 20 20 20 52 65 74 75 72 6e 20 61  64()    Return a
9370: 6e 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65 20  n INTEGER value 
9380: 61 73 20 61 20 36 34 2d 62 69 74 20 73 69 67 6e  as a 64-bit sign
9390: 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 5f  ed integer..** _
93a0: 74 65 78 74 28 29 20 20 20 20 20 52 65 74 75 72  text()     Retur
93b0: 6e 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 55  n the value as U
93c0: 54 46 2d 38 20 74 65 78 74 2e 0a 2a 2a 20 5f 74  TF-8 text..** _t
93d0: 65 78 74 31 36 28 29 20 20 20 52 65 74 75 72 6e  ext16()   Return
93e0: 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 55 54   the value as UT
93f0: 46 2d 31 36 20 74 65 78 74 2e 0a 2a 2f 0a 63 6f  F-16 text..*/.co
9400: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
9410: 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 73 71  3_column_blob(sq
9420: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
9430: 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69   iCol);.int sqli
9440: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
9450: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
9460: 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73  int iCol);.int s
9470: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
9480: 74 65 73 31 36 28 73 71 6c 69 74 65 33 5f 73 74  tes16(sqlite3_st
9490: 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a  mt*, int iCol);.
94a0: 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63  double sqlite3_c
94b0: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 73 71 6c  olumn_double(sql
94c0: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
94d0: 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74  iCol);.int sqlit
94e0: 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 73 71  e3_column_int(sq
94f0: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
9500: 20 69 43 6f 6c 29 3b 0a 73 71 6c 69 74 65 5f 69   iCol);.sqlite_i
9510: 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nt64 sqlite3_col
9520: 75 6d 6e 5f 69 6e 74 36 34 28 73 71 6c 69 74 65  umn_int64(sqlite
9530: 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f  3_stmt*, int iCo
9540: 6c 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69 67 6e  l);.const unsign
9550: 65 64 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  ed char *sqlite3
9560: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 73 71 6c  _column_text(sql
9570: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20  ite3_stmt*, int 
9580: 69 43 6f 6c 29 3b 0a 63 6f 6e 73 74 20 76 6f 69  iCol);.const voi
9590: 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
95a0: 6e 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65 33  n_text16(sqlite3
95b0: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
95c0: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
95d0: 6f 6c 75 6d 6e 5f 74 79 70 65 28 73 71 6c 69 74  olumn_type(sqlit
95e0: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43  e3_stmt*, int iC
95f0: 6f 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  ol);../*.** The 
9600: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
9610: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63  () function is c
9620: 61 6c 6c 65 64 20 74 6f 20 64 65 6c 65 74 65 20  alled to delete 
9630: 61 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51  a compiled.** SQ
9640: 4c 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 74 61  L statement obta
9650: 69 6e 65 64 20 62 79 20 61 20 70 72 65 76 69 6f  ined by a previo
9660: 75 73 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74  us call to sqlit
9670: 65 33 5f 70 72 65 70 61 72 65 28 29 0a 2a 2a 20  e3_prepare().** 
9680: 6f 72 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  or sqlite3_prepa
9690: 72 65 31 36 28 29 2e 20 49 66 20 74 68 65 20 73  re16(). If the s
96a0: 74 61 74 65 6d 65 6e 74 20 77 61 73 20 65 78 65  tatement was exe
96b0: 63 75 74 65 64 20 73 75 63 63 65 73 73 66 75 6c  cuted successful
96c0: 6c 79 2c 20 6f 72 0a 2a 2a 20 6e 6f 74 20 65 78  ly, or.** not ex
96d0: 65 63 75 74 65 64 20 61 74 20 61 6c 6c 2c 20 74  ecuted at all, t
96e0: 68 65 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 73  hen SQLITE_OK is
96f0: 20 72 65 74 75 72 6e 65 64 2e 20 49 66 20 65 78   returned. If ex
9700: 65 63 75 74 69 6f 6e 20 6f 66 20 74 68 65 0a 2a  ecution of the.*
9710: 2a 20 73 74 61 74 65 6d 65 6e 74 20 66 61 69 6c  * statement fail
9720: 65 64 20 74 68 65 6e 20 61 6e 20 65 72 72 6f 72  ed then an error
9730: 20 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65   code is returne
9740: 64 2e 20 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72  d. .**.** This r
9750: 6f 75 74 69 6e 65 20 63 61 6e 20 62 65 20 63 61  outine can be ca
9760: 6c 6c 65 64 20 61 74 20 61 6e 79 20 70 6f 69 6e  lled at any poin
9770: 74 20 64 75 72 69 6e 67 20 74 68 65 20 65 78 65  t during the exe
9780: 63 75 74 69 6f 6e 20 6f 66 20 74 68 65 0a 2a 2a  cution of the.**
9790: 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65   virtual machine
97a0: 2e 20 20 49 66 20 74 68 65 20 76 69 72 74 75 61  .  If the virtua
97b0: 6c 20 6d 61 63 68 69 6e 65 20 68 61 73 20 6e 6f  l machine has no
97c0: 74 20 63 6f 6d 70 6c 65 74 65 64 20 65 78 65 63  t completed exec
97d0: 75 74 69 6f 6e 0a 2a 2a 20 77 68 65 6e 20 74 68  ution.** when th
97e0: 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61  is routine is ca
97f0: 6c 6c 65 64 2c 20 74 68 61 74 20 69 73 20 6c 69  lled, that is li
9800: 6b 65 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20  ke encountering 
9810: 61 6e 20 65 72 72 6f 72 20 6f 72 0a 2a 2a 20 61  an error or.** a
9820: 6e 20 69 6e 74 65 72 72 75 70 74 2e 20 20 28 53  n interrupt.  (S
9830: 65 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  ee sqlite3_inter
9840: 72 75 70 74 28 29 2e 29 20 20 49 6e 63 6f 6d 70  rupt().)  Incomp
9850: 6c 65 74 65 20 75 70 64 61 74 65 73 20 6d 61 79  lete updates may
9860: 20 62 65 0a 2a 2a 20 72 6f 6c 6c 65 64 20 62 61   be.** rolled ba
9870: 63 6b 20 61 6e 64 20 74 72 61 6e 73 61 63 74 69  ck and transacti
9880: 6f 6e 73 20 63 61 6e 63 65 6c 6c 65 64 2c 20 20  ons cancelled,  
9890: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65  depending on the
98a0: 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2c 0a   circumstances,.
98b0: 2a 2a 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c  ** and the resul
98c0: 74 20 63 6f 64 65 20 72 65 74 75 72 6e 65 64 20  t code returned 
98d0: 77 69 6c 6c 20 62 65 20 53 51 4c 49 54 45 5f 41  will be SQLITE_A
98e0: 42 4f 52 54 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  BORT..*/.int sql
98f0: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 73 71  ite3_finalize(sq
9900: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d  lite3_stmt *pStm
9910: 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 73  t);../*.** The s
9920: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20 66  qlite3_reset() f
9930: 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65  unction is calle
9940: 64 20 74 6f 20 72 65 73 65 74 20 61 20 63 6f 6d  d to reset a com
9950: 70 69 6c 65 64 20 53 51 4c 0a 2a 2a 20 73 74 61  piled SQL.** sta
9960: 74 65 6d 65 6e 74 20 6f 62 74 61 69 6e 65 64 20  tement obtained 
9970: 62 79 20 61 20 70 72 65 76 69 6f 75 73 20 63 61  by a previous ca
9980: 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 70 72  ll to sqlite3_pr
9990: 65 70 61 72 65 28 29 20 6f 72 0a 2a 2a 20 73 71  epare() or.** sq
99a0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
99b0: 29 20 62 61 63 6b 20 74 6f 20 69 74 27 73 20 69  ) back to it's i
99c0: 6e 69 74 69 61 6c 20 73 74 61 74 65 2c 20 72 65  nitial state, re
99d0: 61 64 79 20 74 6f 20 62 65 20 72 65 2d 65 78 65  ady to be re-exe
99e0: 63 75 74 65 64 2e 0a 2a 2a 20 41 6e 79 20 53 51  cuted..** Any SQ
99f0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 76 61 72 69  L statement vari
9a00: 61 62 6c 65 73 20 74 68 61 74 20 68 61 64 20 76  ables that had v
9a10: 61 6c 75 65 73 20 62 6f 75 6e 64 20 74 6f 20 74  alues bound to t
9a20: 68 65 6d 20 75 73 69 6e 67 0a 2a 2a 20 74 68 65  hem using.** the
9a30: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28   sqlite3_bind_*(
9a40: 29 20 41 50 49 20 72 65 74 61 69 6e 20 74 68 65  ) API retain the
9a50: 69 72 20 76 61 6c 75 65 73 2e 0a 2a 2f 0a 69 6e  ir values..*/.in
9a60: 74 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28  t sqlite3_reset(
9a70: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
9a80: 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  tmt);../*.** The
9a90: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20 66   following two f
9aa0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 75 73 65  unctions are use
9ab0: 64 20 74 6f 20 61 64 64 20 75 73 65 72 20 66 75  d to add user fu
9ac0: 6e 63 74 69 6f 6e 73 20 6f 72 20 61 67 67 72 65  nctions or aggre
9ad0: 67 61 74 65 73 0a 2a 2a 20 69 6d 70 6c 65 6d 65  gates.** impleme
9ae0: 6e 74 65 64 20 69 6e 20 43 20 74 6f 20 74 68 65  nted in C to the
9af0: 20 53 51 4c 20 6c 61 6e 67 61 75 67 65 20 69 6e   SQL langauge in
9b00: 74 65 72 70 72 65 74 65 64 20 62 79 20 53 51 4c  terpreted by SQL
9b10: 69 74 65 2e 20 54 68 65 0a 2a 2a 20 64 69 66 66  ite. The.** diff
9b20: 65 72 65 6e 63 65 20 6f 6e 6c 79 20 62 65 74 77  erence only betw
9b30: 65 65 6e 20 74 68 65 20 74 77 6f 20 69 73 20 74  een the two is t
9b40: 68 61 74 20 74 68 65 20 73 65 63 6f 6e 64 20 70  hat the second p
9b50: 61 72 61 6d 65 74 65 72 2c 20 74 68 65 0a 2a 2a  arameter, the.**
9b60: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 28 73 63   name of the (sc
9b70: 61 6c 61 72 29 20 66 75 6e 63 74 69 6f 6e 20 6f  alar) function o
9b80: 72 20 61 67 67 72 65 67 61 74 65 2c 20 69 73 20  r aggregate, is 
9b90: 65 6e 63 6f 64 65 64 20 69 6e 20 55 54 46 2d 38  encoded in UTF-8
9ba0: 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   for.** sqlite3_
9bb0: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
9bc0: 29 20 61 6e 64 20 55 54 46 2d 31 36 20 66 6f 72  ) and UTF-16 for
9bd0: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
9be0: 66 75 6e 63 74 69 6f 6e 31 36 28 29 2e 0a 2a 2a  function16()..**
9bf0: 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
9c00: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 64 61  gument is the da
9c10: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 74 68  tabase handle th
9c20: 61 74 20 74 68 65 20 6e 65 77 20 66 75 6e 63 74  at the new funct
9c30: 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67 72 65 67  ion or.** aggreg
9c40: 61 74 65 20 69 73 20 74 6f 20 62 65 20 61 64 64  ate is to be add
9c50: 65 64 20 74 6f 2e 20 49 66 20 61 20 73 69 6e 67  ed to. If a sing
9c60: 6c 65 20 70 72 6f 67 72 61 6d 20 75 73 65 73 20  le program uses 
9c70: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 0a 2a 2a  more than one.**
9c80: 20 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   database handle
9c90: 20 69 6e 74 65 72 6e 61 6c 6c 79 2c 20 74 68 65   internally, the
9ca0: 6e 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73  n user functions
9cb0: 20 6f 72 20 61 67 67 72 65 67 61 74 65 73 20 6d   or aggregates m
9cc0: 75 73 74 20 0a 2a 2a 20 62 65 20 61 64 64 65 64  ust .** be added
9cd0: 20 69 6e 64 69 76 69 64 75 61 6c 6c 79 20 74 6f   individually to
9ce0: 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20 68   each database h
9cf0: 61 6e 64 6c 65 20 77 69 74 68 20 77 68 69 63 68  andle with which
9d00: 20 74 68 65 79 20 77 69 6c 6c 20 62 65 0a 2a 2a   they will be.**
9d10: 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   used..**.** The
9d20: 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
9d30: 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   is the number o
9d40: 66 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74  f arguments that
9d50: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6f 72   the function or
9d60: 0a 2a 2a 20 61 67 67 72 65 67 61 74 65 20 74 61  .** aggregate ta
9d70: 6b 65 73 2e 20 49 66 20 74 68 69 73 20 70 61 72  kes. If this par
9d80: 61 6d 65 74 65 72 20 69 73 20 6e 65 67 61 74 69  ameter is negati
9d90: 76 65 2c 20 74 68 65 6e 20 74 68 65 20 66 75 6e  ve, then the fun
9da0: 63 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67 72  ction or.** aggr
9db0: 65 67 61 74 65 20 6d 61 79 20 74 61 6b 65 20 61  egate may take a
9dc0: 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  ny number of arg
9dd0: 75 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  uments..**.** Th
9de0: 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
9df0: 65 72 20 69 73 20 6f 6e 65 20 6f 66 20 53 51 4c  er is one of SQL
9e00: 49 54 45 5f 55 54 46 2a 20 76 61 6c 75 65 73 20  ITE_UTF* values 
9e10: 64 65 66 69 6e 65 64 20 62 65 6c 6f 77 2c 0a 2a  defined below,.*
9e20: 2a 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65  * indicating the
9e30: 20 65 6e 63 6f 64 69 6e 67 20 74 68 61 74 20 74   encoding that t
9e40: 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6d  he function is m
9e50: 6f 73 74 20 6c 69 6b 65 6c 79 20 74 6f 20 68 61  ost likely to ha
9e60: 6e 64 6c 65 0a 2a 2a 20 76 61 6c 75 65 73 20 69  ndle.** values i
9e70: 6e 2e 20 20 54 68 69 73 20 64 6f 65 73 20 6e 6f  n.  This does no
9e80: 74 20 63 68 61 6e 67 65 20 74 68 65 20 62 65 68  t change the beh
9e90: 61 76 69 6f 75 72 20 6f 66 20 74 68 65 20 70 72  aviour of the pr
9ea0: 6f 67 72 61 6d 6d 69 6e 67 0a 2a 2a 20 69 6e 74  ogramming.** int
9eb0: 65 72 66 61 63 65 2e 20 48 6f 77 65 76 65 72 2c  erface. However,
9ec0: 20 69 66 20 74 77 6f 20 76 65 72 73 69 6f 6e 73   if two versions
9ed0: 20 6f 66 20 74 68 65 20 73 61 6d 65 20 66 75 6e   of the same fun
9ee0: 63 74 69 6f 6e 20 61 72 65 20 72 65 67 69 73 74  ction are regist
9ef0: 65 72 65 64 0a 2a 2a 20 77 69 74 68 20 64 69 66  ered.** with dif
9f00: 66 65 72 65 6e 74 20 65 6e 63 6f 64 69 6e 67 20  ferent encoding 
9f10: 76 61 6c 75 65 73 2c 20 53 51 4c 69 74 65 20 69  values, SQLite i
9f20: 6e 76 6f 6b 65 73 20 74 68 65 20 76 65 72 73 69  nvokes the versi
9f30: 6f 6e 20 6c 69 6b 65 6c 79 20 74 6f 0a 2a 2a 20  on likely to.** 
9f40: 6d 69 6e 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73  minimize convers
9f50: 69 6f 6e 73 20 62 65 74 77 65 65 6e 20 74 65 78  ions between tex
9f60: 74 20 65 6e 63 6f 64 69 6e 67 73 2e 0a 2a 2a 0a  t encodings..**.
9f70: 2a 2a 20 54 68 65 20 73 65 76 65 6e 74 68 2c 20  ** The seventh, 
9f80: 65 69 67 68 74 68 20 61 6e 64 20 6e 69 6e 74 68  eighth and ninth
9f90: 20 70 61 72 61 6d 65 74 65 72 73 2c 20 78 46 75   parameters, xFu
9fa0: 6e 63 2c 20 78 53 74 65 70 20 61 6e 64 20 78 46  nc, xStep and xF
9fb0: 69 6e 61 6c 2c 20 61 72 65 0a 2a 2a 20 70 6f 69  inal, are.** poi
9fc0: 6e 74 65 72 73 20 74 6f 20 75 73 65 72 20 69 6d  nters to user im
9fd0: 70 6c 65 6d 65 6e 74 65 64 20 43 20 66 75 6e 63  plemented C func
9fe0: 74 69 6f 6e 73 20 74 68 61 74 20 69 6d 70 6c 65  tions that imple
9ff0: 6d 65 6e 74 20 74 68 65 20 75 73 65 72 0a 2a 2a  ment the user.**
a000: 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67   function or agg
a010: 72 65 67 61 74 65 2e 20 41 20 73 63 61 6c 61 72  regate. A scalar
a020: 20 66 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72   function requir
a030: 65 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  es an implementa
a040: 74 69 6f 6e 20 6f 66 0a 2a 2a 20 74 68 65 20 78  tion of.** the x
a050: 46 75 6e 63 20 63 61 6c 6c 62 61 63 6b 20 6f 6e  Func callback on
a060: 6c 79 2c 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  ly, NULL pointer
a070: 73 20 73 68 6f 75 6c 64 20 62 65 20 70 61 73 73  s should be pass
a080: 65 64 20 61 73 20 74 68 65 20 78 53 74 65 70 0a  ed as the xStep.
a090: 2a 2a 20 61 6e 64 20 78 46 69 6e 61 6c 20 70 61  ** and xFinal pa
a0a0: 72 61 6d 65 74 65 72 73 2e 20 41 6e 20 61 67 67  rameters. An agg
a0b0: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20  regate function 
a0c0: 72 65 71 75 69 72 65 73 20 61 6e 20 69 6d 70 6c  requires an impl
a0d0: 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20 6f 66  ementation.** of
a0e0: 20 78 53 74 65 70 20 61 6e 64 20 78 46 69 6e 61   xStep and xFina
a0f0: 6c 2c 20 62 75 74 20 4e 55 4c 4c 20 73 68 6f 75  l, but NULL shou
a100: 6c 64 20 62 65 20 70 61 73 73 65 64 20 66 6f 72  ld be passed for
a110: 20 78 46 75 6e 63 2e 20 54 6f 20 64 65 6c 65 74   xFunc. To delet
a120: 65 20 61 6e 0a 2a 2a 20 65 78 69 73 74 69 6e 67  e an.** existing
a130: 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 6f   user function o
a140: 72 20 61 67 67 72 65 67 61 74 65 2c 20 70 61 73  r aggregate, pas
a150: 73 20 4e 55 4c 4c 20 66 6f 72 20 61 6c 6c 20 74  s NULL for all t
a160: 68 72 65 65 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a  hree function.**
a170: 20 63 61 6c 6c 62 61 63 6b 2e 20 53 70 65 63 69   callback. Speci
a180: 66 79 69 6e 67 20 61 6e 20 69 6e 63 6f 6e 73 74  fying an inconst
a190: 65 6e 74 20 73 65 74 20 6f 66 20 63 61 6c 6c 62  ent set of callb
a1a0: 61 63 6b 20 76 61 6c 75 65 73 2c 20 73 75 63 68  ack values, such
a1b0: 20 61 73 20 61 6e 0a 2a 2a 20 78 46 75 6e 63 20   as an.** xFunc 
a1c0: 61 6e 64 20 61 6e 20 78 46 69 6e 61 6c 2c 20 6f  and an xFinal, o
a1d0: 72 20 61 6e 20 78 53 74 65 70 20 62 75 74 20 6e  r an xStep but n
a1e0: 6f 20 78 46 69 6e 61 6c 2c 20 53 51 4c 49 54 45  o xFinal, SQLITE
a1f0: 5f 45 52 52 4f 52 20 69 73 0a 2a 2a 20 72 65 74  _ERROR is.** ret
a200: 75 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71  urned..*/.int sq
a210: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
a220: 63 74 69 6f 6e 28 0a 20 20 73 71 6c 69 74 65 33  ction(.  sqlite3
a230: 20 2a 2c 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   *,.  const char
a240: 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c   *zFunctionName,
a250: 0a 20 20 69 6e 74 20 6e 41 72 67 2c 0a 20 20 69  .  int nArg,.  i
a260: 6e 74 20 65 54 65 78 74 52 65 70 2c 0a 20 20 76  nt eTextRep,.  v
a270: 6f 69 64 2a 2c 0a 20 20 76 6f 69 64 20 28 2a 78  oid*,.  void (*x
a280: 46 75 6e 63 29 28 73 71 6c 69 74 65 33 5f 63 6f  Func)(sqlite3_co
a290: 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74  ntext*,int,sqlit
a2a0: 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76  e3_value**),.  v
a2b0: 6f 69 64 20 28 2a 78 53 74 65 70 29 28 73 71 6c  oid (*xStep)(sql
a2c0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e  ite3_context*,in
a2d0: 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  t,sqlite3_value*
a2e0: 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 46 69  *),.  void (*xFi
a2f0: 6e 61 6c 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e  nal)(sqlite3_con
a300: 74 65 78 74 2a 29 0a 29 3b 0a 69 6e 74 20 73 71  text*).);.int sq
a310: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
a320: 63 74 69 6f 6e 31 36 28 0a 20 20 73 71 6c 69 74  ction16(.  sqlit
a330: 65 33 2a 2c 0a 20 20 63 6f 6e 73 74 20 76 6f 69  e3*,.  const voi
a340: 64 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61 6d 65  d *zFunctionName
a350: 2c 0a 20 20 69 6e 74 20 6e 41 72 67 2c 0a 20 20  ,.  int nArg,.  
a360: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 0a 20 20  int eTextRep,.  
a370: 76 6f 69 64 2a 2c 0a 20 20 76 6f 69 64 20 28 2a  void*,.  void (*
a380: 78 46 75 6e 63 29 28 73 71 6c 69 74 65 33 5f 63  xFunc)(sqlite3_c
a390: 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69  ontext*,int,sqli
a3a0: 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20  te3_value**),.  
a3b0: 76 6f 69 64 20 28 2a 78 53 74 65 70 29 28 73 71  void (*xStep)(sq
a3c0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 69  lite3_context*,i
a3d0: 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt,sqlite3_value
a3e0: 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78 46  **),.  void (*xF
a3f0: 69 6e 61 6c 29 28 73 71 6c 69 74 65 33 5f 63 6f  inal)(sqlite3_co
a400: 6e 74 65 78 74 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a  ntext*).);../*.*
a410: 2a 20 54 68 65 20 6e 65 78 74 20 72 6f 75 74 69  * The next routi
a420: 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  ne returns the n
a430: 75 6d 62 65 72 20 6f 66 20 63 61 6c 6c 73 20 74  umber of calls t
a440: 6f 20 78 53 74 65 70 20 66 6f 72 20 61 20 70 61  o xStep for a pa
a450: 72 74 69 63 75 6c 61 72 0a 2a 2a 20 61 67 67 72  rticular.** aggr
a460: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69  egate function i
a470: 6e 73 74 61 6e 63 65 2e 20 20 54 68 65 20 63 75  nstance.  The cu
a480: 72 72 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 53  rrent call to xS
a490: 74 65 70 20 63 6f 75 6e 74 73 20 73 6f 20 74 68  tep counts so th
a4a0: 69 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 61 6c  is.** routine al
a4b0: 77 61 79 73 20 72 65 74 75 72 6e 73 20 61 74 20  ways returns at 
a4c0: 6c 65 61 73 74 20 31 2e 0a 2a 2f 0a 69 6e 74 20  least 1..*/.int 
a4d0: 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
a4e0: 65 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f  e_count(sqlite3_
a4f0: 63 6f 6e 74 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a  context*);../*.*
a500: 2a 20 54 68 65 20 6e 65 78 74 20 67 72 6f 75 70  * The next group
a510: 20 6f 66 20 72 6f 75 74 69 6e 65 73 20 72 65 74   of routines ret
a520: 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  urns information
a530: 20 61 62 6f 75 74 20 70 61 72 61 6d 65 74 65 72   about parameter
a540: 73 20 74 6f 0a 2a 2a 20 61 20 75 73 65 72 2d 64  s to.** a user-d
a550: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 2e  efined function.
a560: 20 20 46 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65    Function imple
a570: 6d 65 6e 74 61 74 69 6f 6e 73 20 75 73 65 20 74  mentations use t
a580: 68 65 73 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a  hese routines.**
a590: 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 69 72   to access their
a5a0: 20 70 61 72 61 6d 65 74 65 72 73 2e 20 20 54 68   parameters.  Th
a5b0: 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65  ese routines are
a5c0: 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65   the same as the
a5d0: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  .** sqlite3_colu
a5e0: 6d 6e 5f 2a 20 72 6f 75 74 69 6e 65 73 20 65 78  mn_* routines ex
a5f0: 63 65 70 74 20 74 68 61 74 20 74 68 65 73 65 20  cept that these 
a600: 72 6f 75 74 69 6e 65 73 20 74 61 6b 65 20 61 20  routines take a 
a610: 73 69 6e 67 6c 65 0a 2a 2a 20 73 71 6c 69 74 65  single.** sqlite
a620: 33 5f 76 61 6c 75 65 2a 20 70 6f 69 6e 74 65 72  3_value* pointer
a630: 20 69 6e 73 74 65 61 64 20 6f 66 20 61 6e 20 73   instead of an s
a640: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 20 61 6e 64  qlite3_stmt* and
a650: 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 63   an integer.** c
a660: 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0a 2a 2f  olumn number..*/
a670: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
a680: 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28  ite3_value_blob(
a690: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
a6a0: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  .int sqlite3_val
a6b0: 75 65 5f 62 79 74 65 73 28 73 71 6c 69 74 65 33  ue_bytes(sqlite3
a6c0: 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71  _value*);.int sq
a6d0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
a6e0: 73 31 36 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  s16(sqlite3_valu
a6f0: 65 2a 29 3b 0a 64 6f 75 62 6c 65 20 73 71 6c 69  e*);.double sqli
a700: 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
a710: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29  (sqlite3_value*)
a720: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  ;.int sqlite3_va
a730: 6c 75 65 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f  lue_int(sqlite3_
a740: 76 61 6c 75 65 2a 29 3b 0a 73 71 6c 69 74 65 5f  value*);.sqlite_
a750: 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 76 61  int64 sqlite3_va
a760: 6c 75 65 5f 69 6e 74 36 34 28 73 71 6c 69 74 65  lue_int64(sqlite
a770: 33 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74  3_value*);.const
a780: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a   unsigned char *
a790: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
a7a0: 78 74 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  xt(sqlite3_value
a7b0: 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a  *);.const void *
a7c0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
a7d0: 78 74 31 36 28 73 71 6c 69 74 65 33 5f 76 61 6c  xt16(sqlite3_val
a7e0: 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64  ue*);.const void
a7f0: 20 2a 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   *sqlite3_value_
a800: 74 65 78 74 31 36 6c 65 28 73 71 6c 69 74 65 33  text16le(sqlite3
a810: 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20  _value*);.const 
a820: 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 76 61  void *sqlite3_va
a830: 6c 75 65 5f 74 65 78 74 31 36 62 65 28 73 71 6c  lue_text16be(sql
a840: 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e  ite3_value*);.in
a850: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
a860: 74 79 70 65 28 73 71 6c 69 74 65 33 5f 76 61 6c  type(sqlite3_val
a870: 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 67 67  ue*);../*.** Agg
a880: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
a890: 20 75 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69   use the followi
a8a0: 6e 67 20 72 6f 75 74 69 6e 65 20 74 6f 20 61 6c  ng routine to al
a8b0: 6c 6f 63 61 74 65 0a 2a 2a 20 61 20 73 74 72 75  locate.** a stru
a8c0: 63 74 75 72 65 20 66 6f 72 20 73 74 6f 72 69 6e  cture for storin
a8d0: 67 20 74 68 65 69 72 20 73 74 61 74 65 2e 20 20  g their state.  
a8e0: 54 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 74  The first time t
a8f0: 68 69 73 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 69  his routine.** i
a900: 73 20 63 61 6c 6c 65 64 20 66 6f 72 20 61 20 70  s called for a p
a910: 61 72 74 69 63 75 6c 61 72 20 61 67 67 72 65 67  articular aggreg
a920: 61 74 65 2c 20 61 20 6e 65 77 20 73 74 72 75 63  ate, a new struc
a930: 74 75 72 65 20 6f 66 20 73 69 7a 65 20 6e 42 79  ture of size nBy
a940: 74 65 73 0a 2a 2a 20 69 73 20 61 6c 6c 6f 63 61  tes.** is alloca
a950: 74 65 64 2c 20 7a 65 72 6f 65 64 2c 20 61 6e 64  ted, zeroed, and
a960: 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 6e 20 73   returned.  On s
a970: 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20  ubsequent calls 
a980: 28 66 6f 72 20 74 68 65 0a 2a 2a 20 73 61 6d 65  (for the.** same
a990: 20 61 67 67 72 65 67 61 74 65 20 69 6e 73 74 61   aggregate insta
a9a0: 6e 63 65 29 20 74 68 65 20 73 61 6d 65 20 62 75  nce) the same bu
a9b0: 66 66 65 72 20 69 73 20 72 65 74 75 72 6e 65 64  ffer is returned
a9c0: 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74  .  The implement
a9d0: 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 74 68 65 20  ation.** of the 
a9e0: 61 67 67 72 65 67 61 74 65 20 63 61 6e 20 75 73  aggregate can us
a9f0: 65 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 62  e the returned b
aa00: 75 66 66 65 72 20 74 6f 20 61 63 63 75 6d 75 6c  uffer to accumul
aa10: 61 74 65 20 64 61 74 61 2e 0a 2a 2a 0a 2a 2a 20  ate data..**.** 
aa20: 54 68 65 20 62 75 66 66 65 72 20 61 6c 6c 6f 63  The buffer alloc
aa30: 61 74 65 64 20 69 73 20 66 72 65 65 64 20 61 75  ated is freed au
aa40: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 53  tomatically by S
aa50: 51 4c 69 74 65 2e 0a 2a 2f 0a 76 6f 69 64 20 2a  QLite..*/.void *
aa60: 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
aa70: 65 5f 63 6f 6e 74 65 78 74 28 73 71 6c 69 74 65  e_context(sqlite
aa80: 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 20  3_context*, int 
aa90: 6e 42 79 74 65 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20  nBytes);../*.** 
aaa0: 54 68 65 20 70 55 73 65 72 44 61 74 61 20 70 61  The pUserData pa
aab0: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 73  rameter to the s
aac0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
aad0: 6e 63 74 69 6f 6e 28 29 20 61 6e 64 0a 2a 2a 20  nction() and.** 
aae0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 61  sqlite3_create_a
aaf0: 67 67 72 65 67 61 74 65 28 29 20 72 6f 75 74 69  ggregate() routi
ab00: 6e 65 73 20 75 73 65 64 20 74 6f 20 72 65 67 69  nes used to regi
ab10: 73 74 65 72 20 75 73 65 72 20 66 75 6e 63 74 69  ster user functi
ab20: 6f 6e 73 0a 2a 2a 20 69 73 20 61 76 61 69 6c 61  ons.** is availa
ab30: 62 6c 65 20 74 6f 20 74 68 65 20 69 6d 70 6c 65  ble to the imple
ab40: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
ab50: 20 66 75 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20   function using 
ab60: 74 68 69 73 0a 2a 2a 20 63 61 6c 6c 2e 0a 2a 2f  this.** call..*/
ab70: 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 75  .void *sqlite3_u
ab80: 73 65 72 5f 64 61 74 61 28 73 71 6c 69 74 65 33  ser_data(sqlite3
ab90: 5f 63 6f 6e 74 65 78 74 2a 29 3b 0a 0a 2f 2a 0a  _context*);../*.
aba0: 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ** The following
abb0: 20 74 77 6f 20 66 75 6e 63 74 69 6f 6e 73 20 6d   two functions m
abc0: 61 79 20 62 65 20 75 73 65 64 20 62 79 20 73 63  ay be used by sc
abd0: 61 6c 61 72 20 75 73 65 72 20 66 75 6e 63 74 69  alar user functi
abe0: 6f 6e 73 20 74 6f 0a 2a 2a 20 61 73 73 6f 63 69  ons to.** associ
abf0: 61 74 65 20 6d 65 74 61 2d 64 61 74 61 20 77 69  ate meta-data wi
ac00: 74 68 20 61 72 67 75 6d 65 6e 74 20 76 61 6c 75  th argument valu
ac10: 65 73 2e 20 49 66 20 74 68 65 20 73 61 6d 65 20  es. If the same 
ac20: 76 61 6c 75 65 20 69 73 20 70 61 73 73 65 64 20  value is passed 
ac30: 74 6f 0a 2a 2a 20 6d 75 6c 74 69 70 6c 65 20 69  to.** multiple i
ac40: 6e 76 6f 63 61 74 69 6f 6e 73 20 6f 66 20 74 68  nvocations of th
ac50: 65 20 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e 20  e user-function 
ac60: 64 75 72 69 6e 67 20 71 75 65 72 79 20 65 78 65  during query exe
ac70: 63 75 74 69 6f 6e 2c 20 75 6e 64 65 72 0a 2a 2a  cution, under.**
ac80: 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e   some circumstan
ac90: 63 65 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ces the associat
aca0: 65 64 20 6d 65 74 61 2d 64 61 74 61 20 6d 61 79  ed meta-data may
acb0: 20 62 65 20 70 72 65 73 65 72 76 65 64 2e 20 54   be preserved. T
acc0: 68 69 73 20 6d 61 79 0a 2a 2a 20 62 65 20 75 73  his may.** be us
acd0: 65 64 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c  ed, for example,
ace0: 20 74 6f 20 61 64 64 20 61 20 72 65 67 75 6c 61   to add a regula
acf0: 72 2d 65 78 70 72 65 73 73 69 6f 6e 20 6d 61 74  r-expression mat
ad00: 63 68 69 6e 67 20 73 63 61 6c 61 72 0a 2a 2a 20  ching scalar.** 
ad10: 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 63 6f  function. The co
ad20: 6d 70 69 6c 65 64 20 76 65 72 73 69 6f 6e 20 6f  mpiled version o
ad30: 66 20 74 68 65 20 72 65 67 75 6c 61 72 20 65 78  f the regular ex
ad40: 70 72 65 73 73 69 6f 6e 20 69 73 20 73 74 6f 72  pression is stor
ad50: 65 64 20 61 73 0a 2a 2a 20 6d 65 74 61 2d 64 61  ed as.** meta-da
ad60: 74 61 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ta associated wi
ad70: 74 68 20 74 68 65 20 53 51 4c 20 76 61 6c 75 65  th the SQL value
ad80: 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20 72   passed as the r
ad90: 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f  egular expressio
ada0: 6e 0a 2a 2a 20 70 61 74 74 65 72 6e 2e 0a 2a 2a  n.** pattern..**
adb0: 0a 2a 2a 20 43 61 6c 6c 69 6e 67 20 73 71 6c 69  .** Calling sqli
adc0: 74 65 33 5f 67 65 74 5f 61 75 78 64 61 74 61 28  te3_get_auxdata(
add0: 29 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  ) returns a poin
ade0: 74 65 72 20 74 6f 20 74 68 65 20 6d 65 74 61 20  ter to the meta 
adf0: 64 61 74 61 0a 2a 2a 20 61 73 73 6f 63 69 61 74  data.** associat
ae00: 65 64 20 77 69 74 68 20 74 68 65 20 4e 74 68 20  ed with the Nth 
ae10: 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 20 74  argument value t
ae20: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 73  o the current us
ae30: 65 72 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 63  er function.** c
ae40: 61 6c 6c 2c 20 77 68 65 72 65 20 4e 20 69 73 20  all, where N is 
ae50: 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  the second param
ae60: 65 74 65 72 2e 20 49 66 20 6e 6f 20 6d 65 74 61  eter. If no meta
ae70: 2d 64 61 74 61 20 68 61 73 20 62 65 65 6e 20 73  -data has been s
ae80: 65 74 20 66 6f 72 0a 2a 2a 20 74 68 61 74 20 76  et for.** that v
ae90: 61 6c 75 65 2c 20 74 68 65 6e 20 61 20 4e 55 4c  alue, then a NUL
aea0: 4c 20 70 6f 69 6e 74 65 72 20 69 73 20 72 65 74  L pointer is ret
aeb0: 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  urned..**.** The
aec0: 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 78   sqlite3_set_aux
aed0: 64 61 74 61 28 29 20 69 73 20 75 73 65 64 20 74  data() is used t
aee0: 6f 20 61 73 73 6f 63 69 61 74 65 20 6d 65 74 61  o associate meta
aef0: 20 64 61 74 61 20 77 69 74 68 20 61 20 75 73 65   data with a use
af00: 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 61 72  r.** function ar
af10: 67 75 6d 65 6e 74 2e 20 54 68 65 20 74 68 69 72  gument. The thir
af20: 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
af30: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
af40: 6d 65 74 61 20 64 61 74 61 0a 2a 2a 20 74 6f 20  meta data.** to 
af50: 62 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  be associated wi
af60: 74 68 20 74 68 65 20 4e 74 68 20 75 73 65 72 20  th the Nth user 
af70: 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e  function argumen
af80: 74 20 76 61 6c 75 65 2e 20 54 68 65 20 66 6f 75  t value. The fou
af90: 72 74 68 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  rth.** parameter
afa0: 20 73 70 65 63 69 66 69 65 73 20 61 20 27 64 65   specifies a 'de
afb0: 6c 65 74 65 20 66 75 6e 63 74 69 6f 6e 27 20 74  lete function' t
afc0: 68 61 74 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  hat will be call
afd0: 65 64 20 6f 6e 20 74 68 65 20 6d 65 74 61 0a 2a  ed on the meta.*
afe0: 2a 20 64 61 74 61 20 70 6f 69 6e 74 65 72 20 74  * data pointer t
aff0: 6f 20 72 65 6c 65 61 73 65 20 69 74 20 77 68 65  o release it whe
b000: 6e 20 69 74 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  n it is no longe
b010: 72 20 72 65 71 75 69 72 65 64 2e 20 49 66 20 74  r required. If t
b020: 68 65 20 64 65 6c 65 74 65 0a 2a 2a 20 66 75 6e  he delete.** fun
b030: 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73  ction pointer is
b040: 20 4e 55 4c 4c 2c 20 69 74 20 69 73 20 6e 6f 74   NULL, it is not
b050: 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20   invoked..**.** 
b060: 49 6e 20 70 72 61 63 74 69 63 65 2c 20 6d 65 74  In practice, met
b070: 61 2d 64 61 74 61 20 69 73 20 70 72 65 73 65 72  a-data is preser
b080: 76 65 64 20 62 65 74 77 65 65 6e 20 66 75 6e 63  ved between func
b090: 74 69 6f 6e 20 63 61 6c 6c 73 20 66 6f 72 0a 2a  tion calls for.*
b0a0: 2a 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  * expressions th
b0b0: 61 74 20 61 72 65 20 63 6f 6e 73 74 61 6e 74 20  at are constant 
b0c0: 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e  at compile time.
b0d0: 20 54 68 69 73 20 69 6e 63 6c 75 64 65 73 20 6c   This includes l
b0e0: 69 74 65 72 61 6c 0a 2a 2a 20 76 61 6c 75 65 73  iteral.** values
b0f0: 20 61 6e 64 20 53 51 4c 20 76 61 72 69 61 62 6c   and SQL variabl
b100: 65 73 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  es..*/.void *sql
b110: 69 74 65 33 5f 67 65 74 5f 61 75 78 64 61 74 61  ite3_get_auxdata
b120: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
b130: 2a 2c 20 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71  *, int);.void sq
b140: 6c 69 74 65 33 5f 73 65 74 5f 61 75 78 64 61 74  lite3_set_auxdat
b150: 61 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  a(sqlite3_contex
b160: 74 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 2a 2c 20  t*, int, void*, 
b170: 76 6f 69 64 20 28 2a 29 28 76 6f 69 64 2a 29 29  void (*)(void*))
b180: 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20  ;.../*.** These 
b190: 61 72 65 20 73 70 65 63 69 61 6c 20 76 61 6c 75  are special valu
b1a0: 65 20 66 6f 72 20 74 68 65 20 64 65 73 74 72 75  e for the destru
b1b0: 63 74 6f 72 20 74 68 61 74 20 69 73 20 70 61 73  ctor that is pas
b1c0: 73 65 64 20 69 6e 20 61 73 20 74 68 65 0a 2a 2a  sed in as the.**
b1d0: 20 66 69 6e 61 6c 20 61 72 67 75 6d 65 6e 74 20   final argument 
b1e0: 74 6f 20 72 6f 75 74 69 6e 65 73 20 6c 69 6b 65  to routines like
b1f0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
b200: 62 6c 6f 62 28 29 2e 20 20 49 66 20 74 68 65 20  blob().  If the 
b210: 64 65 73 74 72 75 63 74 6f 72 0a 2a 2a 20 61 72  destructor.** ar
b220: 67 75 6d 65 6e 74 20 69 73 20 53 51 4c 49 54 45  gument is SQLITE
b230: 5f 53 54 41 54 49 43 2c 20 69 74 20 6d 65 61 6e  _STATIC, it mean
b240: 73 20 74 68 61 74 20 74 68 65 20 63 6f 6e 74 65  s that the conte
b250: 6e 74 20 70 6f 69 6e 74 65 72 20 69 73 20 63 6f  nt pointer is co
b260: 6e 73 74 61 6e 74 0a 2a 2a 20 61 6e 64 20 77 69  nstant.** and wi
b270: 6c 6c 20 6e 65 76 65 72 20 63 68 61 6e 67 65 2e  ll never change.
b280: 20 20 49 74 20 64 6f 65 73 20 6e 6f 74 20 6e 65    It does not ne
b290: 65 64 20 74 6f 20 62 65 20 64 65 73 74 72 6f 79  ed to be destroy
b2a0: 65 64 2e 20 20 54 68 65 20 0a 2a 2a 20 53 51 4c  ed.  The .** SQL
b2b0: 49 54 45 5f 54 52 41 4e 53 49 45 4e 54 20 76 61  ITE_TRANSIENT va
b2c0: 6c 75 65 20 6d 65 61 6e 73 20 74 68 61 74 20 74  lue means that t
b2d0: 68 65 20 63 6f 6e 74 65 6e 74 20 77 69 6c 6c 20  he content will 
b2e0: 6c 69 6b 65 6c 79 20 63 68 61 6e 67 65 20 69 6e  likely change in
b2f0: 0a 2a 2a 20 74 68 65 20 6e 65 61 72 20 66 75 74  .** the near fut
b300: 75 72 65 20 61 6e 64 20 74 68 61 74 20 53 51 4c  ure and that SQL
b310: 69 74 65 20 73 68 6f 75 6c 64 20 6d 61 6b 65 20  ite should make 
b320: 69 74 73 20 6f 77 6e 20 70 72 69 76 61 74 65 20  its own private 
b330: 63 6f 70 79 20 6f 66 0a 2a 2a 20 74 68 65 20 63  copy of.** the c
b340: 6f 6e 74 65 6e 74 20 62 65 66 6f 72 65 20 72 65  ontent before re
b350: 74 75 72 6e 69 6e 67 2e 0a 2a 2f 0a 23 64 65 66  turning..*/.#def
b360: 69 6e 65 20 53 51 4c 49 54 45 5f 53 54 41 54 49  ine SQLITE_STATI
b370: 43 20 20 20 20 20 20 28 28 76 6f 69 64 28 2a 29  C      ((void(*)
b380: 28 76 6f 69 64 20 2a 29 29 30 29 0a 23 64 65 66  (void *))0).#def
b390: 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 4e 53  ine SQLITE_TRANS
b3a0: 49 45 4e 54 20 20 20 28 28 76 6f 69 64 28 2a 29  IENT   ((void(*)
b3b0: 28 76 6f 69 64 20 2a 29 29 2d 31 29 0a 0a 2f 2a  (void *))-1)../*
b3c0: 0a 2a 2a 20 55 73 65 72 2d 64 65 66 69 6e 65 64  .** User-defined
b3d0: 20 66 75 6e 63 74 69 6f 6e 73 20 69 6e 76 6f 6b   functions invok
b3e0: 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  e the following 
b3f0: 72 6f 75 74 69 6e 65 73 20 69 6e 20 6f 72 64 65  routines in orde
b400: 72 20 74 6f 0a 2a 2a 20 73 65 74 20 74 68 65 69  r to.** set thei
b410: 72 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a  r return value..
b420: 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  */.void sqlite3_
b430: 72 65 73 75 6c 74 5f 62 6c 6f 62 28 73 71 6c 69  result_blob(sqli
b440: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f  te3_context*, co
b450: 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 20  nst void*, int, 
b460: 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b  void(*)(void*));
b470: 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65  .void sqlite3_re
b480: 73 75 6c 74 5f 64 6f 75 62 6c 65 28 73 71 6c 69  sult_double(sqli
b490: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 64 6f  te3_context*, do
b4a0: 75 62 6c 65 29 3b 0a 76 6f 69 64 20 73 71 6c 69  uble);.void sqli
b4b0: 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
b4c0: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
b4d0: 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20  *, const char*, 
b4e0: 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74  int);.void sqlit
b4f0: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31  e3_result_error1
b500: 36 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  6(sqlite3_contex
b510: 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  t*, const void*,
b520: 20 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69   int);.void sqli
b530: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 73  te3_result_int(s
b540: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c  qlite3_context*,
b550: 20 69 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69   int);.void sqli
b560: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
b570: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
b580: 2a 2c 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 29  *, sqlite_int64)
b590: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
b5a0: 65 73 75 6c 74 5f 6e 75 6c 6c 28 73 71 6c 69 74  esult_null(sqlit
b5b0: 65 33 5f 63 6f 6e 74 65 78 74 2a 29 3b 0a 76 6f  e3_context*);.vo
b5c0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b5d0: 74 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f 63  t_text(sqlite3_c
b5e0: 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 63  ontext*, const c
b5f0: 68 61 72 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 28  har*, int, void(
b600: 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64  *)(void*));.void
b610: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
b620: 74 65 78 74 31 36 28 73 71 6c 69 74 65 33 5f 63  text16(sqlite3_c
b630: 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76  ontext*, const v
b640: 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 28  oid*, int, void(
b650: 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64  *)(void*));.void
b660: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
b670: 74 65 78 74 31 36 6c 65 28 73 71 6c 69 74 65 33  text16le(sqlite3
b680: 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74  _context*, const
b690: 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 76 6f 69 64   void*, int,void
b6a0: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69  (*)(void*));.voi
b6b0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
b6c0: 5f 74 65 78 74 31 36 62 65 28 73 71 6c 69 74 65  _text16be(sqlite
b6d0: 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73  3_context*, cons
b6e0: 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 76 6f 69  t void*, int,voi
b6f0: 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f  d(*)(void*));.vo
b700: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b710: 74 5f 76 61 6c 75 65 28 73 71 6c 69 74 65 33 5f  t_value(sqlite3_
b720: 63 6f 6e 74 65 78 74 2a 2c 20 73 71 6c 69 74 65  context*, sqlite
b730: 33 5f 76 61 6c 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a  3_value*);../*.*
b740: 2a 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20  * These are the 
b750: 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 66  allowed values f
b760: 6f 72 20 74 68 65 20 65 54 65 78 74 52 65 70 20  or the eTextRep 
b770: 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73  argument to.** s
b780: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
b790: 6c 6c 61 74 69 6f 6e 20 61 6e 64 20 73 71 6c 69  llation and sqli
b7a0: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
b7b0: 69 6f 6e 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  ion..*/.#define 
b7c0: 53 51 4c 49 54 45 5f 55 54 46 38 20 20 20 20 31  SQLITE_UTF8    1
b7d0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b7e0: 55 54 46 31 36 4c 45 20 32 0a 23 64 65 66 69 6e  UTF16LE 2.#defin
b7f0: 65 20 53 51 4c 49 54 45 5f 55 54 46 31 36 42 45  e SQLITE_UTF16BE
b800: 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   3.#define SQLIT
b810: 45 5f 55 54 46 31 36 20 20 20 34 20 20 20 20 2f  E_UTF16   4    /
b820: 2a 20 55 73 65 20 6e 61 74 69 76 65 20 62 79 74  * Use native byt
b830: 65 20 6f 72 64 65 72 20 2a 2f 0a 23 64 65 66 69  e order */.#defi
b840: 6e 65 20 53 51 4c 49 54 45 5f 41 4e 59 20 20 20  ne SQLITE_ANY   
b850: 20 20 35 20 20 20 20 2f 2a 20 73 71 6c 69 74 65    5    /* sqlite
b860: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
b870: 6e 20 6f 6e 6c 79 20 2a 2f 0a 0a 2f 2a 0a 2a 2a  n only */../*.**
b880: 20 54 68 65 73 65 20 74 77 6f 20 66 75 6e 63 74   These two funct
b890: 69 6f 6e 73 20 61 72 65 20 75 73 65 64 20 74 6f  ions are used to
b8a0: 20 61 64 64 20 6e 65 77 20 63 6f 6c 6c 61 74 69   add new collati
b8b0: 6f 6e 20 73 65 71 75 65 6e 63 65 73 20 74 6f 20  on sequences to 
b8c0: 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 20 68  the.** sqlite3 h
b8d0: 61 6e 64 6c 65 20 73 70 65 63 69 66 69 65 64 20  andle specified 
b8e0: 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72 67  as the first arg
b8f0: 75 6d 65 6e 74 2e 20 0a 2a 2a 0a 2a 2a 20 54 68  ument. .**.** Th
b900: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 65  e name of the ne
b910: 77 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  w collation sequ
b920: 65 6e 63 65 20 69 73 20 73 70 65 63 69 66 69 65  ence is specifie
b930: 64 20 61 73 20 61 20 55 54 46 2d 38 20 73 74 72  d as a UTF-8 str
b940: 69 6e 67 0a 2a 2a 20 66 6f 72 20 73 71 6c 69 74  ing.** for sqlit
b950: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
b960: 69 6f 6e 28 29 20 61 6e 64 20 61 20 55 54 46 2d  ion() and a UTF-
b970: 31 36 20 73 74 72 69 6e 67 20 66 6f 72 0a 2a 2a  16 string for.**
b980: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
b990: 63 6f 6c 6c 61 74 69 6f 6e 31 36 28 29 2e 20 49  collation16(). I
b9a0: 6e 20 62 6f 74 68 20 63 61 73 65 73 20 74 68 65  n both cases the
b9b0: 20 6e 61 6d 65 20 69 73 20 70 61 73 73 65 64 20   name is passed 
b9c0: 61 73 20 74 68 65 0a 2a 2a 20 73 65 63 6f 6e 64  as the.** second
b9d0: 20 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65   function argume
b9e0: 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 68  nt..**.** The th
b9f0: 69 72 64 20 61 72 67 75 6d 65 6e 74 20 6d 75 73  ird argument mus
ba00: 74 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20  t be one of the 
ba10: 63 6f 6e 73 74 61 6e 74 73 20 53 51 4c 49 54 45  constants SQLITE
ba20: 5f 55 54 46 38 2c 0a 2a 2a 20 53 51 4c 49 54 45  _UTF8,.** SQLITE
ba30: 5f 55 54 46 31 36 4c 45 20 6f 72 20 53 51 4c 49  _UTF16LE or SQLI
ba40: 54 45 5f 55 54 46 31 36 42 45 2c 20 69 6e 64 69  TE_UTF16BE, indi
ba50: 63 61 74 69 6e 67 20 74 68 61 74 20 74 68 65 20  cating that the 
ba60: 75 73 65 72 2d 73 75 70 70 6c 69 65 64 0a 2a 2a  user-supplied.**
ba70: 20 72 6f 75 74 69 6e 65 20 65 78 70 65 63 74 73   routine expects
ba80: 20 74 6f 20 62 65 20 70 61 73 73 65 64 20 70 6f   to be passed po
ba90: 69 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67  inters to string
baa0: 73 20 65 6e 63 6f 64 65 64 20 75 73 69 6e 67 20  s encoded using 
bab0: 55 54 46 2d 38 2c 0a 2a 2a 20 55 54 46 2d 31 36  UTF-8,.** UTF-16
bac0: 20 6c 69 74 74 6c 65 2d 65 6e 64 69 61 6e 20 6f   little-endian o
bad0: 72 20 55 54 46 2d 31 36 20 62 69 67 2d 65 6e 64  r UTF-16 big-end
bae0: 69 61 6e 20 72 65 73 70 65 63 74 69 76 65 6c 79  ian respectively
baf0: 2e 0a 2a 2a 0a 2a 2a 20 41 20 70 6f 69 6e 74 65  ..**.** A pointe
bb00: 72 20 74 6f 20 74 68 65 20 75 73 65 72 20 73 75  r to the user su
bb10: 70 70 6c 69 65 64 20 72 6f 75 74 69 6e 65 20 6d  pplied routine m
bb20: 75 73 74 20 62 65 20 70 61 73 73 65 64 20 61 73  ust be passed as
bb30: 20 74 68 65 20 66 69 66 74 68 0a 2a 2a 20 61 72   the fifth.** ar
bb40: 67 75 6d 65 6e 74 2e 20 49 66 20 69 74 20 69 73  gument. If it is
bb50: 20 4e 55 4c 4c 2c 20 74 68 69 73 20 69 73 20 74   NULL, this is t
bb60: 68 65 20 73 61 6d 65 20 61 73 20 64 65 6c 65 74  he same as delet
bb70: 69 6e 67 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f  ing the collatio
bb80: 6e 0a 2a 2a 20 73 65 71 75 65 6e 63 65 20 28 73  n.** sequence (s
bb90: 6f 20 74 68 61 74 20 53 51 4c 69 74 65 20 63 61  o that SQLite ca
bba0: 6e 6e 6f 74 20 63 61 6c 6c 20 69 74 20 61 6e 79  nnot call it any
bbb0: 6d 6f 72 65 29 2e 20 45 61 63 68 20 74 69 6d 65  more). Each time
bbc0: 20 74 68 65 20 75 73 65 72 0a 2a 2a 20 73 75 70   the user.** sup
bbd0: 70 6c 69 65 64 20 66 75 6e 63 74 69 6f 6e 20 69  plied function i
bbe0: 73 20 69 6e 76 6f 6b 65 64 2c 20 69 74 20 69 73  s invoked, it is
bbf0: 20 70 61 73 73 65 64 20 61 20 63 6f 70 79 20 6f   passed a copy o
bc00: 66 20 74 68 65 20 76 6f 69 64 2a 20 70 61 73 73  f the void* pass
bc10: 65 64 20 61 73 0a 2a 2a 20 74 68 65 20 66 6f 75  ed as.** the fou
bc20: 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  rth argument to 
bc30: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
bc40: 6f 6c 6c 61 74 69 6f 6e 28 29 20 6f 72 0a 2a 2a  ollation() or.**
bc50: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
bc60: 63 6f 6c 6c 61 74 69 6f 6e 31 36 28 29 20 61 73  collation16() as
bc70: 20 69 74 73 20 66 69 72 73 74 20 70 61 72 61 6d   its first param
bc80: 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eter..**.** The 
bc90: 72 65 6d 61 69 6e 69 6e 67 20 61 72 67 75 6d 65  remaining argume
bca0: 6e 74 73 20 74 6f 20 74 68 65 20 75 73 65 72 2d  nts to the user-
bcb0: 73 75 70 70 6c 69 65 64 20 72 6f 75 74 69 6e 65  supplied routine
bcc0: 20 61 72 65 20 74 77 6f 20 73 74 72 69 6e 67 73   are two strings
bcd0: 2c 0a 2a 2a 20 65 61 63 68 20 72 65 70 72 65 73  ,.** each repres
bce0: 65 6e 74 65 64 20 62 79 20 61 20 5b 6c 65 6e 67  ented by a [leng
bcf0: 74 68 2c 20 64 61 74 61 5d 20 70 61 69 72 20 61  th, data] pair a
bd00: 6e 64 20 65 6e 63 6f 64 65 64 20 69 6e 20 74 68  nd encoded in th
bd10: 65 20 65 6e 63 6f 64 69 6e 67 0a 2a 2a 20 74 68  e encoding.** th
bd20: 61 74 20 77 61 73 20 70 61 73 73 65 64 20 61 73  at was passed as
bd30: 20 74 68 65 20 74 68 69 72 64 20 61 72 67 75 6d   the third argum
bd40: 65 6e 74 20 77 68 65 6e 20 74 68 65 20 63 6f 6c  ent when the col
bd50: 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
bd60: 77 61 73 0a 2a 2a 20 72 65 67 69 73 74 65 72 65  was.** registere
bd70: 64 2e 20 54 68 65 20 75 73 65 72 20 72 6f 75 74  d. The user rout
bd80: 69 6e 65 20 73 68 6f 75 6c 64 20 72 65 74 75 72  ine should retur
bd90: 6e 20 6e 65 67 61 74 69 76 65 2c 20 7a 65 72 6f  n negative, zero
bda0: 20 6f 72 20 70 6f 73 69 74 69 76 65 20 69 66 0a   or positive if.
bdb0: 2a 2a 20 74 68 65 20 66 69 72 73 74 20 73 74 72  ** the first str
bdc0: 69 6e 67 20 69 73 20 6c 65 73 73 20 74 68 61 6e  ing is less than
bdd0: 2c 20 65 71 75 61 6c 20 74 6f 2c 20 6f 72 20 67  , equal to, or g
bde0: 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 65 20  reater than the 
bdf0: 73 65 63 6f 6e 64 0a 2a 2a 20 73 74 72 69 6e 67  second.** string
be00: 2e 20 69 2e 65 2e 20 28 53 54 52 49 4e 47 31 20  . i.e. (STRING1 
be10: 2d 20 53 54 52 49 4e 47 32 29 2e 0a 2a 2f 0a 69  - STRING2)..*/.i
be20: 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  nt sqlite3_creat
be30: 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 0a 20 20 73  e_collation(.  s
be40: 71 6c 69 74 65 33 2a 2c 20 0a 20 20 63 6f 6e 73  qlite3*, .  cons
be50: 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 0a  t char *zName, .
be60: 20 20 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20    int eTextRep, 
be70: 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 69 6e 74 28  .  void*,.  int(
be80: 2a 78 43 6f 6d 70 61 72 65 29 28 76 6f 69 64 2a  *xCompare)(void*
be90: 2c 69 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a  ,int,const void*
bea0: 2c 69 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a  ,int,const void*
beb0: 29 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  ).);.int sqlite3
bec0: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
bed0: 6e 31 36 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c  n16(.  sqlite3*,
bee0: 20 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a   .  const char *
bef0: 7a 4e 61 6d 65 2c 20 0a 20 20 69 6e 74 20 65 54  zName, .  int eT
bf00: 65 78 74 52 65 70 2c 20 0a 20 20 76 6f 69 64 2a  extRep, .  void*
bf10: 2c 0a 20 20 69 6e 74 28 2a 78 43 6f 6d 70 61 72  ,.  int(*xCompar
bf20: 65 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e  e)(void*,int,con
bf30: 73 74 20 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e  st void*,int,con
bf40: 73 74 20 76 6f 69 64 2a 29 0a 29 3b 0a 0a 2f 2a  st void*).);../*
bf50: 0a 2a 2a 20 54 6f 20 61 76 6f 69 64 20 68 61 76  .** To avoid hav
bf60: 69 6e 67 20 74 6f 20 72 65 67 69 73 74 65 72 20  ing to register 
bf70: 61 6c 6c 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  all collation se
bf80: 71 75 65 6e 63 65 73 20 62 65 66 6f 72 65 20 61  quences before a
bf90: 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 61 6e   database.** can
bfa0: 20 62 65 20 75 73 65 64 2c 20 61 20 73 69 6e 67   be used, a sing
bfb0: 6c 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  le callback func
bfc0: 74 69 6f 6e 20 6d 61 79 20 62 65 20 72 65 67 69  tion may be regi
bfd0: 73 74 65 72 65 64 20 77 69 74 68 20 74 68 65 0a  stered with the.
bfe0: 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61 6e 64  ** database hand
bff0: 6c 65 20 74 6f 20 62 65 20 63 61 6c 6c 65 64 20  le to be called 
c000: 77 68 65 6e 65 76 65 72 20 61 6e 20 75 6e 64 65  whenever an unde
c010: 66 69 6e 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20  fined collation 
c020: 73 65 71 75 65 6e 63 65 20 69 73 0a 2a 2a 20 72  sequence is.** r
c030: 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 49  equired..**.** I
c040: 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69  f the function i
c050: 73 20 72 65 67 69 73 74 65 72 65 64 20 75 73 69  s registered usi
c060: 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  ng the sqlite3_c
c070: 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 28  ollation_needed(
c080: 29 20 41 50 49 2c 0a 2a 2a 20 74 68 65 6e 20 69  ) API,.** then i
c090: 74 20 69 73 20 70 61 73 73 65 64 20 74 68 65 20  t is passed the 
c0a0: 6e 61 6d 65 73 20 6f 66 20 75 6e 64 65 66 69 6e  names of undefin
c0b0: 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71  ed collation seq
c0c0: 75 65 6e 63 65 73 20 61 73 20 73 74 72 69 6e 67  uences as string
c0d0: 73 0a 2a 2a 20 65 6e 63 6f 64 65 64 20 69 6e 20  s.** encoded in 
c0e0: 55 54 46 2d 38 2e 20 49 66 20 73 71 6c 69 74 65  UTF-8. If sqlite
c0f0: 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64  3_collation_need
c100: 65 64 31 36 28 29 20 69 73 20 75 73 65 64 2c 20  ed16() is used, 
c110: 74 68 65 20 6e 61 6d 65 73 0a 2a 2a 20 61 72 65  the names.** are
c120: 20 70 61 73 73 65 64 20 61 73 20 55 54 46 2d 31   passed as UTF-1
c130: 36 20 69 6e 20 6d 61 63 68 69 6e 65 20 6e 61 74  6 in machine nat
c140: 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e 20  ive byte order. 
c150: 41 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72  A call to either
c160: 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 72 65 70  .** function rep
c170: 6c 61 63 65 73 20 61 6e 79 20 65 78 69 73 74 69  laces any existi
c180: 6e 67 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a  ng callback..**.
c190: 2a 2a 20 57 68 65 6e 20 74 68 65 20 75 73 65 72  ** When the user
c1a0: 2d 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76  -function is inv
c1b0: 6f 6b 65 64 2c 20 74 68 65 20 66 69 72 73 74 20  oked, the first 
c1c0: 61 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20  argument passed 
c1d0: 69 73 20 61 20 63 6f 70 79 0a 2a 2a 20 6f 66 20  is a copy.** of 
c1e0: 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  the second argum
c1f0: 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63  ent to sqlite3_c
c200: 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 28  ollation_needed(
c210: 29 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ) or.** sqlite3_
c220: 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64  collation_needed
c230: 31 36 28 29 2e 20 54 68 65 20 73 65 63 6f 6e 64  16(). The second
c240: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
c250: 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 68 61 6e   database.** han
c260: 64 6c 65 2e 20 54 68 65 20 74 68 69 72 64 20 61  dle. The third a
c270: 72 67 75 6d 65 6e 74 20 69 73 20 6f 6e 65 20 6f  rgument is one o
c280: 66 20 53 51 4c 49 54 45 5f 55 54 46 38 2c 20 53  f SQLITE_UTF8, S
c290: 51 4c 49 54 45 5f 55 54 46 31 36 42 45 20 6f 72  QLITE_UTF16BE or
c2a0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 55 54 46 31 36  .** SQLITE_UTF16
c2b0: 4c 45 2c 20 69 6e 64 69 63 61 74 69 6e 67 20 74  LE, indicating t
c2c0: 68 65 20 6d 6f 73 74 20 64 65 73 69 72 61 62 6c  he most desirabl
c2d0: 65 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 63 6f  e form of the co
c2e0: 6c 6c 61 74 69 6f 6e 0a 2a 2a 20 73 65 71 75 65  llation.** seque
c2f0: 6e 63 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 71  nce function req
c300: 75 69 72 65 64 2e 20 54 68 65 20 66 6f 75 72 74  uired. The fourt
c310: 68 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  h parameter is t
c320: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 0a 2a  he name of the.*
c330: 2a 20 72 65 71 75 69 72 65 64 20 63 6f 6c 6c 61  * required colla
c340: 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 2e 0a 2a  tion sequence..*
c350: 2a 0a 2a 2a 20 54 68 65 20 63 6f 6c 6c 61 74 69  *.** The collati
c360: 6f 6e 20 73 65 71 75 65 6e 63 65 20 69 73 20 72  on sequence is r
c370: 65 74 75 72 6e 65 64 20 74 6f 20 53 51 4c 69 74  eturned to SQLit
c380: 65 20 62 79 20 61 20 63 6f 6c 6c 61 74 69 6f 6e  e by a collation
c390: 2d 6e 65 65 64 65 64 0a 2a 2a 20 63 61 6c 6c 62  -needed.** callb
c3a0: 61 63 6b 20 75 73 69 6e 67 20 74 68 65 20 73 71  ack using the sq
c3b0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
c3c0: 6c 61 74 69 6f 6e 28 29 20 6f 72 0a 2a 2a 20 73  lation() or.** s
c3d0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
c3e0: 6c 6c 61 74 69 6f 6e 31 36 28 29 20 41 50 49 73  llation16() APIs
c3f0: 2c 20 64 65 73 63 72 69 62 65 64 20 61 62 6f 76  , described abov
c400: 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  e..*/.int sqlite
c410: 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64  3_collation_need
c420: 65 64 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20  ed(.  sqlite3*, 
c430: 0a 20 20 76 6f 69 64 2a 2c 20 0a 20 20 76 6f 69  .  void*, .  voi
c440: 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71 6c 69 74  d(*)(void*,sqlit
c450: 65 33 2a 2c 69 6e 74 20 65 54 65 78 74 52 65 70  e3*,int eTextRep
c460: 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 0a 29 3b  ,const char*).);
c470: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c  .int sqlite3_col
c480: 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 31 36 28  lation_needed16(
c490: 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20  .  sqlite3*, .  
c4a0: 76 6f 69 64 2a 2c 0a 20 20 76 6f 69 64 28 2a 29  void*,.  void(*)
c4b0: 28 76 6f 69 64 2a 2c 73 71 6c 69 74 65 33 2a 2c  (void*,sqlite3*,
c4c0: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 63 6f 6e  int eTextRep,con
c4d0: 73 74 20 76 6f 69 64 2a 29 0a 29 3b 0a 0a 2f 2a  st void*).);../*
c4e0: 0a 2a 2a 20 53 70 65 63 69 66 79 20 74 68 65 20  .** Specify the 
c4f0: 6b 65 79 20 66 6f 72 20 61 6e 20 65 6e 63 72 79  key for an encry
c500: 70 74 65 64 20 64 61 74 61 62 61 73 65 2e 20 20  pted database.  
c510: 54 68 69 73 20 72 6f 75 74 69 6e 65 20 73 68 6f  This routine sho
c520: 75 6c 64 20 62 65 0a 2a 2a 20 63 61 6c 6c 65 64  uld be.** called
c530: 20 72 69 67 68 74 20 61 66 74 65 72 20 73 71 6c   right after sql
c540: 69 74 65 33 5f 6f 70 65 6e 28 29 2e 0a 2a 2a 0a  ite3_open()..**.
c550: 2a 2a 20 54 68 65 20 63 6f 64 65 20 74 6f 20 69  ** The code to i
c560: 6d 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 41 50  mplement this AP
c570: 49 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  I is not availab
c580: 6c 65 20 69 6e 20 74 68 65 20 70 75 62 6c 69 63  le in the public
c590: 20 72 65 6c 65 61 73 65 0a 2a 2a 20 6f 66 20 53   release.** of S
c5a0: 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71  QLite..*/.int sq
c5b0: 6c 69 74 65 33 5f 6b 65 79 28 0a 20 20 73 71 6c  lite3_key(.  sql
c5c0: 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44              /* D
c5e0: 61 74 61 62 61 73 65 20 74 6f 20 62 65 20 72 65  atabase to be re
c5f0: 6b 65 79 65 64 20 2a 2f 0a 20 20 63 6f 6e 73 74  keyed */.  const
c600: 20 76 6f 69 64 20 2a 70 4b 65 79 2c 20 69 6e 74   void *pKey, int
c610: 20 6e 4b 65 79 20 20 20 20 20 2f 2a 20 54 68 65   nKey     /* The
c620: 20 6b 65 79 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a   key */.);../*.*
c630: 2a 20 43 68 61 6e 67 65 20 74 68 65 20 6b 65 79  * Change the key
c640: 20 6f 6e 20 61 6e 20 6f 70 65 6e 20 64 61 74 61   on an open data
c650: 62 61 73 65 2e 20 20 49 66 20 74 68 65 20 63 75  base.  If the cu
c660: 72 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 69  rrent database i
c670: 73 20 6e 6f 74 0a 2a 2a 20 65 6e 63 72 79 70 74  s not.** encrypt
c680: 65 64 2c 20 74 68 69 73 20 72 6f 75 74 69 6e 65  ed, this routine
c690: 20 77 69 6c 6c 20 65 6e 63 72 79 70 74 20 69 74   will encrypt it
c6a0: 2e 20 20 49 66 20 70 4e 65 77 3d 3d 30 20 6f 72  .  If pNew==0 or
c6b0: 20 6e 4e 65 77 3d 3d 30 2c 20 74 68 65 0a 2a 2a   nNew==0, the.**
c6c0: 20 64 61 74 61 62 61 73 65 20 69 73 20 64 65 63   database is dec
c6d0: 72 79 70 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  rypted..**.** Th
c6e0: 65 20 63 6f 64 65 20 74 6f 20 69 6d 70 6c 65 6d  e code to implem
c6f0: 65 6e 74 20 74 68 69 73 20 41 50 49 20 69 73 20  ent this API is 
c700: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 69 6e  not available in
c710: 20 74 68 65 20 70 75 62 6c 69 63 20 72 65 6c 65   the public rele
c720: 61 73 65 0a 2a 2a 20 6f 66 20 53 51 4c 69 74 65  ase.** of SQLite
c730: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
c740: 5f 72 65 6b 65 79 28 0a 20 20 73 71 6c 69 74 65  _rekey(.  sqlite
c750: 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20  3 *db,          
c760: 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
c770: 62 61 73 65 20 74 6f 20 62 65 20 72 65 6b 65 79  base to be rekey
c780: 65 64 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f  ed */.  const vo
c790: 69 64 20 2a 70 4b 65 79 2c 20 69 6e 74 20 6e 4b  id *pKey, int nK
c7a0: 65 79 20 20 20 20 20 2f 2a 20 54 68 65 20 6e 65  ey     /* The ne
c7b0: 77 20 6b 65 79 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a  w key */.);../*.
c7c0: 2a 2a 20 53 6c 65 65 70 20 66 6f 72 20 61 20 6c  ** Sleep for a l
c7d0: 69 74 74 6c 65 20 77 68 69 6c 65 2e 20 54 68 65  ittle while. The
c7e0: 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
c7f0: 72 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20  r is the number 
c800: 6f 66 0a 2a 2a 20 6d 69 6c 69 73 65 63 6f 6e 64  of.** milisecond
c810: 73 20 74 6f 20 73 6c 65 65 70 20 66 6f 72 2e 20  s to sleep for. 
c820: 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 6f 70  .**.** If the op
c830: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 64  erating system d
c840: 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20  oes not support 
c850: 73 6c 65 65 70 20 72 65 71 75 65 73 74 73 20 77  sleep requests w
c860: 69 74 68 20 0a 2a 2a 20 6d 69 6c 69 73 65 63 6f  ith .** miliseco
c870: 6e 64 20 74 69 6d 65 20 72 65 73 6f 6c 75 74 69  nd time resoluti
c880: 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 74 69 6d  on, then the tim
c890: 65 20 77 69 6c 6c 20 62 65 20 72 6f 75 6e 64 65  e will be rounde
c8a0: 64 20 75 70 20 74 6f 20 0a 2a 2a 20 74 68 65 20  d up to .** the 
c8b0: 6e 65 61 72 65 73 74 20 73 65 63 6f 6e 64 2e 20  nearest second. 
c8c0: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69  The number of mi
c8d0: 6c 69 73 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65  liseconds of sle
c8e0: 65 70 20 61 63 74 75 61 6c 6c 79 20 0a 2a 2a 20  ep actually .** 
c8f0: 72 65 71 75 65 73 74 65 64 20 66 72 6f 6d 20 74  requested from t
c900: 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
c910: 74 65 6d 20 69 73 20 72 65 74 75 72 6e 65 64 2e  tem is returned.
c920: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
c930: 73 6c 65 65 70 28 69 6e 74 29 3b 0a 0a 2f 2a 0a  sleep(int);../*.
c940: 2a 2a 20 52 65 74 75 72 6e 20 54 52 55 45 20 28  ** Return TRUE (
c950: 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66 20 74 68 65  non-zero) if the
c960: 20 73 74 61 74 65 6d 65 6e 74 20 73 75 70 70 6c   statement suppl
c970: 69 65 64 20 61 73 20 61 6e 20 61 72 67 75 6d 65  ied as an argume
c980: 6e 74 20 6e 65 65 64 73 0a 2a 2a 20 74 6f 20 62  nt needs.** to b
c990: 65 20 72 65 63 6f 6d 70 69 6c 65 64 2e 20 20 41  e recompiled.  A
c9a0: 20 73 74 61 74 65 6d 65 6e 74 20 6e 65 65 64 73   statement needs
c9b0: 20 74 6f 20 62 65 20 72 65 63 6f 6d 70 69 6c 65   to be recompile
c9c0: 64 20 77 68 65 6e 65 76 65 72 20 74 68 65 0a 2a  d whenever the.*
c9d0: 2a 20 65 78 65 63 75 74 69 6f 6e 20 65 6e 76 69  * execution envi
c9e0: 72 6f 6e 6d 65 6e 74 20 63 68 61 6e 67 65 73 20  ronment changes 
c9f0: 69 6e 20 61 20 77 61 79 20 74 68 61 74 20 77 6f  in a way that wo
ca00: 75 6c 64 20 61 6c 74 65 72 20 74 68 65 20 70 72  uld alter the pr
ca10: 6f 67 72 61 6d 0a 2a 2a 20 74 68 61 74 20 73 71  ogram.** that sq
ca20: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20  lite3_prepare() 
ca30: 67 65 6e 65 72 61 74 65 73 2e 20 20 46 6f 72 20  generates.  For 
ca40: 65 78 61 6d 70 6c 65 2c 20 69 66 20 6e 65 77 20  example, if new 
ca50: 66 75 6e 63 74 69 6f 6e 73 20 6f 72 0a 2a 2a 20  functions or.** 
ca60: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
ca70: 63 65 73 20 61 72 65 20 72 65 67 69 73 74 65 72  ces are register
ca80: 65 64 20 6f 72 20 69 66 20 61 6e 20 61 75 74 68  ed or if an auth
ca90: 6f 72 69 7a 65 72 20 66 75 6e 63 74 69 6f 6e 20  orizer function 
caa0: 69 73 0a 2a 2a 20 61 64 64 65 64 20 6f 72 20 63  is.** added or c
cab0: 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2f 0a 69 6e  hanged..**.*/.in
cac0: 74 20 73 71 6c 69 74 65 33 5f 65 78 70 69 72 65  t sqlite3_expire
cad0: 64 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29  d(sqlite3_stmt*)
cae0: 3b 0a 0a 2f 2a 0a 2a 2a 20 4d 6f 76 65 20 61 6c  ;../*.** Move al
caf0: 6c 20 62 69 6e 64 69 6e 67 73 20 66 72 6f 6d 20  l bindings from 
cb00: 74 68 65 20 66 69 72 73 74 20 70 72 65 70 61 72  the first prepar
cb10: 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 76 65  ed statement ove
cb20: 72 20 74 6f 20 74 68 65 20 73 65 63 6f 6e 64 2e  r to the second.
cb30: 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65  .** This routine
cb40: 20 69 73 20 75 73 65 66 75 6c 2c 20 66 6f 72 20   is useful, for 
cb50: 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 20  example, if the 
cb60: 66 69 72 73 74 20 70 72 65 70 61 72 65 64 20 73  first prepared s
cb70: 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 66 61 69 6c  tatement.** fail
cb80: 73 20 77 69 74 68 20 61 6e 20 53 51 4c 49 54 45  s with an SQLITE
cb90: 5f 53 43 48 45 4d 41 20 65 72 72 6f 72 2e 20 20  _SCHEMA error.  
cba0: 54 68 65 20 73 61 6d 65 20 53 51 4c 20 63 61 6e  The same SQL can
cbb0: 20 62 65 20 70 72 65 70 61 72 65 64 20 69 6e 74   be prepared int
cbc0: 6f 0a 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64 20  o.** the second 
cbd0: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
cbe0: 6e 74 20 74 68 65 6e 20 61 6c 6c 20 6f 66 20 74  nt then all of t
cbf0: 68 65 20 62 69 6e 64 69 6e 67 73 20 74 72 61 6e  he bindings tran
cc00: 73 66 65 72 65 64 20 6f 76 65 72 0a 2a 2a 20 74  sfered over.** t
cc10: 6f 20 74 68 65 20 73 65 63 6f 6e 64 20 73 74 61  o the second sta
cc20: 74 65 6d 65 6e 74 20 62 65 66 6f 72 65 20 74 68  tement before th
cc30: 65 20 66 69 72 73 74 20 73 74 61 74 65 6d 65 6e  e first statemen
cc40: 74 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 2e 0a  t is finalized..
cc50: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 74  */.int sqlite3_t
cc60: 72 61 6e 73 66 65 72 5f 62 69 6e 64 69 6e 67 73  ransfer_bindings
cc70: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
cc80: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a  sqlite3_stmt*);.
cc90: 0a 2f 2a 0a 2a 2a 20 49 66 20 74 68 65 20 66 6f  ./*.** If the fo
cca0: 6c 6c 6f 77 69 6e 67 20 67 6c 6f 62 61 6c 20 76  llowing global v
ccb0: 61 72 69 61 62 6c 65 20 69 73 20 6d 61 64 65 20  ariable is made 
ccc0: 74 6f 20 70 6f 69 6e 74 20 74 6f 20 61 0a 2a 2a  to point to a.**
ccd0: 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 69 73   string which is
cce0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 64   the name of a d
ccf0: 69 72 65 63 74 6f 72 79 2c 20 74 68 65 6e 20 61  irectory, then a
cd00: 6c 6c 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  ll temporary fil
cd10: 65 73 0a 2a 2a 20 63 72 65 61 74 65 64 20 62 79  es.** created by
cd20: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 62 65 20   SQLite will be 
cd30: 70 6c 61 63 65 64 20 69 6e 20 74 68 61 74 20 64  placed in that d
cd40: 69 72 65 63 74 6f 72 79 2e 20 20 49 66 20 74 68  irectory.  If th
cd50: 69 73 20 76 61 72 69 61 62 6c 65 0a 2a 2a 20 69  is variable.** i
cd60: 73 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20  s NULL pointer, 
cd70: 74 68 65 6e 20 53 51 4c 69 74 65 20 64 6f 65 73  then SQLite does
cd80: 20 61 20 73 65 61 72 63 68 20 66 6f 72 20 61 6e   a search for an
cd90: 20 61 70 70 72 6f 70 72 69 61 74 65 20 74 65 6d   appropriate tem
cda0: 70 6f 72 61 72 79 0a 2a 2a 20 66 69 6c 65 20 64  porary.** file d
cdb0: 69 72 65 63 74 6f 72 79 2e 0a 2a 2a 0a 2a 2a 20  irectory..**.** 
cdc0: 4f 6e 63 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Once sqlite3_ope
cdd0: 6e 28 29 20 68 61 73 20 62 65 65 6e 20 63 61 6c  n() has been cal
cde0: 6c 65 64 2c 20 63 68 61 6e 67 69 6e 67 20 74 68  led, changing th
cdf0: 69 73 20 76 61 72 69 61 62 6c 65 20 77 69 6c 6c  is variable will
ce00: 20 69 6e 76 61 6c 69 64 61 74 65 0a 2a 2a 20 74   invalidate.** t
ce10: 68 65 20 63 75 72 72 65 6e 74 20 74 65 6d 70 6f  he current tempo
ce20: 72 61 72 79 20 64 61 74 61 62 61 73 65 2c 20 69  rary database, i
ce30: 66 20 61 6e 79 2e 0a 2a 2f 0a 65 78 74 65 72 6e  f any..*/.extern
ce40: 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 74   char *sqlite3_t
ce50: 65 6d 70 5f 64 69 72 65 63 74 6f 72 79 3b 0a 0a  emp_directory;..
ce60: 2f 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74  /*.** This funct
ce70: 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 74 6f  ion is called to
ce80: 20 72 65 63 6f 76 65 72 20 66 72 6f 6d 20 61 20   recover from a 
ce90: 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 75 72 65  malloc() failure
cea0: 20 74 68 61 74 20 6f 63 63 75 72 65 64 0a 2a 2a   that occured.**
ceb0: 20 77 69 74 68 69 6e 20 74 68 65 20 53 51 4c 69   within the SQLi
cec0: 74 65 20 6c 69 62 72 61 72 79 2e 20 4e 6f 72 6d  te library. Norm
ced0: 61 6c 6c 79 2c 20 61 66 74 65 72 20 61 20 73 69  ally, after a si
cee0: 6e 67 6c 65 20 6d 61 6c 6c 6f 63 28 29 20 66 61  ngle malloc() fa
cef0: 69 6c 73 20 74 68 65 20 0a 2a 2a 20 6c 69 62 72  ils the .** libr
cf00: 61 72 79 20 72 65 66 75 73 65 73 20 74 6f 20 66  ary refuses to f
cf10: 75 6e 63 74 69 6f 6e 20 28 61 6c 6c 20 6d 61 6a  unction (all maj
cf20: 6f 72 20 63 61 6c 6c 73 20 72 65 74 75 72 6e 20  or calls return 
cf30: 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 29 2e 0a 2a  SQLITE_NOMEM)..*
cf40: 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
cf50: 72 65 73 74 6f 72 65 73 20 74 68 65 20 6c 69 62  restores the lib
cf60: 72 61 72 79 20 73 74 61 74 65 20 73 6f 20 74 68  rary state so th
cf70: 61 74 20 69 74 20 63 61 6e 20 62 65 20 75 73 65  at it can be use
cf80: 64 20 61 67 61 69 6e 2e 0a 2a 2a 0a 2a 2a 20 41  d again..**.** A
cf90: 6c 6c 20 65 78 69 73 74 69 6e 67 20 73 74 61 74  ll existing stat
cfa0: 65 6d 65 6e 74 73 20 28 73 71 6c 69 74 65 33 5f  ements (sqlite3_
cfb0: 73 74 6d 74 20 70 6f 69 6e 74 65 72 73 29 20 6d  stmt pointers) m
cfc0: 75 73 74 20 62 65 20 66 69 6e 61 6c 69 7a 65 64  ust be finalized
cfd0: 20 6f 72 0a 2a 2a 20 72 65 73 65 74 20 62 65 66   or.** reset bef
cfe0: 6f 72 65 20 74 68 69 73 20 63 61 6c 6c 20 69 73  ore this call is
cff0: 20 6d 61 64 65 2e 20 4f 74 68 65 72 77 69 73 65   made. Otherwise
d000: 2c 20 53 51 4c 49 54 45 5f 42 55 53 59 20 69 73  , SQLITE_BUSY is
d010: 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 20 49 66   returned..** If
d020: 20 61 6e 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 64   any in-memory d
d030: 61 74 61 62 61 73 65 73 20 61 72 65 20 69 6e 20  atabases are in 
d040: 75 73 65 2c 20 65 69 74 68 65 72 20 61 73 20 61  use, either as a
d050: 20 6d 61 69 6e 20 6f 72 20 54 45 4d 50 0a 2a 2a   main or TEMP.**
d060: 20 64 61 74 61 62 61 73 65 2c 20 53 51 4c 49 54   database, SQLIT
d070: 45 5f 45 52 52 4f 52 20 69 73 20 72 65 74 75 72  E_ERROR is retur
d080: 6e 65 64 2e 20 49 6e 20 65 69 74 68 65 72 20 6f  ned. In either o
d090: 66 20 74 68 65 73 65 20 63 61 73 65 73 2c 20 74  f these cases, t
d0a0: 68 65 20 0a 2a 2a 20 6c 69 62 72 61 72 79 20 69  he .** library i
d0b0: 73 20 6e 6f 74 20 72 65 73 65 74 20 61 6e 64 20  s not reset and 
d0c0: 72 65 6d 61 69 6e 73 20 75 6e 75 73 61 62 6c 65  remains unusable
d0d0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e  ..**.** This fun
d0e0: 63 74 69 6f 6e 20 69 73 20 2a 6e 6f 74 2a 20 74  ction is *not* t
d0f0: 68 72 65 61 64 73 61 66 65 2e 20 43 61 6c 6c 69  hreadsafe. Calli
d100: 6e 67 20 74 68 69 73 20 66 72 6f 6d 20 77 69 74  ng this from wit
d110: 68 69 6e 20 61 20 74 68 72 65 61 64 65 64 0a 2a  hin a threaded.*
d120: 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 68  * application wh
d130: 65 6e 20 74 68 72 65 61 64 73 20 6f 74 68 65 72  en threads other
d140: 20 74 68 61 6e 20 74 68 65 20 63 61 6c 6c 65 72   than the caller
d150: 20 68 61 76 65 20 75 73 65 64 20 53 51 4c 69 74   have used SQLit
d160: 65 20 69 73 0a 2a 2a 20 64 61 6e 67 65 72 6f 75  e is.** dangerou
d170: 73 20 61 6e 64 20 77 69 6c 6c 20 61 6c 6d 6f 73  s and will almos
d180: 74 20 63 65 72 74 61 69 6e 6c 79 20 72 65 73 75  t certainly resu
d190: 6c 74 20 69 6e 20 6d 61 6c 66 75 6e 63 74 69 6f  lt in malfunctio
d1a0: 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66  ns..**.** This f
d1b0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 63 61 6e  unctionality can
d1c0: 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   be omitted from
d1d0: 20 61 20 62 75 69 6c 64 20 62 79 20 64 65 66 69   a build by defi
d1e0: 6e 69 6e 67 20 74 68 65 20 0a 2a 2a 20 53 51 4c  ning the .** SQL
d1f0: 49 54 45 5f 4f 4d 49 54 5f 47 4c 4f 42 41 4c 52  ITE_OMIT_GLOBALR
d200: 45 43 4f 56 45 52 20 61 74 20 63 6f 6d 70 69 6c  ECOVER at compil
d210: 65 20 74 69 6d 65 2e 0a 2a 2f 0a 69 6e 74 20 73  e time..*/.int s
d220: 71 6c 69 74 65 33 5f 67 6c 6f 62 61 6c 5f 72 65  qlite3_global_re
d230: 63 6f 76 65 72 28 29 3b 0a 0a 2f 2a 0a 2a 2a 20  cover();../*.** 
d240: 54 65 73 74 20 74 6f 20 73 65 65 20 77 68 65 74  Test to see whet
d250: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 64  her or not the d
d260: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
d270: 6f 6e 20 69 73 20 69 6e 20 61 75 74 6f 63 6f 6d  on is in autocom
d280: 6d 69 74 0a 2a 2a 20 6d 6f 64 65 2e 20 20 52 65  mit.** mode.  Re
d290: 74 75 72 6e 20 54 52 55 45 20 69 66 20 69 74 20  turn TRUE if it 
d2a0: 69 73 20 61 6e 64 20 46 41 4c 53 45 20 69 66 20  is and FALSE if 
d2b0: 6e 6f 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74  not.  Autocommit
d2c0: 20 6d 6f 64 65 20 69 73 20 6f 6e 0a 2a 2a 20 62   mode is on.** b
d2d0: 79 20 64 65 66 61 75 6c 74 2e 20 20 41 75 74 6f  y default.  Auto
d2e0: 63 6f 6d 6d 69 74 20 69 73 20 64 69 73 61 62 6c  commit is disabl
d2f0: 65 64 20 62 79 20 61 20 42 45 47 49 4e 20 73 74  ed by a BEGIN st
d300: 61 74 65 6d 65 6e 74 20 61 6e 64 20 72 65 65 6e  atement and reen
d310: 61 62 6c 65 64 0a 2a 2a 20 62 79 20 74 68 65 20  abled.** by the 
d320: 6e 65 78 74 20 43 4f 4d 4d 49 54 20 6f 72 20 52  next COMMIT or R
d330: 4f 4c 4c 42 41 43 4b 2e 0a 2a 2f 0a 69 6e 74 20  OLLBACK..*/.int 
d340: 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
d350: 63 6f 6d 6d 69 74 28 73 71 6c 69 74 65 33 2a 29  commit(sqlite3*)
d360: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  ;../*.** Return 
d370: 74 68 65 20 73 71 6c 69 74 65 33 2a 20 64 61 74  the sqlite3* dat
d380: 61 62 61 73 65 20 68 61 6e 64 6c 65 20 74 6f 20  abase handle to 
d390: 77 68 69 63 68 20 74 68 65 20 70 72 65 70 61 72  which the prepar
d3a0: 65 64 20 73 74 61 74 65 6d 65 6e 74 20 67 69 76  ed statement giv
d3b0: 65 6e 0a 2a 2a 20 69 6e 20 74 68 65 20 61 72 67  en.** in the arg
d3c0: 75 6d 65 6e 74 20 62 65 6c 6f 6e 67 73 2e 20 20  ument belongs.  
d3d0: 54 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65  This is the same
d3e0: 20 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   database handle
d3f0: 20 74 68 61 74 20 77 61 73 0a 2a 2a 20 74 68 65   that was.** the
d400: 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
d410: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 70  to the sqlite3_p
d420: 72 65 70 61 72 65 28 29 20 74 68 61 74 20 77 61  repare() that wa
d430: 73 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65  s used to create
d440: 0a 2a 2a 20 74 68 65 20 73 74 61 74 65 6d 65 6e  .** the statemen
d450: 74 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 70  t in the first p
d460: 6c 61 63 65 2e 0a 2a 2f 0a 73 71 6c 69 74 65 33  lace..*/.sqlite3
d470: 20 2a 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e   *sqlite3_db_han
d480: 64 6c 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  dle(sqlite3_stmt
d490: 2a 29 3b 0a 0a 23 69 66 64 65 66 20 5f 5f 63 70  *);..#ifdef __cp
d4a0: 6c 75 73 70 6c 75 73 0a 7d 20 20 2f 2a 20 45 6e  lusplus.}  /* En
d4b0: 64 20 6f 66 20 74 68 65 20 27 65 78 74 65 72 6e  d of the 'extern
d4c0: 20 22 43 22 27 20 62 6c 6f 63 6b 20 2a 2f 0a 23   "C"' block */.#
d4d0: 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a           endif.#endif.