System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0ce409796b14044a344b7fb64134c2c53204788d:


0000: 2f 2a 0a 2a 2a 20 32 30 30 31 20 53 65 70 74 65  /*.** 2001 Septe
0010: 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a 20 54 68  mber 15.**.** Th
0020: 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69  e author disclai
0030: 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20  ms copyright to 
0040: 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65  this source code
0050: 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a  .  In place of.*
0060: 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65  * a legal notice
0070: 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73  , here is a bles
0080: 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d  sing:.**.**    M
0090: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
00a0: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20  nd not evil..** 
00b0: 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20     May you find 
00c0: 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20  forgiveness for 
00d0: 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72  yourself and for
00e0: 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20  give others..** 
00f0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
0100: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0110: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0120: 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a  you give..**.***
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73 20 68  ******.** This h
0180: 65 61 64 65 72 20 66 69 6c 65 20 64 65 66 69 6e  eader file defin
0190: 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  es the interface
01a0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
01b0: 20 6c 69 62 72 61 72 79 0a 2a 2a 20 70 72 65 73   library.** pres
01c0: 65 6e 74 73 20 74 6f 20 63 6c 69 65 6e 74 20 70  ents to client p
01d0: 72 6f 67 72 61 6d 73 2e 0a 2a 2a 0a 2a 2a 20 40  rograms..**.** @
01e0: 28 23 29 20 24 49 64 3a 20 73 71 6c 69 74 65 33  (#) $Id: sqlite3
01f0: 2e 68 2c 76 20 31 2e 32 36 20 32 30 30 37 2f 30  .h,v 1.26 2007/0
0200: 31 2f 31 30 20 31 34 3a 35 30 3a 34 36 20 72 6d  1/10 14:50:46 rm
0210: 73 69 6d 70 73 6f 6e 20 45 78 70 20 24 0a 2a 2f  simpson Exp $.*/
0220: 0a 23 69 66 6e 64 65 66 20 5f 53 51 4c 49 54 45  .#ifndef _SQLITE
0230: 33 5f 48 5f 0a 23 64 65 66 69 6e 65 20 5f 53 51  3_H_.#define _SQ
0240: 4c 49 54 45 33 5f 48 5f 0a 23 69 6e 63 6c 75 64  LITE3_H_.#includ
0250: 65 20 3c 73 74 64 61 72 67 2e 68 3e 20 20 20 20  e <stdarg.h>    
0260: 20 2f 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 74   /* Needed for t
0270: 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66  he definition of
0280: 20 76 61 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a 0a   va_list */../*.
0290: 2a 2a 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20  ** Make sure we 
02a0: 63 61 6e 20 63 61 6c 6c 20 74 68 69 73 20 73 74  can call this st
02b0: 75 66 66 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a 2f  uff from C++..*/
02c0: 0a 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70  .#ifdef __cplusp
02d0: 6c 75 73 0a 65 78 74 65 72 6e 20 22 43 22 20 7b  lus.extern "C" {
02e0: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54  .#endif../*.** T
02f0: 68 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  he version of th
0300: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
0310: 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49  ..*/.#ifdef SQLI
0320: 54 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64  TE_VERSION.# und
0330: 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  ef SQLITE_VERSIO
0340: 4e 0a 23 65 6e 64 69 66 0a 23 64 65 66 69 6e 65  N.#endif.#define
0350: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20   SQLITE_VERSION 
0360: 20 20 20 20 20 20 20 20 22 33 2e 33 2e 31 30 22          "3.3.10"
0370: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 72 6d  ../*.** The form
0380: 61 74 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f  at of the versio
0390: 6e 20 73 74 72 69 6e 67 20 69 73 20 22 58 2e 59  n string is "X.Y
03a0: 2e 5a 3c 74 72 61 69 6c 69 6e 67 20 73 74 72 69  .Z<trailing stri
03b0: 6e 67 3e 22 2c 20 77 68 65 72 65 0a 2a 2a 20 58  ng>", where.** X
03c0: 20 69 73 20 74 68 65 20 6d 61 6a 6f 72 20 76 65   is the major ve
03d0: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 59 20  rsion number, Y 
03e0: 69 73 20 74 68 65 20 6d 69 6e 6f 72 20 76 65 72  is the minor ver
03f0: 73 69 6f 6e 20 6e 75 6d 62 65 72 20 61 6e 64 20  sion number and 
0400: 5a 0a 2a 2a 20 69 73 20 74 68 65 20 72 65 6c 65  Z.** is the rele
0410: 61 73 65 20 6e 75 6d 62 65 72 2e 20 54 68 65 20  ase number. The 
0420: 74 72 61 69 6c 69 6e 67 20 73 74 72 69 6e 67 20  trailing string 
0430: 69 73 20 6f 66 74 65 6e 20 22 61 6c 70 68 61 22  is often "alpha"
0440: 20 6f 72 20 22 62 65 74 61 22 2e 0a 2a 2a 20 46   or "beta"..** F
0450: 6f 72 20 65 78 61 6d 70 6c 65 20 22 33 2e 31 2e  or example "3.1.
0460: 31 62 65 74 61 22 2e 0a 2a 2a 0a 2a 2a 20 54 68  1beta"..**.** Th
0470: 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  e SQLITE_VERSION
0480: 5f 4e 55 4d 42 45 52 20 69 73 20 61 6e 20 69 6e  _NUMBER is an in
0490: 74 65 67 65 72 20 77 69 74 68 20 74 68 65 20 76  teger with the v
04a0: 61 6c 75 65 20 0a 2a 2a 20 28 58 2a 31 30 30 30  alue .** (X*1000
04b0: 30 30 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a 29  00 + Y*1000 + Z)
04c0: 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 66  . For example, f
04d0: 6f 72 20 76 65 72 73 69 6f 6e 20 22 33 2e 31 2e  or version "3.1.
04e0: 31 62 65 74 61 22 2c 20 0a 2a 2a 20 53 51 4c 49  1beta", .** SQLI
04f0: 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45  TE_VERSION_NUMBE
0500: 52 20 69 73 20 73 65 74 20 74 6f 20 33 30 30 31  R is set to 3001
0510: 30 30 31 2e 20 54 6f 20 64 65 74 65 63 74 20 69  001. To detect i
0520: 66 20 74 68 65 79 20 61 72 65 20 75 73 69 6e 67  f they are using
0530: 20 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 33 2e 31   .** version 3.1
0540: 2e 31 20 6f 72 20 67 72 65 61 74 65 72 20 61 74  .1 or greater at
0550: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 20 70   compile time, p
0560: 72 6f 67 72 61 6d 73 20 6d 61 79 20 75 73 65 20  rograms may use 
0570: 74 68 65 20 74 65 73 74 20 0a 2a 2a 20 28 53 51  the test .** (SQ
0580: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
0590: 42 45 52 3e 3d 33 30 30 31 30 30 31 29 2e 0a 2a  BER>=3001001)..*
05a0: 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  /.#ifdef SQLITE_
05b0: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23  VERSION_NUMBER.#
05c0: 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45   undef SQLITE_VE
05d0: 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 65 6e  RSION_NUMBER.#en
05e0: 64 69 66 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  dif.#define SQLI
05f0: 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45  TE_VERSION_NUMBE
0600: 52 20 33 30 30 33 30 31 30 0a 0a 2f 2a 0a 2a 2a  R 3003010../*.**
0610: 20 54 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72   The version str
0620: 69 6e 67 20 69 73 20 61 6c 73 6f 20 63 6f 6d 70  ing is also comp
0630: 69 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6c 69  iled into the li
0640: 62 72 61 72 79 20 73 6f 20 74 68 61 74 20 61 20  brary so that a 
0650: 70 72 6f 67 72 61 6d 0a 2a 2a 20 63 61 6e 20 63  program.** can c
0660: 68 65 63 6b 20 74 6f 20 6d 61 6b 65 20 73 75 72  heck to make sur
0670: 65 20 74 68 61 74 20 74 68 65 20 6c 69 62 2a 2e  e that the lib*.
0680: 61 20 66 69 6c 65 20 61 6e 64 20 74 68 65 20 2a  a file and the *
0690: 2e 68 20 66 69 6c 65 20 61 72 65 20 66 72 6f 6d  .h file are from
06a0: 0a 2a 2a 20 74 68 65 20 73 61 6d 65 20 76 65 72  .** the same ver
06b0: 73 69 6f 6e 2e 20 20 54 68 65 20 73 71 6c 69 74  sion.  The sqlit
06c0: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 20  e3_libversion() 
06d0: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
06e0: 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f   a pointer.** to
06f0: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72   the sqlite3_ver
0700: 73 69 6f 6e 20 76 61 72 69 61 62 6c 65 20 2d 20  sion variable - 
0710: 75 73 65 66 75 6c 20 69 6e 20 44 4c 4c 73 20 77  useful in DLLs w
0720: 68 69 63 68 20 63 61 6e 6e 6f 74 20 61 63 63 65  hich cannot acce
0730: 73 73 0a 2a 2a 20 67 6c 6f 62 61 6c 20 76 61 72  ss.** global var
0740: 69 61 62 6c 65 73 2e 0a 2a 2f 0a 65 78 74 65 72  iables..*/.exter
0750: 6e 20 63 6f 6e 73 74 20 63 68 61 72 20 73 71 6c  n const char sql
0760: 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 3b 0a  ite3_version[];.
0770: 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69  const char *sqli
0780: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 76  te3_libversion(v
0790: 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  oid);../*.** Ret
07a0: 75 72 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66  urn the value of
07b0: 20 74 68 65 20 53 51 4c 49 54 45 5f 56 45 52 53   the SQLITE_VERS
07c0: 49 4f 4e 5f 4e 55 4d 42 45 52 20 6d 61 63 72 6f  ION_NUMBER macro
07d0: 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20 6c 69 62   when the.** lib
07e0: 72 61 72 79 20 77 61 73 20 63 6f 6d 70 69 6c 65  rary was compile
07f0: 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  d..*/.int sqlite
0800: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
0810: 62 65 72 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a  ber(void);../*.*
0820: 2a 20 45 61 63 68 20 6f 70 65 6e 20 73 71 6c 69  * Each open sqli
0830: 74 65 20 64 61 74 61 62 61 73 65 20 69 73 20 72  te database is r
0840: 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61 6e  epresented by an
0850: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
0860: 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70  .** following op
0870: 61 71 75 65 20 73 74 72 75 63 74 75 72 65 2e 0a  aque structure..
0880: 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
0890: 74 20 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65  t sqlite3 sqlite
08a0: 33 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 53 6f 6d 65 20  3;.../*.** Some 
08b0: 63 6f 6d 70 69 6c 65 72 73 20 64 6f 20 6e 6f 74  compilers do not
08c0: 20 73 75 70 70 6f 72 74 20 74 68 65 20 22 6c 6f   support the "lo
08d0: 6e 67 20 6c 6f 6e 67 22 20 64 61 74 61 74 79 70  ng long" datatyp
08e0: 65 2e 20 20 53 6f 20 77 65 20 68 61 76 65 0a 2a  e.  So we have.*
08f0: 2a 20 74 6f 20 64 6f 20 61 20 74 79 70 65 64 65  * to do a typede
0900: 66 20 74 68 61 74 20 66 6f 72 20 36 34 2d 62 69  f that for 64-bi
0910: 74 20 69 6e 74 65 67 65 72 73 20 74 68 61 74 20  t integers that 
0920: 64 65 70 65 6e 64 73 20 6f 6e 20 77 68 61 74 20  depends on what 
0930: 63 6f 6d 70 69 6c 65 72 0a 2a 2a 20 69 73 20 62  compiler.** is b
0940: 65 69 6e 67 20 75 73 65 64 2e 0a 2a 2f 0a 23 69  eing used..*/.#i
0950: 66 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54 36  fdef SQLITE_INT6
0960: 34 5f 54 59 50 45 0a 20 20 74 79 70 65 64 65 66  4_TYPE.  typedef
0970: 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59   SQLITE_INT64_TY
0980: 50 45 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b  PE sqlite_int64;
0990: 0a 20 20 74 79 70 65 64 65 66 20 75 6e 73 69 67  .  typedef unsig
09a0: 6e 65 64 20 53 51 4c 49 54 45 5f 49 4e 54 36 34  ned SQLITE_INT64
09b0: 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75 69 6e  _TYPE sqlite_uin
09c0: 74 36 34 3b 0a 23 65 6c 69 66 20 64 65 66 69 6e  t64;.#elif defin
09d0: 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 7c 7c 20  ed(_MSC_VER) || 
09e0: 64 65 66 69 6e 65 64 28 5f 5f 42 4f 52 4c 41 4e  defined(__BORLAN
09f0: 44 43 5f 5f 29 0a 20 20 74 79 70 65 64 65 66 20  DC__).  typedef 
0a00: 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 5f 69  __int64 sqlite_i
0a10: 6e 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20  nt64;.  typedef 
0a20: 75 6e 73 69 67 6e 65 64 20 5f 5f 69 6e 74 36 34  unsigned __int64
0a30: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a   sqlite_uint64;.
0a40: 23 65 6c 73 65 0a 20 20 74 79 70 65 64 65 66 20  #else.  typedef 
0a50: 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71  long long int sq
0a60: 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79  lite_int64;.  ty
0a70: 70 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20 6c  pedef unsigned l
0a80: 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71 6c  ong long int sql
0a90: 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 65 6e 64  ite_uint64;.#end
0aa0: 69 66 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 63 6f 6d  if../*.** If com
0ab0: 70 69 6c 69 6e 67 20 66 6f 72 20 61 20 70 72 6f  piling for a pro
0ac0: 63 65 73 73 6f 72 20 74 68 61 74 20 6c 61 63 6b  cessor that lack
0ad0: 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  s floating point
0ae0: 20 73 75 70 70 6f 72 74 2c 0a 2a 2a 20 73 75 62   support,.** sub
0af0: 73 74 69 74 75 74 65 20 69 6e 74 65 67 65 72 20  stitute integer 
0b00: 66 6f 72 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69  for floating-poi
0b10: 6e 74 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c  nt.*/.#ifdef SQL
0b20: 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e  ITE_OMIT_FLOATIN
0b30: 47 5f 50 4f 49 4e 54 0a 23 20 64 65 66 69 6e 65  G_POINT.# define
0b40: 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 5f 69   double sqlite_i
0b50: 6e 74 36 34 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  nt64.#endif../*.
0b60: 2a 2a 20 41 20 66 75 6e 63 74 69 6f 6e 20 74 6f  ** A function to
0b70: 20 63 6c 6f 73 65 20 74 68 65 20 64 61 74 61 62   close the datab
0b80: 61 73 65 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 20  ase..**.** Call 
0b90: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 69  this function wi
0ba0: 74 68 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  th a pointer to 
0bb0: 61 20 73 74 72 75 63 74 75 72 65 20 74 68 61 74  a structure that
0bc0: 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79 0a   was previously.
0bd0: 2a 2a 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  ** returned from
0be0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
0bf0: 61 6e 64 20 74 68 65 20 63 6f 72 72 65 73 70 6f  and the correspo
0c00: 6e 64 69 6e 67 20 64 61 74 61 62 61 73 65 20 77  nding database w
0c10: 69 6c 6c 20 62 79 20 63 6c 6f 73 65 64 2e 0a 2a  ill by closed..*
0c20: 2a 0a 2a 2a 20 41 6c 6c 20 53 51 4c 20 73 74 61  *.** All SQL sta
0c30: 74 65 6d 65 6e 74 73 20 70 72 65 70 61 72 65 64  tements prepared
0c40: 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 70   using sqlite3_p
0c50: 72 65 70 61 72 65 28 29 20 6f 72 0a 2a 2a 20 73  repare() or.** s
0c60: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
0c70: 28 29 20 6d 75 73 74 20 62 65 20 64 65 61 6c 6c  () must be deall
0c80: 6f 63 61 74 65 64 20 75 73 69 6e 67 20 73 71 6c  ocated using sql
0c90: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20  ite3_finalize() 
0ca0: 62 65 66 6f 72 65 0a 2a 2a 20 74 68 69 73 20 72  before.** this r
0cb0: 6f 75 74 69 6e 65 20 69 73 20 63 61 6c 6c 65 64  outine is called
0cc0: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 53 51 4c  . Otherwise, SQL
0cd0: 49 54 45 5f 42 55 53 59 20 69 73 20 72 65 74 75  ITE_BUSY is retu
0ce0: 72 6e 65 64 20 61 6e 64 20 74 68 65 0a 2a 2a 20  rned and the.** 
0cf0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
0d00: 69 6f 6e 20 72 65 6d 61 69 6e 73 20 6f 70 65 6e  ion remains open
0d10: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
0d20: 5f 63 6c 6f 73 65 28 73 71 6c 69 74 65 33 20 2a  _close(sqlite3 *
0d30: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 74 79  );../*.** The ty
0d40: 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62 61 63  pe for a callbac
0d50: 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a 74  k function..*/.t
0d60: 79 70 65 64 65 66 20 69 6e 74 20 28 2a 73 71 6c  ypedef int (*sql
0d70: 69 74 65 33 5f 63 61 6c 6c 62 61 63 6b 29 28 76  ite3_callback)(v
0d80: 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a 2c  oid*,int,char**,
0d90: 20 63 68 61 72 2a 2a 29 3b 0a 0a 2f 2a 0a 2a 2a   char**);../*.**
0da0: 20 41 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 65   A function to e
0db0: 78 65 63 75 74 65 73 20 6f 6e 65 20 6f 72 20 6d  xecutes one or m
0dc0: 6f 72 65 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  ore statements o
0dd0: 66 20 53 51 4c 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  f SQL..**.** If 
0de0: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74  one or more of t
0df0: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
0e00: 73 20 61 72 65 20 71 75 65 72 69 65 73 2c 20 74  s are queries, t
0e10: 68 65 6e 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 62  hen.** the callb
0e20: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 73 70 65  ack function spe
0e30: 63 69 66 69 65 64 20 62 79 20 74 68 65 20 33 72  cified by the 3r
0e40: 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a 2a  d parameter is.*
0e50: 2a 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66  * invoked once f
0e60: 6f 72 20 65 61 63 68 20 72 6f 77 20 6f 66 20 74  or each row of t
0e70: 68 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 2e  he query result.
0e80: 20 20 54 68 69 73 20 63 61 6c 6c 62 61 63 6b 0a    This callback.
0e90: 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c  ** should normal
0ea0: 6c 79 20 72 65 74 75 72 6e 20 30 2e 20 20 49 66  ly return 0.  If
0eb0: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72 65   the callback re
0ec0: 74 75 72 6e 73 20 61 20 6e 6f 6e 2d 7a 65 72 6f  turns a non-zero
0ed0: 0a 2a 2a 20 76 61 6c 75 65 20 74 68 65 6e 20 74  .** value then t
0ee0: 68 65 20 71 75 65 72 79 20 69 73 20 61 62 6f 72  he query is abor
0ef0: 74 65 64 2c 20 61 6c 6c 20 73 75 62 73 65 71 75  ted, all subsequ
0f00: 65 6e 74 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ent SQL statemen
0f10: 74 73 0a 2a 2a 20 61 72 65 20 73 6b 69 70 70 65  ts.** are skippe
0f20: 64 20 61 6e 64 20 74 68 65 20 73 71 6c 69 74 65  d and the sqlite
0f30: 33 5f 65 78 65 63 28 29 20 66 75 6e 63 74 69 6f  3_exec() functio
0f40: 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 53 51  n returns the SQ
0f50: 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 2a 2a 0a 2a  LITE_ABORT..**.*
0f60: 2a 20 54 68 65 20 31 73 74 20 70 61 72 61 6d 65  * The 1st parame
0f70: 74 65 72 20 69 73 20 61 6e 20 61 72 62 69 74 72  ter is an arbitr
0f80: 61 72 79 20 70 6f 69 6e 74 65 72 20 74 68 61 74  ary pointer that
0f90: 20 69 73 20 70 61 73 73 65 64 0a 2a 2a 20 74 6f   is passed.** to
0fa0: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75   the callback fu
0fb0: 6e 63 74 69 6f 6e 20 61 73 20 69 74 73 20 66 69  nction as its fi
0fc0: 72 73 74 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a  rst parameter..*
0fd0: 2a 0a 2a 2a 20 54 68 65 20 32 6e 64 20 70 61 72  *.** The 2nd par
0fe0: 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63 61  ameter to the ca
0ff0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
1000: 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  is the number of
1010: 0a 2a 2a 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  .** columns in t
1020: 68 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 2e  he query result.
1030: 20 20 54 68 65 20 33 72 64 20 70 61 72 61 6d 65    The 3rd parame
1040: 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ter to the callb
1050: 61 63 6b 0a 2a 2a 20 69 73 20 61 6e 20 61 72 72  ack.** is an arr
1060: 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 68 6f  ay of strings ho
1070: 6c 64 69 6e 67 20 74 68 65 20 76 61 6c 75 65 73  lding the values
1080: 20 66 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e   for each column
1090: 2e 0a 2a 2a 20 54 68 65 20 34 74 68 20 70 61 72  ..** The 4th par
10a0: 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63 61  ameter to the ca
10b0: 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 61 72 72  llback is an arr
10c0: 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 68 6f  ay of strings ho
10d0: 6c 64 69 6e 67 0a 2a 2a 20 74 68 65 20 6e 61 6d  lding.** the nam
10e0: 65 73 20 6f 66 20 65 61 63 68 20 63 6f 6c 75 6d  es of each colum
10f0: 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 61 6c  n..**.** The cal
1100: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6d  lback function m
1110: 61 79 20 62 65 20 4e 55 4c 4c 2c 20 65 76 65 6e  ay be NULL, even
1120: 20 66 6f 72 20 71 75 65 72 69 65 73 2e 20 20 41   for queries.  A
1130: 20 4e 55 4c 4c 0a 2a 2a 20 63 61 6c 6c 62 61 63   NULL.** callbac
1140: 6b 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  k is not an erro
1150: 72 2e 20 20 49 74 20 6a 75 73 74 20 6d 65 61 6e  r.  It just mean
1160: 73 20 74 68 61 74 20 6e 6f 20 63 61 6c 6c 62 61  s that no callba
1170: 63 6b 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 69 6e  ck.** will be in
1180: 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  voked..**.** If 
1190: 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20  an error occurs 
11a0: 77 68 69 6c 65 20 70 61 72 73 69 6e 67 20 6f 72  while parsing or
11b0: 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20   evaluating the 
11c0: 53 51 4c 20 28 62 75 74 0a 2a 2a 20 6e 6f 74 20  SQL (but.** not 
11d0: 77 68 69 6c 65 20 65 78 65 63 75 74 69 6e 67 20  while executing 
11e0: 74 68 65 20 63 61 6c 6c 62 61 63 6b 29 20 74 68  the callback) th
11f0: 65 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  en an appropriat
1200: 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 65 73 73 61  e error.** messa
1210: 67 65 20 69 73 20 77 72 69 74 74 65 6e 20 69 6e  ge is written in
1220: 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e  to memory obtain
1230: 65 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29  ed from malloc()
1240: 20 61 6e 64 0a 2a 2a 20 2a 65 72 72 6d 73 67 20   and.** *errmsg 
1250: 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74  is made to point
1260: 20 74 6f 20 74 68 61 74 20 6d 65 73 73 61 67 65   to that message
1270: 2e 20 20 54 68 65 20 63 61 6c 6c 69 6e 67 20 66  .  The calling f
1280: 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69 73 20 72 65  unction.** is re
1290: 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 66 72  sponsible for fr
12a0: 65 65 69 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79  eeing the memory
12b0: 20 74 68 61 74 20 68 6f 6c 64 73 20 74 68 65 20   that holds the 
12c0: 65 72 72 6f 72 0a 2a 2a 20 6d 65 73 73 61 67 65  error.** message
12d0: 2e 20 20 20 55 73 65 20 73 71 6c 69 74 65 33 5f  .   Use sqlite3_
12e0: 66 72 65 65 28 29 20 66 6f 72 20 74 68 69 73 2e  free() for this.
12f0: 20 20 49 66 20 65 72 72 6d 73 67 3d 3d 4e 55 4c    If errmsg==NUL
1300: 4c 2c 0a 2a 2a 20 74 68 65 6e 20 6e 6f 20 65 72  L,.** then no er
1310: 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 65  ror message is e
1320: 76 65 72 20 77 72 69 74 74 65 6e 2e 0a 2a 2a 0a  ver written..**.
1330: 2a 2a 20 54 68 65 20 72 65 74 75 72 6e 20 76 61  ** The return va
1340: 6c 75 65 20 69 73 20 69 73 20 53 51 4c 49 54 45  lue is is SQLITE
1350: 5f 4f 4b 20 69 66 20 74 68 65 72 65 20 61 72 65  _OK if there are
1360: 20 6e 6f 20 65 72 72 6f 72 73 20 61 6e 64 0a 2a   no errors and.*
1370: 2a 20 73 6f 6d 65 20 6f 74 68 65 72 20 72 65 74  * some other ret
1380: 75 72 6e 20 63 6f 64 65 20 69 66 20 74 68 65 72  urn code if ther
1390: 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2e 20 20  e is an error.  
13a0: 54 68 65 20 70 61 72 74 69 63 75 6c 61 72 0a 2a  The particular.*
13b0: 2a 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 64  * return value d
13c0: 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 74 79  epends on the ty
13d0: 70 65 20 6f 66 20 65 72 72 6f 72 2e 20 0a 2a 2a  pe of error. .**
13e0: 0a 2a 2a 20 49 66 20 74 68 65 20 71 75 65 72 79  .** If the query
13f0: 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 65 78   could not be ex
1400: 65 63 75 74 65 64 20 62 65 63 61 75 73 65 20 61  ecuted because a
1410: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69   database file i
1420: 73 0a 2a 2a 20 6c 6f 63 6b 65 64 20 6f 72 20 62  s.** locked or b
1430: 75 73 79 2c 20 74 68 65 6e 20 74 68 69 73 20 66  usy, then this f
1440: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
1450: 53 51 4c 49 54 45 5f 42 55 53 59 2e 20 20 28 54  SQLITE_BUSY.  (T
1460: 68 69 73 0a 2a 2a 20 62 65 68 61 76 69 6f 72 20  his.** behavior 
1470: 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65 64 20  can be modified 
1480: 73 6f 6d 65 77 68 61 74 20 75 73 69 6e 67 20 74  somewhat using t
1490: 68 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  he sqlite3_busy_
14a0: 68 61 6e 64 6c 65 72 28 29 0a 2a 2a 20 61 6e 64  handler().** and
14b0: 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69   sqlite3_busy_ti
14c0: 6d 65 6f 75 74 28 29 20 66 75 6e 63 74 69 6f 6e  meout() function
14d0: 73 20 62 65 6c 6f 77 2e 29 0a 2a 2f 0a 69 6e 74  s below.).*/.int
14e0: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0a 20   sqlite3_exec(. 
14f0: 20 73 71 6c 69 74 65 33 2a 2c 20 20 20 20 20 20   sqlite3*,      
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1510: 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62 61  * An open databa
1520: 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  se */.  const ch
1530: 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20 20  ar *sql,        
1540: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20        /* SQL to 
1550: 62 65 20 65 78 65 63 75 74 65 64 20 2a 2f 0a 20  be executed */. 
1560: 20 73 71 6c 69 74 65 33 5f 63 61 6c 6c 62 61 63   sqlite3_callbac
1570: 6b 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  k,             /
1580: 2a 20 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  * Callback funct
1590: 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c  ion */.  void *,
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b0: 20 20 20 20 20 20 20 2f 2a 20 31 73 74 20 61 72         /* 1st ar
15c0: 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 62 61  gument to callba
15d0: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20  ck function */. 
15e0: 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 20 20   char **errmsg  
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1600: 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69 74  * Error msg writ
1610: 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a  ten here */.);..
1620: 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 76 61 6c  /*.** Return val
1630: 75 65 73 20 66 6f 72 20 73 71 6c 69 74 65 33 5f  ues for sqlite3_
1640: 65 78 65 63 28 29 20 61 6e 64 20 73 71 6c 69 74  exec() and sqlit
1650: 65 33 5f 73 74 65 70 28 29 0a 2a 2f 0a 23 64 65  e3_step().*/.#de
1660: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20  fine SQLITE_OK  
1670: 20 20 20 20 20 20 20 20 20 30 20 20 20 2f 2a 20           0   /* 
1680: 53 75 63 63 65 73 73 66 75 6c 20 72 65 73 75 6c  Successful resul
1690: 74 20 2a 2f 0a 2f 2a 20 62 65 67 69 6e 6e 69 6e  t */./* beginnin
16a0: 67 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73  g-of-error-codes
16b0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
16c0: 54 45 5f 45 52 52 4f 52 20 20 20 20 20 20 20 20  TE_ERROR        
16d0: 31 20 20 20 2f 2a 20 53 51 4c 20 65 72 72 6f 72  1   /* SQL error
16e0: 20 6f 72 20 6d 69 73 73 69 6e 67 20 64 61 74 61   or missing data
16f0: 62 61 73 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  base */.#define 
1700: 53 51 4c 49 54 45 5f 49 4e 54 45 52 4e 41 4c 20  SQLITE_INTERNAL 
1710: 20 20 20 20 32 20 20 20 2f 2a 20 4e 4f 54 20 55      2   /* NOT U
1720: 53 45 44 2e 20 49 6e 74 65 72 6e 61 6c 20 6c 6f  SED. Internal lo
1730: 67 69 63 20 65 72 72 6f 72 20 69 6e 20 53 51 4c  gic error in SQL
1740: 69 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ite */.#define S
1750: 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20  QLITE_PERM      
1760: 20 20 20 33 20 20 20 2f 2a 20 41 63 63 65 73 73     3   /* Access
1770: 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69   permission deni
1780: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
1790: 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20  LITE_ABORT      
17a0: 20 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62 61 63    4   /* Callbac
17b0: 6b 20 72 6f 75 74 69 6e 65 20 72 65 71 75 65 73  k routine reques
17c0: 74 65 64 20 61 6e 20 61 62 6f 72 74 20 2a 2f 0a  ted an abort */.
17d0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42  #define SQLITE_B
17e0: 55 53 59 20 20 20 20 20 20 20 20 20 35 20 20 20  USY         5   
17f0: 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20  /* The database 
1800: 66 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a  file is locked *
1810: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1820: 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20  _LOCKED       6 
1830: 20 20 2f 2a 20 41 20 74 61 62 6c 65 20 69 6e 20    /* A table in 
1840: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
1850: 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e  locked */.#defin
1860: 65 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20  e SQLITE_NOMEM  
1870: 20 20 20 20 20 20 37 20 20 20 2f 2a 20 41 20 6d        7   /* A m
1880: 61 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64 20 2a  alloc() failed *
1890: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
18a0: 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20  _READONLY     8 
18b0: 20 20 2f 2a 20 41 74 74 65 6d 70 74 20 74 6f 20    /* Attempt to 
18c0: 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79  write a readonly
18d0: 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65   database */.#de
18e0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45  fine SQLITE_INTE
18f0: 52 52 55 50 54 20 20 20 20 39 20 20 20 2f 2a 20  RRUPT    9   /* 
1900: 4f 70 65 72 61 74 69 6f 6e 20 74 65 72 6d 69 6e  Operation termin
1910: 61 74 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  ated by sqlite3_
1920: 69 6e 74 65 72 72 75 70 74 28 29 2a 2f 0a 23 64  interrupt()*/.#d
1930: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
1940: 52 52 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a  RR       10   /*
1950: 20 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 64 69   Some kind of di
1960: 73 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f 63 63  sk I/O error occ
1970: 75 72 72 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  urred */.#define
1980: 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20   SQLITE_CORRUPT 
1990: 20 20 20 20 31 31 20 20 20 2f 2a 20 54 68 65 20      11   /* The 
19a0: 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d  database disk im
19b0: 61 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64  age is malformed
19c0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
19d0: 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31  TE_NOTFOUND    1
19e0: 32 20 20 20 2f 2a 20 4e 4f 54 20 55 53 45 44 2e  2   /* NOT USED.
19f0: 20 54 61 62 6c 65 20 6f 72 20 72 65 63 6f 72 64   Table or record
1a00: 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 2f 0a 23 64   not found */.#d
1a10: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4c  efine SQLITE_FUL
1a20: 4c 20 20 20 20 20 20 20 20 31 33 20 20 20 2f 2a  L        13   /*
1a30: 20 49 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c 65   Insertion faile
1a40: 64 20 62 65 63 61 75 73 65 20 64 61 74 61 62 61  d because databa
1a50: 73 65 20 69 73 20 66 75 6c 6c 20 2a 2f 0a 23 64  se is full */.#d
1a60: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e  efine SQLITE_CAN
1a70: 54 4f 50 45 4e 20 20 20 20 31 34 20 20 20 2f 2a  TOPEN    14   /*
1a80: 20 55 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20   Unable to open 
1a90: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
1aa0: 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
1ab0: 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20  ITE_PROTOCOL    
1ac0: 31 35 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  15   /* Database
1ad0: 20 6c 6f 63 6b 20 70 72 6f 74 6f 63 6f 6c 20 65   lock protocol e
1ae0: 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rror */.#define 
1af0: 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20  SQLITE_EMPTY    
1b00: 20 20 20 31 36 20 20 20 2f 2a 20 44 61 74 61 62     16   /* Datab
1b10: 61 73 65 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a  ase is empty */.
1b20: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
1b30: 43 48 45 4d 41 20 20 20 20 20 20 31 37 20 20 20  CHEMA      17   
1b40: 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20  /* The database 
1b50: 73 63 68 65 6d 61 20 63 68 61 6e 67 65 64 20 2a  schema changed *
1b60: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1b70: 5f 54 4f 4f 42 49 47 20 20 20 20 20 20 31 38 20  _TOOBIG      18 
1b80: 20 20 2f 2a 20 4e 4f 54 20 55 53 45 44 2e 20 54    /* NOT USED. T
1b90: 6f 6f 20 6d 75 63 68 20 64 61 74 61 20 66 6f 72  oo much data for
1ba0: 20 6f 6e 65 20 72 6f 77 20 2a 2f 0a 23 64 65 66   one row */.#def
1bb0: 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  ine SQLITE_CONST
1bc0: 52 41 49 4e 54 20 20 31 39 20 20 20 2f 2a 20 41  RAINT  19   /* A
1bd0: 62 6f 72 74 20 64 75 65 20 74 6f 20 63 6f 6e 74  bort due to cont
1be0: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
1bf0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1c00: 45 5f 4d 49 53 4d 41 54 43 48 20 20 20 20 32 30  E_MISMATCH    20
1c10: 20 20 20 2f 2a 20 44 61 74 61 20 74 79 70 65 20     /* Data type 
1c20: 6d 69 73 6d 61 74 63 68 20 2a 2f 0a 23 64 65 66  mismatch */.#def
1c30: 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53 55 53  ine SQLITE_MISUS
1c40: 45 20 20 20 20 20 20 32 31 20 20 20 2f 2a 20 4c  E      21   /* L
1c50: 69 62 72 61 72 79 20 75 73 65 64 20 69 6e 63 6f  ibrary used inco
1c60: 72 72 65 63 74 6c 79 20 2a 2f 0a 23 64 65 66 69  rrectly */.#defi
1c70: 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20  ne SQLITE_NOLFS 
1c80: 20 20 20 20 20 20 32 32 20 20 20 2f 2a 20 55 73        22   /* Us
1c90: 65 73 20 4f 53 20 66 65 61 74 75 72 65 73 20 6e  es OS features n
1ca0: 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ot supported on 
1cb0: 68 6f 73 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20  host */.#define 
1cc0: 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20 20 20  SQLITE_AUTH     
1cd0: 20 20 20 32 33 20 20 20 2f 2a 20 41 75 74 68 6f     23   /* Autho
1ce0: 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 20  rization denied 
1cf0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1d00: 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20 32 34  E_FORMAT      24
1d10: 20 20 20 2f 2a 20 41 75 78 69 6c 69 61 72 79 20     /* Auxiliary 
1d20: 64 61 74 61 62 61 73 65 20 66 6f 72 6d 61 74 20  database format 
1d30: 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65  error */.#define
1d40: 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20   SQLITE_RANGE   
1d50: 20 20 20 20 32 35 20 20 20 2f 2a 20 32 6e 64 20      25   /* 2nd 
1d60: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
1d70: 69 74 65 33 5f 62 69 6e 64 20 6f 75 74 20 6f 66  ite3_bind out of
1d80: 20 72 61 6e 67 65 20 2a 2f 0a 23 64 65 66 69 6e   range */.#defin
1d90: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20  e SQLITE_NOTADB 
1da0: 20 20 20 20 20 32 36 20 20 20 2f 2a 20 46 69 6c       26   /* Fil
1db0: 65 20 6f 70 65 6e 65 64 20 74 68 61 74 20 69 73  e opened that is
1dc0: 20 6e 6f 74 20 61 20 64 61 74 61 62 61 73 65 20   not a database 
1dd0: 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  file */.#define 
1de0: 53 51 4c 49 54 45 5f 52 4f 57 20 20 20 20 20 20  SQLITE_ROW      
1df0: 20 20 20 31 30 30 20 20 2f 2a 20 73 71 6c 69 74     100  /* sqlit
1e00: 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 61 6e  e3_step() has an
1e10: 6f 74 68 65 72 20 72 6f 77 20 72 65 61 64 79 20  other row ready 
1e20: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1e30: 45 5f 44 4f 4e 45 20 20 20 20 20 20 20 20 31 30  E_DONE        10
1e40: 31 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74  1  /* sqlite3_st
1e50: 65 70 28 29 20 68 61 73 20 66 69 6e 69 73 68 65  ep() has finishe
1e60: 64 20 65 78 65 63 75 74 69 6e 67 20 2a 2f 0a 2f  d executing */./
1e70: 2a 20 65 6e 64 2d 6f 66 2d 65 72 72 6f 72 2d 63  * end-of-error-c
1e80: 6f 64 65 73 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 55  odes */../*.** U
1e90: 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33  sing the sqlite3
1ea0: 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74  _extended_result
1eb0: 5f 63 6f 64 65 73 28 29 20 41 50 49 2c 20 79 6f  _codes() API, yo
1ec0: 75 20 63 61 6e 20 63 61 75 73 65 0a 2a 2a 20 53  u can cause.** S
1ed0: 51 4c 69 74 65 20 74 6f 20 72 65 74 75 72 6e 20  QLite to return 
1ee0: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 77 69 74  result codes wit
1ef0: 68 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  h additional inf
1f00: 6f 72 6d 61 74 69 6f 6e 20 69 6e 0a 2a 2a 20 74  ormation in.** t
1f10: 68 65 69 72 20 75 70 70 65 72 20 62 69 74 73 2e  heir upper bits.
1f20: 20 20 54 68 65 20 6c 6f 77 65 72 20 38 20 62 69    The lower 8 bi
1f30: 74 73 20 77 69 6c 6c 20 62 65 20 74 68 65 20 73  ts will be the s
1f40: 61 6d 65 20 61 73 20 74 68 65 0a 2a 2a 20 70 72  ame as the.** pr
1f50: 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f 64  imary result cod
1f60: 65 73 20 61 62 6f 76 65 2e 20 20 42 75 74 20 74  es above.  But t
1f70: 68 65 20 75 70 70 65 72 20 62 69 74 73 20 6d 69  he upper bits mi
1f80: 67 68 74 20 63 6f 6e 74 61 69 6e 0a 2a 2a 20 6d  ght contain.** m
1f90: 6f 72 65 20 73 70 65 63 69 66 69 63 20 65 72 72  ore specific err
1fa0: 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  or information..
1fb0: 2a 2a 0a 2a 2a 20 54 6f 20 65 78 74 72 61 63 74  **.** To extract
1fc0: 20 74 68 65 20 70 72 69 6d 61 72 79 20 72 65 73   the primary res
1fd0: 75 6c 74 20 63 6f 64 65 20 66 72 6f 6d 20 61 6e  ult code from an
1fe0: 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74   extended result
1ff0: 20 63 6f 64 65 2c 0a 2a 2a 20 73 69 6d 70 6c 79   code,.** simply
2000: 20 6d 61 73 6b 20 6f 66 66 20 74 68 65 20 6c 6f   mask off the lo
2010: 77 65 72 20 38 20 62 69 74 73 2e 0a 2a 2a 0a 2a  wer 8 bits..**.*
2020: 2a 20 20 20 20 20 20 20 20 70 72 69 6d 61 72 79  *        primary
2030: 20 3d 20 65 78 74 65 6e 64 65 64 20 26 20 30 78   = extended & 0x
2040: 66 66 3b 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 72 65  ff;.**.** New re
2050: 73 75 6c 74 20 65 72 72 6f 72 20 63 6f 64 65 73  sult error codes
2060: 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 66 72   may be added fr
2070: 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 2e  om time to time.
2080: 20 20 53 6f 66 74 77 61 72 65 0a 2a 2a 20 74 68    Software.** th
2090: 61 74 20 75 73 65 73 20 74 68 65 20 65 78 74 65  at uses the exte
20a0: 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
20b0: 73 20 73 68 6f 75 6c 64 20 70 6c 61 6e 20 61 63  s should plan ac
20c0: 63 6f 72 64 69 6e 67 6c 79 20 61 6e 64 20 62 65  cordingly and be
20d0: 0a 2a 2a 20 73 75 72 65 20 74 6f 20 61 6c 77 61  .** sure to alwa
20e0: 79 73 20 68 61 6e 64 6c 65 20 6e 65 77 20 75 6e  ys handle new un
20f0: 6b 6e 6f 77 6e 20 63 6f 64 65 73 20 67 72 61 63  known codes grac
2100: 65 66 75 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54 68  efully..**.** Th
2110: 65 20 53 51 4c 49 54 45 5f 4f 4b 20 72 65 73 75  e SQLITE_OK resu
2120: 6c 74 20 63 6f 64 65 20 77 69 6c 6c 20 6e 65 76  lt code will nev
2130: 65 72 20 62 65 20 65 78 74 65 6e 64 65 64 2e 20  er be extended. 
2140: 20 49 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 0a   It will always.
2150: 2a 2a 20 62 65 20 65 78 61 63 74 6c 79 20 7a 65  ** be exactly ze
2160: 72 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 65 78  ro..**.** The ex
2170: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
2180: 64 65 73 20 61 6c 77 61 79 73 20 68 61 76 65 20  des always have 
2190: 74 68 65 20 70 72 69 6d 61 72 79 20 72 65 73 75  the primary resu
21a0: 6c 74 20 63 6f 64 65 0a 2a 2a 20 61 73 20 61 20  lt code.** as a 
21b0: 70 72 65 66 69 78 2e 20 20 50 72 69 6d 61 72 79  prefix.  Primary
21c0: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 6f 6e   result codes on
21d0: 6c 79 20 63 6f 6e 74 61 69 6e 20 61 20 73 69 6e  ly contain a sin
21e0: 67 6c 65 20 22 5f 22 0a 2a 2a 20 63 68 61 72 61  gle "_".** chara
21f0: 63 74 65 72 2e 20 20 45 78 74 65 6e 64 65 64 20  cter.  Extended 
2200: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 63 6f 6e  result codes con
2210: 74 61 69 6e 20 74 77 6f 20 6f 72 20 6d 6f 72 65  tain two or more
2220: 20 22 5f 22 20 63 68 61 72 61 63 74 65 72 73 2e   "_" characters.
2230: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
2240: 54 45 5f 49 4f 45 52 52 5f 52 45 41 44 20 20 20  TE_IOERR_READ   
2250: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
2260: 4f 45 52 52 20 7c 20 28 31 3c 3c 38 29 29 0a 23  OERR | (1<<8)).#
2270: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
2280: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 20  ERR_SHORT_READ  
2290: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
22a0: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
22b0: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57  e SQLITE_IOERR_W
22c0: 52 49 54 45 20 20 20 20 20 20 20 20 20 28 53 51  RITE         (SQ
22d0: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 33 3c  LITE_IOERR | (3<
22e0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
22f0: 49 54 45 5f 49 4f 45 52 52 5f 46 53 59 4e 43 20  ITE_IOERR_FSYNC 
2300: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
2310: 49 4f 45 52 52 20 7c 20 28 34 3c 3c 38 29 29 0a  IOERR | (4<<8)).
2320: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
2330: 4f 45 52 52 5f 44 49 52 5f 46 53 59 4e 43 20 20  OERR_DIR_FSYNC  
2340: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
2350: 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65 66 69   | (5<<8)).#defi
2360: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
2370: 54 52 55 4e 43 41 54 45 20 20 20 20 20 20 28 53  TRUNCATE      (S
2380: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 36  QLITE_IOERR | (6
2390: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
23a0: 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53 54 41 54  LITE_IOERR_FSTAT
23b0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
23c0: 5f 49 4f 45 52 52 20 7c 20 28 37 3c 3c 38 29 29  _IOERR | (7<<8))
23d0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
23e0: 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20 20 20 20  IOERR_UNLOCK    
23f0: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
2400: 52 20 7c 20 28 38 3c 3c 38 29 29 0a 23 64 65 66  R | (8<<8)).#def
2410: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
2420: 5f 52 44 4c 4f 43 4b 20 20 20 20 20 20 20 20 28  _RDLOCK        (
2430: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
2440: 39 3c 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 45 6e  9<<8))../*.** En
2450: 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20  able or disable 
2460: 74 68 65 20 65 78 74 65 6e 64 65 64 20 72 65 73  the extended res
2470: 75 6c 74 20 63 6f 64 65 73 2e 0a 2a 2f 0a 69 6e  ult codes..*/.in
2480: 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  t sqlite3_extend
2490: 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28  ed_result_codes(
24a0: 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6f 6e  sqlite3*, int on
24b0: 6f 66 66 29 3b 0a 0a 2f 2a 0a 2a 2a 20 45 61 63  off);../*.** Eac
24c0: 68 20 65 6e 74 72 79 20 69 6e 20 61 6e 20 53 51  h entry in an SQ
24d0: 4c 69 74 65 20 74 61 62 6c 65 20 68 61 73 20 61  Lite table has a
24e0: 20 75 6e 69 71 75 65 20 69 6e 74 65 67 65 72 20   unique integer 
24f0: 6b 65 79 2e 20 20 28 54 68 65 20 6b 65 79 20 69  key.  (The key i
2500: 73 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65 20 6f  s.** the value o
2510: 66 20 74 68 65 20 49 4e 54 45 47 45 52 20 50 52  f the INTEGER PR
2520: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e  IMARY KEY column
2530: 20 69 66 20 74 68 65 72 65 20 69 73 20 73 75 63   if there is suc
2540: 68 20 61 20 63 6f 6c 75 6d 6e 2c 0a 2a 2a 20 6f  h a column,.** o
2550: 74 68 65 72 77 69 73 65 20 74 68 65 20 6b 65 79  therwise the key
2560: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 61 74   is generated at
2570: 20 72 61 6e 64 6f 6d 2e 20 20 54 68 65 20 75 6e   random.  The un
2580: 69 71 75 65 20 6b 65 79 20 69 73 20 61 6c 77 61  ique key is alwa
2590: 79 73 0a 2a 2a 20 61 76 61 69 6c 61 62 6c 65 20  ys.** available 
25a0: 61 73 20 74 68 65 20 52 4f 57 49 44 2c 20 4f 49  as the ROWID, OI
25b0: 44 2c 20 6f 72 20 5f 52 4f 57 49 44 5f 20 63 6f  D, or _ROWID_ co
25c0: 6c 75 6d 6e 2e 29 20 20 54 68 65 20 66 6f 6c 6c  lumn.)  The foll
25d0: 6f 77 69 6e 67 20 72 6f 75 74 69 6e 65 0a 2a 2a  owing routine.**
25e0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 69 6e 74   returns the int
25f0: 65 67 65 72 20 6b 65 79 20 6f 66 20 74 68 65 20  eger key of the 
2600: 6d 6f 73 74 20 72 65 63 65 6e 74 20 69 6e 73 65  most recent inse
2610: 72 74 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  rt in the databa
2620: 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66  se..**.** This f
2630: 75 6e 63 74 69 6f 6e 20 69 73 20 73 69 6d 69 6c  unction is simil
2640: 61 72 20 74 6f 20 74 68 65 20 6d 79 73 71 6c 5f  ar to the mysql_
2650: 69 6e 73 65 72 74 5f 69 64 28 29 20 66 75 6e 63  insert_id() func
2660: 74 69 6f 6e 20 66 72 6f 6d 20 4d 79 53 51 4c 2e  tion from MySQL.
2670: 0a 2a 2f 0a 73 71 6c 69 74 65 5f 69 6e 74 36 34  .*/.sqlite_int64
2680: 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
2690: 73 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74  sert_rowid(sqlit
26a0: 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69  e3*);../*.** Thi
26b0: 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  s function retur
26c0: 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ns the number of
26d0: 20 64 61 74 61 62 61 73 65 20 72 6f 77 73 20 74   database rows t
26e0: 68 61 74 20 77 65 72 65 20 63 68 61 6e 67 65 64  hat were changed
26f0: 0a 2a 2a 20 28 6f 72 20 69 6e 73 65 72 74 65 64  .** (or inserted
2700: 20 6f 72 20 64 65 6c 65 74 65 64 29 20 62 79 20   or deleted) by 
2710: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
2720: 63 61 6c 6c 65 64 20 73 71 6c 69 74 65 33 5f 65  called sqlite3_e
2730: 78 65 63 28 29 2e 0a 2a 2a 0a 2a 2a 20 41 6c 6c  xec()..**.** All
2740: 20 63 68 61 6e 67 65 73 20 61 72 65 20 63 6f 75   changes are cou
2750: 6e 74 65 64 2c 20 65 76 65 6e 20 69 66 20 74 68  nted, even if th
2760: 65 79 20 77 65 72 65 20 6c 61 74 65 72 20 75 6e  ey were later un
2770: 64 6f 6e 65 20 62 79 20 61 0a 2a 2a 20 52 4f 4c  done by a.** ROL
2780: 4c 42 41 43 4b 20 6f 72 20 41 42 4f 52 54 2e 20  LBACK or ABORT. 
2790: 20 45 78 63 65 70 74 2c 20 63 68 61 6e 67 65 73   Except, changes
27a0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
27b0: 20 63 72 65 61 74 69 6e 67 20 61 6e 64 0a 2a 2a   creating and.**
27c0: 20 64 72 6f 70 70 69 6e 67 20 74 61 62 6c 65 73   dropping tables
27d0: 20 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64   are not counted
27e0: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 63 61 6c  ..**.** If a cal
27f0: 6c 62 61 63 6b 20 69 6e 76 6f 6b 65 73 20 73 71  lback invokes sq
2800: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 72 65 63  lite3_exec() rec
2810: 75 72 73 69 76 65 6c 79 2c 20 74 68 65 6e 20 74  ursively, then t
2820: 68 65 20 63 68 61 6e 67 65 73 0a 2a 2a 20 69 6e  he changes.** in
2830: 20 74 68 65 20 69 6e 6e 65 72 2c 20 72 65 63 75   the inner, recu
2840: 72 73 69 76 65 20 63 61 6c 6c 20 61 72 65 20 63  rsive call are c
2850: 6f 75 6e 74 65 64 20 74 6f 67 65 74 68 65 72 20  ounted together 
2860: 77 69 74 68 20 74 68 65 20 63 68 61 6e 67 65 73  with the changes
2870: 0a 2a 2a 20 69 6e 20 74 68 65 20 6f 75 74 65 72  .** in the outer
2880: 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c   call..**.** SQL
2890: 69 74 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ite implements t
28a0: 68 65 20 63 6f 6d 6d 61 6e 64 20 22 44 45 4c 45  he command "DELE
28b0: 54 45 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 77  TE FROM table" w
28c0: 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63  ithout a WHERE c
28d0: 6c 61 75 73 65 0a 2a 2a 20 62 79 20 64 72 6f 70  lause.** by drop
28e0: 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74  ping and recreat
28f0: 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20  ing the table.  
2900: 28 54 68 69 73 20 69 73 20 6d 75 63 68 20 66 61  (This is much fa
2910: 73 74 65 72 20 74 68 61 6e 20 67 6f 69 6e 67 0a  ster than going.
2920: 2a 2a 20 74 68 72 6f 75 67 68 20 61 6e 64 20 64  ** through and d
2930: 65 6c 65 74 69 6e 67 20 69 6e 64 69 76 69 64 75  eleting individu
2940: 61 6c 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72 6d  al elements form
2950: 20 74 68 65 20 74 61 62 6c 65 2e 29 20 20 42 65   the table.)  Be
2960: 63 61 75 73 65 20 6f 66 0a 2a 2a 20 74 68 69 73  cause of.** this
2970: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2c 20 74   optimization, t
2980: 68 65 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 20  he change count 
2990: 66 6f 72 20 22 44 45 4c 45 54 45 20 46 52 4f 4d  for "DELETE FROM
29a0: 20 74 61 62 6c 65 22 20 77 69 6c 6c 20 62 65 0a   table" will be.
29b0: 2a 2a 20 7a 65 72 6f 20 72 65 67 61 72 64 6c 65  ** zero regardle
29c0: 73 73 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72  ss of the number
29d0: 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 74 68 61   of elements tha
29e0: 74 20 77 65 72 65 20 6f 72 69 67 69 6e 61 6c 6c  t were originall
29f0: 79 20 69 6e 20 74 68 65 0a 2a 2a 20 74 61 62 6c  y in the.** tabl
2a00: 65 2e 20 54 6f 20 67 65 74 20 61 6e 20 61 63 63  e. To get an acc
2a10: 75 72 61 74 65 20 63 6f 75 6e 74 20 6f 66 20 74  urate count of t
2a20: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
2a30: 73 20 64 65 6c 65 74 65 64 2c 20 75 73 65 0a 2a  s deleted, use.*
2a40: 2a 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74  * "DELETE FROM t
2a50: 61 62 6c 65 20 57 48 45 52 45 20 31 22 20 69 6e  able WHERE 1" in
2a60: 73 74 65 61 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71  stead..*/.int sq
2a70: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 73 71  lite3_changes(sq
2a80: 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  lite3*);../*.** 
2a90: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65  This function re
2aa0: 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
2ab0: 20 6f 66 20 64 61 74 61 62 61 73 65 20 72 6f 77   of database row
2ac0: 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e  s that have been
2ad0: 0a 2a 2a 20 6d 6f 64 69 66 69 65 64 20 62 79 20  .** modified by 
2ae0: 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f  INSERT, UPDATE o
2af0: 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65  r DELETE stateme
2b00: 6e 74 73 20 73 69 6e 63 65 20 74 68 65 20 64 61  nts since the da
2b10: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 0a 2a 2a  tabase handle.**
2b20: 20 77 61 73 20 6f 70 65 6e 65 64 2e 20 54 68 69   was opened. Thi
2b30: 73 20 69 6e 63 6c 75 64 65 73 20 55 50 44 41 54  s includes UPDAT
2b40: 45 2c 20 49 4e 53 45 52 54 20 61 6e 64 20 44 45  E, INSERT and DE
2b50: 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20  LETE statements 
2b60: 65 78 65 63 75 74 65 64 0a 2a 2a 20 61 73 20 70  executed.** as p
2b70: 61 72 74 20 6f 66 20 74 72 69 67 67 65 72 20 70  art of trigger p
2b80: 72 6f 67 72 61 6d 73 2e 20 41 6c 6c 20 63 68 61  rograms. All cha
2b90: 6e 67 65 73 20 61 72 65 20 63 6f 75 6e 74 65 64  nges are counted
2ba0: 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 0a   as soon as the.
2bb0: 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  ** statement tha
2bc0: 74 20 6d 61 6b 65 73 20 74 68 65 6d 20 69 73 20  t makes them is 
2bd0: 63 6f 6d 70 6c 65 74 65 64 20 28 77 68 65 6e 20  completed (when 
2be0: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68 61  the statement ha
2bf0: 6e 64 6c 65 20 69 73 0a 2a 2a 20 70 61 73 73 65  ndle is.** passe
2c00: 64 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65 73  d to sqlite3_res
2c10: 65 74 28 29 20 6f 72 20 73 71 6c 69 74 65 5f 66  et() or sqlite_f
2c20: 69 6e 61 6c 69 73 65 28 29 29 2e 0a 2a 2a 0a 2a  inalise())..**.*
2c30: 2a 20 53 51 4c 69 74 65 20 69 6d 70 6c 65 6d 65  * SQLite impleme
2c40: 6e 74 73 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  nts the command 
2c50: 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 61 62  "DELETE FROM tab
2c60: 6c 65 22 20 77 69 74 68 6f 75 74 20 61 20 57 48  le" without a WH
2c70: 45 52 45 20 63 6c 61 75 73 65 0a 2a 2a 20 62 79  ERE clause.** by
2c80: 20 64 72 6f 70 70 69 6e 67 20 61 6e 64 20 72 65   dropping and re
2c90: 63 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 62  creating the tab
2ca0: 6c 65 2e 20 20 28 54 68 69 73 20 69 73 20 6d 75  le.  (This is mu
2cb0: 63 68 20 66 61 73 74 65 72 20 74 68 61 6e 20 67  ch faster than g
2cc0: 6f 69 6e 67 0a 2a 2a 20 74 68 72 6f 75 67 68 20  oing.** through 
2cd0: 61 6e 64 20 64 65 6c 65 74 69 6e 67 20 69 6e 64  and deleting ind
2ce0: 69 76 69 64 75 61 6c 20 65 6c 65 6d 65 6e 74 73  ividual elements
2cf0: 20 66 6f 72 6d 20 74 68 65 20 74 61 62 6c 65 2e   form the table.
2d00: 29 20 20 42 65 63 61 75 73 65 20 6f 66 0a 2a 2a  )  Because of.**
2d10: 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69   this optimizati
2d20: 6f 6e 2c 20 74 68 65 20 63 68 61 6e 67 65 20 63  on, the change c
2d30: 6f 75 6e 74 20 66 6f 72 20 22 44 45 4c 45 54 45  ount for "DELETE
2d40: 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 77 69 6c   FROM table" wil
2d50: 6c 20 62 65 0a 2a 2a 20 7a 65 72 6f 20 72 65 67  l be.** zero reg
2d60: 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20 6e  ardless of the n
2d70: 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74  umber of element
2d80: 73 20 74 68 61 74 20 77 65 72 65 20 6f 72 69 67  s that were orig
2d90: 69 6e 61 6c 6c 79 20 69 6e 20 74 68 65 0a 2a 2a  inally in the.**
2da0: 20 74 61 62 6c 65 2e 20 54 6f 20 67 65 74 20 61   table. To get a
2db0: 6e 20 61 63 63 75 72 61 74 65 20 63 6f 75 6e 74  n accurate count
2dc0: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
2dd0: 66 20 72 6f 77 73 20 64 65 6c 65 74 65 64 2c 20  f rows deleted, 
2de0: 75 73 65 0a 2a 2a 20 22 44 45 4c 45 54 45 20 46  use.** "DELETE F
2df0: 52 4f 4d 20 74 61 62 6c 65 20 57 48 45 52 45 20  ROM table WHERE 
2e00: 31 22 20 69 6e 73 74 65 61 64 2e 0a 2a 2f 0a 69  1" instead..*/.i
2e10: 6e 74 20 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  nt sqlite3_total
2e20: 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33  _changes(sqlite3
2e30: 2a 29 3b 0a 0a 2f 2a 20 54 68 69 73 20 66 75 6e  *);../* This fun
2e40: 63 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 79  ction causes any
2e50: 20 70 65 6e 64 69 6e 67 20 64 61 74 61 62 61 73   pending databas
2e60: 65 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 61  e operation to a
2e70: 62 6f 72 74 20 61 6e 64 0a 2a 2a 20 72 65 74 75  bort and.** retu
2e80: 72 6e 20 61 74 20 69 74 73 20 65 61 72 6c 69 65  rn at its earlie
2e90: 73 74 20 6f 70 70 6f 72 74 75 6e 69 74 79 2e 20  st opportunity. 
2ea0: 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73   This routine is
2eb0: 20 74 79 70 69 63 61 6c 6c 79 0a 2a 2a 20 63 61   typically.** ca
2ec0: 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
2ed0: 20 74 6f 20 61 20 75 73 65 72 20 61 63 74 69 6f   to a user actio
2ee0: 6e 20 73 75 63 68 20 61 73 20 70 72 65 73 73 69  n such as pressi
2ef0: 6e 67 20 22 43 61 6e 63 65 6c 22 0a 2a 2a 20 6f  ng "Cancel".** o
2f00: 72 20 43 74 72 6c 2d 43 20 77 68 65 72 65 20 74  r Ctrl-C where t
2f10: 68 65 20 75 73 65 72 20 77 61 6e 74 73 20 61 20  he user wants a 
2f20: 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70 65 72 61  long query opera
2f30: 74 69 6f 6e 20 74 6f 20 68 61 6c 74 0a 2a 2a 20  tion to halt.** 
2f40: 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 2a 2f 0a  immediately..*/.
2f50: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74  void sqlite3_int
2f60: 65 72 72 75 70 74 28 73 71 6c 69 74 65 33 2a 29  errupt(sqlite3*)
2f70: 3b 0a 0a 0a 2f 2a 20 54 68 65 73 65 20 66 75 6e  ;.../* These fun
2f80: 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 20 74 72  ctions return tr
2f90: 75 65 20 69 66 20 74 68 65 20 67 69 76 65 6e 20  ue if the given 
2fa0: 69 6e 70 75 74 20 73 74 72 69 6e 67 20 63 6f 6d  input string com
2fb0: 70 72 69 73 65 73 0a 2a 2a 20 6f 6e 65 20 6f 72  prises.** one or
2fc0: 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 74 65 20 53   more complete S
2fd0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 46  QL statements. F
2fe0: 6f 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  or the sqlite3_c
2ff0: 6f 6d 70 6c 65 74 65 28 29 20 63 61 6c 6c 2c 0a  omplete() call,.
3000: 2a 2a 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  ** the parameter
3010: 20 6d 75 73 74 20 62 65 20 61 20 6e 75 6c 2d 74   must be a nul-t
3020: 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
3030: 73 74 72 69 6e 67 2e 20 46 6f 72 0a 2a 2a 20 73  string. For.** s
3040: 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
3050: 36 28 29 2c 20 61 20 6e 75 6c 2d 74 65 72 6d 69  6(), a nul-termi
3060: 6e 61 74 65 64 20 6d 61 63 68 69 6e 65 20 62 79  nated machine by
3070: 74 65 20 6f 72 64 65 72 20 55 54 46 2d 31 36 20  te order UTF-16 
3080: 73 74 72 69 6e 67 0a 2a 2a 20 69 73 20 72 65 71  string.** is req
3090: 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  uired..**.** The
30a0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 69   algorithm is si
30b0: 6d 70 6c 65 2e 20 20 49 66 20 74 68 65 20 6c 61  mple.  If the la
30c0: 73 74 20 74 6f 6b 65 6e 20 6f 74 68 65 72 20 74  st token other t
30d0: 68 61 6e 20 73 70 61 63 65 73 0a 2a 2a 20 61 6e  han spaces.** an
30e0: 64 20 63 6f 6d 6d 65 6e 74 73 20 69 73 20 61 20  d comments is a 
30f0: 73 65 6d 69 63 6f 6c 6f 6e 2c 20 74 68 65 6e 20  semicolon, then 
3100: 72 65 74 75 72 6e 20 74 72 75 65 2e 20 20 6f 74  return true.  ot
3110: 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 0a 2a  herwise return.*
3120: 2a 20 66 61 6c 73 65 2e 0a 2a 2f 0a 69 6e 74 20  * false..*/.int 
3130: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
3140: 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c  (const char *sql
3150: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
3160: 6f 6d 70 6c 65 74 65 31 36 28 63 6f 6e 73 74 20  omplete16(const 
3170: 76 6f 69 64 20 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a  void *sql);../*.
3180: 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20  ** This routine 
3190: 69 64 65 6e 74 69 66 69 65 73 20 61 20 63 61 6c  identifies a cal
31a0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 74  lback function t
31b0: 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a  hat is invoked.*
31c0: 2a 20 77 68 65 6e 65 76 65 72 20 61 6e 20 61 74  * whenever an at
31d0: 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74 6f  tempt is made to
31e0: 20 6f 70 65 6e 20 61 20 64 61 74 61 62 61 73 65   open a database
31f0: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 0a 2a   table that is.*
3200: 2a 20 63 75 72 72 65 6e 74 6c 79 20 6c 6f 63 6b  * currently lock
3210: 65 64 20 62 79 20 61 6e 6f 74 68 65 72 20 70 72  ed by another pr
3220: 6f 63 65 73 73 20 6f 72 20 74 68 72 65 61 64 2e  ocess or thread.
3230: 20 20 49 66 20 74 68 65 20 62 75 73 79 20 63 61    If the busy ca
3240: 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 4e 55 4c  llback.** is NUL
3250: 4c 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  L, then sqlite3_
3260: 65 78 65 63 28 29 20 72 65 74 75 72 6e 73 20 53  exec() returns S
3270: 51 4c 49 54 45 5f 42 55 53 59 20 69 6d 6d 65 64  QLITE_BUSY immed
3280: 69 61 74 65 6c 79 20 69 66 0a 2a 2a 20 69 74 20  iately if.** it 
3290: 66 69 6e 64 73 20 61 20 6c 6f 63 6b 65 64 20 74  finds a locked t
32a0: 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 62 75  able.  If the bu
32b0: 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e  sy callback is n
32c0: 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 0a 2a 2a  ot NULL, then.**
32d0: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
32e0: 69 6e 76 6f 6b 65 73 20 74 68 65 20 63 61 6c 6c  invokes the call
32f0: 62 61 63 6b 20 77 69 74 68 20 74 77 6f 20 61 72  back with two ar
3300: 67 75 6d 65 6e 74 73 2e 20 20 54 68 65 0a 2a 2a  guments.  The.**
3310: 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
3320: 74 6f 20 74 68 65 20 68 61 6e 64 6c 65 72 20 69  to the handler i
3330: 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  s a copy of the 
3340: 76 6f 69 64 2a 20 70 6f 69 6e 74 65 72 20 77 68  void* pointer wh
3350: 69 63 68 0a 2a 2a 20 69 73 20 74 68 65 20 74 68  ich.** is the th
3360: 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ird argument to 
3370: 74 68 69 73 20 72 6f 75 74 69 6e 65 2e 20 20 54  this routine.  T
3380: 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
3390: 6e 74 20 74 6f 0a 2a 2a 20 74 68 65 20 68 61 6e  nt to.** the han
33a0: 64 6c 65 72 20 69 73 20 74 68 65 20 6e 75 6d 62  dler is the numb
33b0: 65 72 20 6f 66 20 74 69 6d 65 73 20 74 68 61 74  er of times that
33c0: 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65   the busy handle
33d0: 72 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20 69 6e  r has.** been in
33e0: 76 6f 6b 65 64 20 66 6f 72 20 74 68 69 73 20 6c  voked for this l
33f0: 6f 63 6b 69 6e 67 20 65 76 65 6e 74 2e 20 20 49  ocking event.  I
3400: 66 20 74 68 65 0a 2a 2a 20 62 75 73 79 20 63 61  f the.** busy ca
3410: 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 30  llback returns 0
3420: 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 65  , then sqlite3_e
3430: 78 65 63 28 29 20 69 6d 6d 65 64 69 61 74 65 6c  xec() immediatel
3440: 79 20 72 65 74 75 72 6e 73 0a 2a 2a 20 53 51 4c  y returns.** SQL
3450: 49 54 45 5f 42 55 53 59 2e 20 20 49 66 20 74 68  ITE_BUSY.  If th
3460: 65 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72  e callback retur
3470: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65  ns non-zero, the
3480: 6e 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  n sqlite3_exec()
3490: 0a 2a 2a 20 74 72 69 65 73 20 74 6f 20 6f 70 65  .** tries to ope
34a0: 6e 20 74 68 65 20 74 61 62 6c 65 20 61 67 61 69  n the table agai
34b0: 6e 20 61 6e 64 20 74 68 65 20 63 79 63 6c 65 20  n and the cycle 
34c0: 72 65 70 65 61 74 73 2e 0a 2a 2a 0a 2a 2a 20 54  repeats..**.** T
34d0: 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 61  he presence of a
34e0: 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 64 6f   busy handler do
34f0: 65 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65  es not guarantee
3500: 20 74 68 61 74 0a 2a 2a 20 69 74 20 77 69 6c 6c   that.** it will
3510: 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   be invoked when
3520: 20 74 68 65 72 65 20 69 73 20 6c 6f 63 6b 20 63   there is lock c
3530: 6f 6e 74 65 6e 74 69 6f 6e 2e 0a 2a 2a 20 49 66  ontention..** If
3540: 20 53 51 4c 69 74 65 20 64 65 74 65 72 6d 69 6e   SQLite determin
3550: 65 73 20 74 68 61 74 20 69 6e 76 6f 6b 69 6e 67  es that invoking
3560: 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65   the busy handle
3570: 72 20 63 6f 75 6c 64 20 72 65 73 75 6c 74 20 69  r could result i
3580: 6e 0a 2a 2a 20 61 20 64 65 61 64 6c 6f 63 6b 2c  n.** a deadlock,
3590: 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 6e 20   it will return 
35a0: 53 51 4c 49 54 45 5f 42 55 53 59 20 69 6e 73 74  SQLITE_BUSY inst
35b0: 65 61 64 2e 0a 2a 2a 20 43 6f 6e 73 69 64 65 72  ead..** Consider
35c0: 20 61 20 73 63 65 6e 61 72 69 6f 20 77 68 65 72   a scenario wher
35d0: 65 20 6f 6e 65 20 70 72 6f 63 65 73 73 20 69 73  e one process is
35e0: 20 68 6f 6c 64 69 6e 67 20 61 20 72 65 61 64 20   holding a read 
35f0: 6c 6f 63 6b 20 74 68 61 74 0a 2a 2a 20 69 74 20  lock that.** it 
3600: 69 73 20 74 72 79 69 6e 67 20 74 6f 20 70 72 6f  is trying to pro
3610: 6d 6f 74 65 20 74 6f 20 61 20 72 65 73 65 72 76  mote to a reserv
3620: 65 64 20 6c 6f 63 6b 20 61 6e 64 0a 2a 2a 20 61  ed lock and.** a
3630: 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20   second process 
3640: 69 73 20 68 6f 6c 64 69 6e 67 20 61 20 72 65 73  is holding a res
3650: 65 72 76 65 64 20 6c 6f 63 6b 20 74 68 61 74 20  erved lock that 
3660: 69 74 20 69 73 20 74 72 79 69 6e 67 0a 2a 2a 20  it is trying.** 
3670: 74 6f 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 6e  to promote to an
3680: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 2e   exclusive lock.
3690: 20 20 54 68 65 20 66 69 72 73 74 20 70 72 6f 63    The first proc
36a0: 65 73 73 20 63 61 6e 6e 6f 74 20 70 72 6f 63 65  ess cannot proce
36b0: 65 64 0a 2a 2a 20 62 65 63 61 75 73 65 20 69 74  ed.** because it
36c0: 20 69 73 20 62 6c 6f 63 6b 65 64 20 62 79 20 74   is blocked by t
36d0: 68 65 20 73 65 63 6f 6e 64 20 61 6e 64 20 74 68  he second and th
36e0: 65 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73  e second process
36f0: 20 63 61 6e 6e 6f 74 0a 2a 2a 20 70 72 6f 63 65   cannot.** proce
3700: 65 64 20 62 65 63 61 75 73 65 20 69 74 20 69 73  ed because it is
3710: 20 62 6c 6f 63 6b 65 64 20 62 79 20 74 68 65 20   blocked by the 
3720: 66 69 72 73 74 2e 20 20 49 66 20 62 6f 74 68 20  first.  If both 
3730: 70 72 6f 63 65 73 73 65 73 0a 2a 2a 20 69 6e 76  processes.** inv
3740: 6f 6b 65 20 74 68 65 20 62 75 73 79 20 68 61 6e  oke the busy han
3750: 64 6c 65 72 73 2c 20 6e 65 69 74 68 65 72 20 77  dlers, neither w
3760: 69 6c 6c 20 6d 61 6b 65 20 61 6e 79 20 70 72 6f  ill make any pro
3770: 67 72 65 73 73 2e 20 20 54 68 65 72 65 66 6f 72  gress.  Therefor
3780: 65 2c 0a 2a 2a 20 53 51 4c 69 74 65 20 72 65 74  e,.** SQLite ret
3790: 75 72 6e 73 20 53 51 4c 49 54 45 5f 42 55 53 59  urns SQLITE_BUSY
37a0: 20 66 6f 72 20 74 68 65 20 66 69 72 73 74 20 70   for the first p
37b0: 72 6f 63 65 73 73 2c 20 68 6f 70 69 6e 67 20 74  rocess, hoping t
37c0: 68 61 74 20 74 68 69 73 0a 2a 2a 20 77 69 6c 6c  hat this.** will
37d0: 20 69 6e 64 75 63 65 20 74 68 65 20 66 69 72 73   induce the firs
37e0: 74 20 70 72 6f 63 65 73 73 20 74 6f 20 72 65 6c  t process to rel
37f0: 65 61 73 65 20 69 74 73 20 72 65 61 64 20 6c 6f  ease its read lo
3800: 63 6b 20 61 6e 64 20 61 6c 6c 6f 77 0a 2a 2a 20  ck and allow.** 
3810: 74 68 65 20 73 65 63 6f 6e 64 20 70 72 6f 63 65  the second proce
3820: 73 73 20 74 6f 20 70 72 6f 63 65 65 64 2e 0a 2a  ss to proceed..*
3830: 2a 0a 2a 2a 20 54 68 65 20 64 65 66 61 75 6c 74  *.** The default
3840: 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 69   busy callback i
3850: 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 53 71  s NULL..**.** Sq
3860: 6c 69 74 65 20 69 73 20 72 65 2d 65 6e 74 72 61  lite is re-entra
3870: 6e 74 2c 20 73 6f 20 74 68 65 20 62 75 73 79 20  nt, so the busy 
3880: 68 61 6e 64 6c 65 72 20 6d 61 79 20 73 74 61 72  handler may star
3890: 74 20 61 20 6e 65 77 20 71 75 65 72 79 2e 20 0a  t a new query. .
38a0: 2a 2a 20 28 49 74 20 69 73 20 6e 6f 74 20 63 6c  ** (It is not cl
38b0: 65 61 72 20 77 68 79 20 61 6e 79 6f 6e 65 20 77  ear why anyone w
38c0: 6f 75 6c 64 20 65 76 65 72 79 20 77 61 6e 74 20  ould every want 
38d0: 74 6f 20 64 6f 20 74 68 69 73 2c 20 62 75 74 20  to do this, but 
38e0: 69 74 0a 2a 2a 20 69 73 20 61 6c 6c 6f 77 65 64  it.** is allowed
38f0: 2c 20 69 6e 20 74 68 65 6f 72 79 2e 29 20 20 42  , in theory.)  B
3900: 75 74 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  ut the busy hand
3910: 6c 65 72 20 6d 61 79 20 6e 6f 74 20 63 6c 6f 73  ler may not clos
3920: 65 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73  e the.** databas
3930: 65 2e 20 20 43 6c 6f 73 69 6e 67 20 74 68 65 20  e.  Closing the 
3940: 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20 61 20  database from a 
3950: 62 75 73 79 20 68 61 6e 64 6c 65 72 20 77 69 6c  busy handler wil
3960: 6c 20 64 65 6c 65 74 65 20 0a 2a 2a 20 64 61 74  l delete .** dat
3970: 61 20 73 74 72 75 63 74 75 72 65 73 20 6f 75 74  a structures out
3980: 20 66 72 6f 6d 20 75 6e 64 65 72 20 74 68 65 20   from under the 
3990: 65 78 65 63 75 74 69 6e 67 20 71 75 65 72 79 20  executing query 
39a0: 61 6e 64 20 77 69 6c 6c 20 0a 2a 2a 20 70 72 6f  and will .** pro
39b0: 62 61 62 6c 79 20 72 65 73 75 6c 74 20 69 6e 20  bably result in 
39c0: 61 20 63 6f 72 65 64 75 6d 70 2e 0a 2a 2f 0a 69  a coredump..*/.i
39d0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  nt sqlite3_busy_
39e0: 68 61 6e 64 6c 65 72 28 73 71 6c 69 74 65 33 2a  handler(sqlite3*
39f0: 2c 20 69 6e 74 28 2a 29 28 76 6f 69 64 2a 2c 69  , int(*)(void*,i
3a00: 6e 74 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a  nt), void*);../*
3a10: 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65  .** This routine
3a20: 20 73 65 74 73 20 61 20 62 75 73 79 20 68 61 6e   sets a busy han
3a30: 64 6c 65 72 20 74 68 61 74 20 73 6c 65 65 70 73  dler that sleeps
3a40: 20 66 6f 72 20 61 20 77 68 69 6c 65 20 77 68 65   for a while whe
3a50: 6e 20 61 0a 2a 2a 20 74 61 62 6c 65 20 69 73 20  n a.** table is 
3a60: 6c 6f 63 6b 65 64 2e 20 20 54 68 65 20 68 61 6e  locked.  The han
3a70: 64 6c 65 72 20 77 69 6c 6c 20 73 6c 65 65 70 20  dler will sleep 
3a80: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75  multiple times u
3a90: 6e 74 69 6c 20 0a 2a 2a 20 61 74 20 6c 65 61 73  ntil .** at leas
3aa0: 74 20 22 6d 73 22 20 6d 69 6c 6c 65 73 65 63 6f  t "ms" milleseco
3ab0: 6e 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 20  nds of sleeping 
3ac0: 68 61 76 65 20 62 65 65 6e 20 64 6f 6e 65 2e 20  have been done. 
3ad0: 20 41 66 74 65 72 0a 2a 2a 20 22 6d 73 22 20 6d   After.** "ms" m
3ae0: 69 6c 6c 65 73 65 63 6f 6e 64 73 20 6f 66 20 73  illeseconds of s
3af0: 6c 65 65 70 69 6e 67 2c 20 74 68 65 20 68 61 6e  leeping, the han
3b00: 64 6c 65 72 20 72 65 74 75 72 6e 73 20 30 20 77  dler returns 0 w
3b10: 68 69 63 68 0a 2a 2a 20 63 61 75 73 65 73 20 73  hich.** causes s
3b20: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 74 6f  qlite3_exec() to
3b30: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 42   return SQLITE_B
3b40: 55 53 59 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 69  USY..**.** Calli
3b50: 6e 67 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  ng this routine 
3b60: 77 69 74 68 20 61 6e 20 61 72 67 75 6d 65 6e 74  with an argument
3b70: 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71   less than or eq
3b80: 75 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74  ual to zero.** t
3b90: 75 72 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75 73  urns off all bus
3ba0: 79 20 68 61 6e 64 6c 65 72 73 2e 0a 2a 2f 0a 69  y handlers..*/.i
3bb0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  nt sqlite3_busy_
3bc0: 74 69 6d 65 6f 75 74 28 73 71 6c 69 74 65 33 2a  timeout(sqlite3*
3bd0: 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a 2f 2a 0a 2a  , int ms);../*.*
3be0: 2a 20 54 68 69 73 20 6e 65 78 74 20 72 6f 75 74  * This next rout
3bf0: 69 6e 65 20 69 73 20 72 65 61 6c 6c 79 20 6a 75  ine is really ju
3c00: 73 74 20 61 20 77 72 61 70 70 65 72 20 61 72 6f  st a wrapper aro
3c10: 75 6e 64 20 73 71 6c 69 74 65 33 5f 65 78 65 63  und sqlite3_exec
3c20: 28 29 2e 0a 2a 2a 20 49 6e 73 74 65 61 64 20 6f  ()..** Instead o
3c30: 66 20 69 6e 76 6f 6b 69 6e 67 20 61 20 75 73 65  f invoking a use
3c40: 72 2d 73 75 70 70 6c 69 65 64 20 63 61 6c 6c 62  r-supplied callb
3c50: 61 63 6b 20 66 6f 72 20 65 61 63 68 20 72 6f 77  ack for each row
3c60: 20 6f 66 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c   of the.** resul
3c70: 74 2c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  t, this routine 
3c80: 72 65 6d 65 6d 62 65 72 73 20 65 61 63 68 20 72  remembers each r
3c90: 6f 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ow of the result
3ca0: 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a 2a 20 6f 62   in memory.** ob
3cb0: 74 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c  tained from mall
3cc0: 6f 63 28 29 2c 20 74 68 65 6e 20 72 65 74 75 72  oc(), then retur
3cd0: 6e 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 65  ns all of the re
3ce0: 73 75 6c 74 20 61 66 74 65 72 20 74 68 65 0a 2a  sult after the.*
3cf0: 2a 20 71 75 65 72 79 20 68 61 73 20 66 69 6e 69  * query has fini
3d00: 73 68 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 41 73 20  shed. .**.** As 
3d10: 61 6e 20 65 78 61 6d 70 6c 65 2c 20 73 75 70 70  an example, supp
3d20: 6f 73 65 20 74 68 65 20 71 75 65 72 79 20 72 65  ose the query re
3d30: 73 75 6c 74 20 77 68 65 72 65 20 74 68 69 73 20  sult where this 
3d40: 74 61 62 6c 65 3a 0a 2a 2a 0a 2a 2a 20 20 20 20  table:.**.**    
3d50: 20 20 20 20 4e 61 6d 65 20 20 20 20 20 20 20 20      Name        
3d60: 7c 20 41 67 65 0a 2a 2a 20 20 20 20 20 20 20 20  | Age.**        
3d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d80: 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20 20  -------.**      
3d90: 20 20 41 6c 69 63 65 20 20 20 20 20 20 20 7c 20    Alice       | 
3da0: 34 33 0a 2a 2a 20 20 20 20 20 20 20 20 42 6f 62  43.**        Bob
3db0: 20 20 20 20 20 20 20 20 20 7c 20 32 38 0a 2a 2a           | 28.**
3dc0: 20 20 20 20 20 20 20 20 43 69 6e 64 79 20 20 20          Cindy   
3dd0: 20 20 20 20 7c 20 32 31 0a 2a 2a 0a 2a 2a 20 49      | 21.**.** I
3de0: 66 20 74 68 65 20 33 72 64 20 61 72 67 75 6d 65  f the 3rd argume
3df0: 6e 74 20 77 65 72 65 20 26 61 7a 52 65 73 75 6c  nt were &azResul
3e00: 74 20 74 68 65 6e 20 61 66 74 65 72 20 74 68 65  t then after the
3e10: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
3e20: 73 0a 2a 2a 20 61 7a 52 65 73 75 6c 74 20 77 69  s.** azResult wi
3e30: 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 66  ll contain the f
3e40: 6f 6c 6c 6f 77 69 6e 67 20 64 61 74 61 3a 0a 2a  ollowing data:.*
3e50: 2a 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  *.**        azRe
3e60: 73 75 6c 74 5b 30 5d 20 3d 20 22 4e 61 6d 65 22  sult[0] = "Name"
3e70: 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
3e80: 73 75 6c 74 5b 31 5d 20 3d 20 22 41 67 65 22 3b  sult[1] = "Age";
3e90: 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
3ea0: 75 6c 74 5b 32 5d 20 3d 20 22 41 6c 69 63 65 22  ult[2] = "Alice"
3eb0: 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
3ec0: 73 75 6c 74 5b 33 5d 20 3d 20 22 34 33 22 3b 0a  sult[3] = "43";.
3ed0: 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75  **        azResu
3ee0: 6c 74 5b 34 5d 20 3d 20 22 42 6f 62 22 3b 0a 2a  lt[4] = "Bob";.*
3ef0: 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
3f00: 74 5b 35 5d 20 3d 20 22 32 38 22 3b 0a 2a 2a 20  t[5] = "28";.** 
3f10: 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 5b         azResult[
3f20: 36 5d 20 3d 20 22 43 69 6e 64 79 22 3b 0a 2a 2a  6] = "Cindy";.**
3f30: 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
3f40: 5b 37 5d 20 3d 20 22 32 31 22 3b 0a 2a 2a 0a 2a  [7] = "21";.**.*
3f50: 2a 20 4e 6f 74 69 63 65 20 74 68 61 74 20 74 68  * Notice that th
3f60: 65 72 65 20 69 73 20 61 6e 20 65 78 74 72 61 20  ere is an extra 
3f70: 72 6f 77 20 6f 66 20 64 61 74 61 20 63 6f 6e 74  row of data cont
3f80: 61 69 6e 69 6e 67 20 74 68 65 20 63 6f 6c 75 6d  aining the colum
3f90: 6e 0a 2a 2a 20 68 65 61 64 65 72 73 2e 20 20 42  n.** headers.  B
3fa0: 75 74 20 74 68 65 20 2a 6e 72 6f 77 20 72 65 74  ut the *nrow ret
3fb0: 75 72 6e 20 76 61 6c 75 65 20 69 73 20 73 74 69  urn value is sti
3fc0: 6c 6c 20 33 2e 20 20 2a 6e 63 6f 6c 75 6d 6e 20  ll 3.  *ncolumn 
3fd0: 69 73 0a 2a 2a 20 73 65 74 20 74 6f 20 32 2e 20  is.** set to 2. 
3fe0: 20 49 6e 20 67 65 6e 65 72 61 6c 2c 20 74 68 65   In general, the
3ff0: 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
4000: 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20  s inserted into 
4010: 61 7a 52 65 73 75 6c 74 0a 2a 2a 20 77 69 6c 6c  azResult.** will
4020: 20 62 65 20 28 28 2a 6e 72 6f 77 29 20 2b 20 31   be ((*nrow) + 1
4030: 29 2a 28 2a 6e 63 6f 6c 75 6d 6e 29 2e 0a 2a 2a  )*(*ncolumn)..**
4040: 0a 2a 2a 20 41 66 74 65 72 20 74 68 65 20 63 61  .** After the ca
4050: 6c 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 68  lling function h
4060: 61 73 20 66 69 6e 69 73 68 65 64 20 75 73 69 6e  as finished usin
4070: 67 20 74 68 65 20 72 65 73 75 6c 74 2c 20 69 74  g the result, it
4080: 20 73 68 6f 75 6c 64 20 0a 2a 2a 20 70 61 73 73   should .** pass
4090: 20 74 68 65 20 72 65 73 75 6c 74 20 64 61 74 61   the result data
40a0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69   pointer to sqli
40b0: 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
40c0: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 0a 2a 2a   in order to .**
40d0: 20 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d   release the mem
40e0: 6f 72 79 20 74 68 61 74 20 77 61 73 20 6d 61 6c  ory that was mal
40f0: 6c 6f 63 2d 65 64 2e 20 20 42 65 63 61 75 73 65  loc-ed.  Because
4100: 20 6f 66 20 74 68 65 20 77 61 79 20 74 68 65 20   of the way the 
4110: 0a 2a 2a 20 6d 61 6c 6c 6f 63 28 29 20 68 61 70  .** malloc() hap
4120: 70 65 6e 73 2c 20 74 68 65 20 63 61 6c 6c 69 6e  pens, the callin
4130: 67 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20  g function must 
4140: 6e 6f 74 20 74 72 79 20 74 6f 20 63 61 6c 6c 20  not try to call 
4150: 0a 2a 2a 20 66 72 65 65 28 29 20 64 69 72 65 63  .** free() direc
4160: 74 6c 79 2e 20 20 4f 6e 6c 79 20 73 71 6c 69 74  tly.  Only sqlit
4170: 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 20  e3_free_table() 
4180: 69 73 20 61 62 6c 65 20 74 6f 20 72 65 6c 65 61  is able to relea
4190: 73 65 20 0a 2a 2a 20 74 68 65 20 6d 65 6d 6f 72  se .** the memor
41a0: 79 20 70 72 6f 70 65 72 6c 79 20 61 6e 64 20 73  y properly and s
41b0: 61 66 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  afely..**.** The
41c0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66   return value of
41d0: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73   this routine is
41e0: 20 74 68 65 20 73 61 6d 65 20 61 73 20 66 72 6f   the same as fro
41f0: 6d 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  m sqlite3_exec()
4200: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
4210: 5f 67 65 74 5f 74 61 62 6c 65 28 0a 20 20 73 71  _get_table(.  sq
4220: 6c 69 74 65 33 2a 2c 20 20 20 20 20 20 20 20 20  lite3*,         
4230: 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70 65 6e        /* An open
4240: 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20 20 63   database */.  c
4250: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 2c 20  onst char *sql, 
4260: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20        /* SQL to 
4270: 62 65 20 65 78 65 63 75 74 65 64 20 2a 2f 0a 20  be executed */. 
4280: 20 63 68 61 72 20 2a 2a 2a 72 65 73 75 6c 74 70   char ***resultp
4290: 2c 20 20 20 20 20 20 20 2f 2a 20 52 65 73 75 6c  ,       /* Resul
42a0: 74 20 77 72 69 74 74 65 6e 20 74 6f 20 61 20 63  t written to a c
42b0: 68 61 72 20 2a 5b 5d 20 20 74 68 61 74 20 74 68  har *[]  that th
42c0: 69 73 20 70 6f 69 6e 74 73 20 74 6f 20 2a 2f 0a  is points to */.
42d0: 20 20 69 6e 74 20 2a 6e 72 6f 77 2c 20 20 20 20    int *nrow,    
42e0: 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
42f0: 65 72 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77  er of result row
4300: 73 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a  s written here *
4310: 2f 0a 20 20 69 6e 74 20 2a 6e 63 6f 6c 75 6d 6e  /.  int *ncolumn
4320: 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75  ,          /* Nu
4330: 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63  mber of result c
4340: 6f 6c 75 6d 6e 73 20 77 72 69 74 74 65 6e 20 68  olumns written h
4350: 65 72 65 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a  ere */.  char **
4360: 65 72 72 6d 73 67 20 20 20 20 20 20 20 20 20 20  errmsg          
4370: 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69  /* Error msg wri
4380: 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a  tten here */.);.
4390: 0a 2f 2a 0a 2a 2a 20 43 61 6c 6c 20 74 68 69 73  ./*.** Call this
43a0: 20 72 6f 75 74 69 6e 65 20 74 6f 20 66 72 65 65   routine to free
43b0: 20 74 68 65 20 6d 65 6d 6f 72 79 20 74 68 61 74   the memory that
43c0: 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
43d0: 6c 65 28 29 20 61 6c 6c 6f 63 61 74 65 64 2e 0a  le() allocated..
43e0: 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  */.void sqlite3_
43f0: 66 72 65 65 5f 74 61 62 6c 65 28 63 68 61 72 20  free_table(char 
4400: 2a 2a 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a  **result);../*.*
4410: 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  * The following 
4420: 72 6f 75 74 69 6e 65 73 20 61 72 65 20 76 61 72  routines are var
4430: 69 61 6e 74 73 20 6f 66 20 74 68 65 20 22 73 70  iants of the "sp
4440: 72 69 6e 74 66 28 29 22 20 66 72 6f 6d 20 74 68  rintf()" from th
4450: 65 0a 2a 2a 20 73 74 61 6e 64 61 72 64 20 43 20  e.** standard C 
4460: 6c 69 62 72 61 72 79 2e 20 20 54 68 65 20 72 65  library.  The re
4470: 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 20 69  sulting string i
4480: 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d  s written into m
4490: 65 6d 6f 72 79 0a 2a 2a 20 6f 62 74 61 69 6e 65  emory.** obtaine
44a0: 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 20  d from malloc() 
44b0: 73 6f 20 74 68 61 74 20 74 68 65 72 65 20 69 73  so that there is
44c0: 20 6e 65 76 65 72 20 61 20 70 6f 73 73 69 62 6c   never a possibl
44d0: 69 74 79 20 6f 66 20 62 75 66 66 65 72 0a 2a 2a  ity of buffer.**
44e0: 20 6f 76 65 72 66 6c 6f 77 2e 20 20 54 68 65 73   overflow.  Thes
44f0: 65 20 72 6f 75 74 69 6e 65 73 20 61 6c 73 6f 20  e routines also 
4500: 69 6d 70 6c 65 6d 65 6e 74 20 73 6f 6d 65 20 61  implement some a
4510: 64 64 69 74 69 6f 6e 61 6c 20 66 6f 72 6d 61 74  dditional format
4520: 74 69 6e 67 0a 2a 2a 20 6f 70 74 69 6f 6e 73 20  ting.** options 
4530: 74 68 61 74 20 61 72 65 20 75 73 65 66 75 6c 20  that are useful 
4540: 66 6f 72 20 63 6f 6e 73 74 72 75 63 74 69 6e 67  for constructing
4550: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
4560: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e  .**.** The strin
4570: 67 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  gs returned by t
4580: 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 73 68  hese routines sh
4590: 6f 75 6c 64 20 62 65 20 66 72 65 65 64 20 62 79  ould be freed by
45a0: 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69   calling.** sqli
45b0: 74 65 33 5f 66 72 65 65 28 29 2e 0a 2a 2a 0a 2a  te3_free()..**.*
45c0: 2a 20 41 6c 6c 20 6f 66 20 74 68 65 20 75 73 75  * All of the usu
45d0: 61 6c 20 70 72 69 6e 74 66 20 66 6f 72 6d 61 74  al printf format
45e0: 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 61 70 70  ting options app
45f0: 6c 79 2e 20 20 49 6e 20 61 64 64 69 74 69 6f 6e  ly.  In addition
4600: 2c 20 74 68 65 72 65 0a 2a 2a 20 69 73 20 61 20  , there.** is a 
4610: 22 25 71 22 20 6f 70 74 69 6f 6e 2e 20 20 25 71  "%q" option.  %q
4620: 20 77 6f 72 6b 73 20 6c 69 6b 65 20 25 73 20 69   works like %s i
4630: 6e 20 74 68 61 74 20 69 74 20 73 75 62 73 74 69  n that it substi
4640: 74 75 74 65 73 20 61 20 6e 75 6c 6c 2d 74 65 72  tutes a null-ter
4650: 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e  minated.** strin
4660: 67 20 66 72 6f 6d 20 74 68 65 20 61 72 67 75 6d  g from the argum
4670: 65 6e 74 20 6c 69 73 74 2e 20 20 42 75 74 20 25  ent list.  But %
4680: 71 20 61 6c 73 6f 20 64 6f 75 62 6c 65 73 20 65  q also doubles e
4690: 76 65 72 79 20 27 5c 27 27 20 63 68 61 72 61 63  very '\'' charac
46a0: 74 65 72 2e 0a 2a 2a 20 25 71 20 69 73 20 64 65  ter..** %q is de
46b0: 73 69 67 6e 65 64 20 66 6f 72 20 75 73 65 20 69  signed for use i
46c0: 6e 73 69 64 65 20 61 20 73 74 72 69 6e 67 20 6c  nside a string l
46d0: 69 74 65 72 61 6c 2e 20 20 42 79 20 64 6f 75 62  iteral.  By doub
46e0: 6c 69 6e 67 20 65 61 63 68 20 27 5c 27 27 0a 2a  ling each '\''.*
46f0: 2a 20 63 68 61 72 61 63 74 65 72 20 69 74 20 65  * character it e
4700: 73 63 61 70 65 73 20 74 68 61 74 20 63 68 61 72  scapes that char
4710: 61 63 74 65 72 20 61 6e 64 20 61 6c 6c 6f 77 73  acter and allows
4720: 20 69 74 20 74 6f 20 62 65 20 69 6e 73 65 72 74   it to be insert
4730: 65 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73  ed into.** the s
4740: 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 46 6f 72  tring..**.** For
4750: 20 65 78 61 6d 70 6c 65 2c 20 73 6f 20 73 6f 6d   example, so som
4760: 65 20 73 74 72 69 6e 67 20 76 61 72 69 61 62 6c  e string variabl
4770: 65 20 63 6f 6e 74 61 69 6e 73 20 74 65 78 74 20  e contains text 
4780: 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a  as follows:.**.*
4790: 2a 20 20 20 20 20 20 63 68 61 72 20 2a 7a 54 65  *      char *zTe
47a0: 78 74 20 3d 20 22 49 74 27 73 20 61 20 68 61 70  xt = "It's a hap
47b0: 70 79 20 64 61 79 21 22 3b 0a 2a 2a 0a 2a 2a 20  py day!";.**.** 
47c0: 57 65 20 63 61 6e 20 75 73 65 20 74 68 69 73 20  We can use this 
47d0: 74 65 78 74 20 69 6e 20 61 6e 20 53 51 4c 20 73  text in an SQL s
47e0: 74 61 74 65 6d 65 6e 74 20 61 73 20 66 6f 6c 6c  tatement as foll
47f0: 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20  ows:.**.**      
4800: 63 68 61 72 20 2a 7a 20 3d 20 73 71 6c 69 74 65  char *z = sqlite
4810: 33 5f 6d 70 72 69 6e 74 66 28 22 49 4e 53 45 52  3_mprintf("INSER
4820: 54 20 49 4e 54 4f 20 54 41 42 4c 45 53 28 27 25  T INTO TABLES('%
4830: 71 27 29 22 2c 20 7a 54 65 78 74 29 3b 0a 2a 2a  q')", zText);.**
4840: 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 65 78        sqlite3_ex
4850: 65 63 28 64 62 2c 20 7a 2c 20 63 61 6c 6c 62 61  ec(db, z, callba
4860: 63 6b 31 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20 20  ck1, 0, 0);.**  
4870: 20 20 20 20 73 71 6c 69 74 65 33 5f 66 72 65 65      sqlite3_free
4880: 28 7a 29 3b 0a 2a 2a 0a 2a 2a 20 42 65 63 61 75  (z);.**.** Becau
4890: 73 65 20 74 68 65 20 25 71 20 66 6f 72 6d 61 74  se the %q format
48a0: 20 73 74 72 69 6e 67 20 69 73 20 75 73 65 64 2c   string is used,
48b0: 20 74 68 65 20 27 5c 27 27 20 63 68 61 72 61 63   the '\'' charac
48c0: 74 65 72 20 69 6e 20 7a 54 65 78 74 0a 2a 2a 20  ter in zText.** 
48d0: 69 73 20 65 73 63 61 70 65 64 20 61 6e 64 20 74  is escaped and t
48e0: 68 65 20 53 51 4c 20 67 65 6e 65 72 61 74 65 64  he SQL generated
48f0: 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a   is as follows:.
4900: 2a 2a 0a 2a 2a 20 20 20 20 20 20 49 4e 53 45 52  **.**      INSER
4910: 54 20 49 4e 54 4f 20 74 61 62 6c 65 31 20 56 41  T INTO table1 VA
4920: 4c 55 45 53 28 27 49 74 27 27 73 20 61 20 68 61  LUES('It''s a ha
4930: 70 70 79 20 64 61 79 21 27 29 0a 2a 2a 0a 2a 2a  ppy day!').**.**
4940: 20 54 68 69 73 20 69 73 20 63 6f 72 72 65 63 74   This is correct
4950: 2e 20 20 48 61 64 20 77 65 20 75 73 65 64 20 25  .  Had we used %
4960: 73 20 69 6e 73 74 65 61 64 20 6f 66 20 25 71 2c  s instead of %q,
4970: 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 53   the generated S
4980: 51 4c 0a 2a 2a 20 77 6f 75 6c 64 20 68 61 76 65  QL.** would have
4990: 20 6c 6f 6f 6b 65 64 20 6c 69 6b 65 20 74 68 69   looked like thi
49a0: 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 49 4e  s:.**.**      IN
49b0: 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c 65 31  SERT INTO table1
49c0: 20 56 41 4c 55 45 53 28 27 49 74 27 73 20 61 20   VALUES('It's a 
49d0: 68 61 70 70 79 20 64 61 79 21 27 29 3b 0a 2a 2a  happy day!');.**
49e0: 0a 2a 2a 20 54 68 69 73 20 73 65 63 6f 6e 64 20  .** This second 
49f0: 65 78 61 6d 70 6c 65 20 69 73 20 61 6e 20 53 51  example is an SQ
4a00: 4c 20 73 79 6e 74 61 78 20 65 72 72 6f 72 2e 20  L syntax error. 
4a10: 20 41 73 20 61 20 67 65 6e 65 72 61 6c 20 72 75   As a general ru
4a20: 6c 65 20 79 6f 75 0a 2a 2a 20 73 68 6f 75 6c 64  le you.** should
4a30: 20 61 6c 77 61 79 73 20 75 73 65 20 25 71 20 69   always use %q i
4a40: 6e 73 74 65 61 64 20 6f 66 20 25 73 20 77 68 65  nstead of %s whe
4a50: 6e 20 69 6e 73 65 72 74 69 6e 67 20 74 65 78 74  n inserting text
4a60: 20 69 6e 74 6f 20 61 20 73 74 72 69 6e 67 20 0a   into a string .
4a70: 2a 2a 20 6c 69 74 65 72 61 6c 2e 0a 2a 2f 0a 63  ** literal..*/.c
4a80: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 6d 70 72  har *sqlite3_mpr
4a90: 69 6e 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a  intf(const char*
4aa0: 2c 2e 2e 2e 29 3b 0a 63 68 61 72 20 2a 73 71 6c  ,...);.char *sql
4ab0: 69 74 65 33 5f 76 6d 70 72 69 6e 74 66 28 63 6f  ite3_vmprintf(co
4ac0: 6e 73 74 20 63 68 61 72 2a 2c 20 76 61 5f 6c 69  nst char*, va_li
4ad0: 73 74 29 3b 0a 63 68 61 72 20 2a 73 71 6c 69 74  st);.char *sqlit
4ae0: 65 33 5f 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c  e3_snprintf(int,
4af0: 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72  char*,const char
4b00: 2a 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20  *, ...);../*.** 
4b10: 53 51 4c 69 74 65 20 75 73 65 73 20 69 74 73 20  SQLite uses its 
4b20: 6f 77 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  own memory alloc
4b30: 61 74 6f 72 2e 20 20 4f 6e 20 6d 61 6e 79 20 69  ator.  On many i
4b40: 6e 73 74 61 6c 6c 61 74 69 6f 6e 73 2c 20 74 68  nstallations, th
4b50: 69 73 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c  is.** memory all
4b60: 6f 63 61 74 6f 72 20 69 73 20 69 64 65 6e 74 69  ocator is identi
4b70: 63 61 6c 20 74 6f 20 74 68 65 20 73 74 61 6e 64  cal to the stand
4b80: 61 72 64 20 6d 61 6c 6c 6f 63 28 29 2f 72 65 61  ard malloc()/rea
4b90: 6c 6c 6f 63 28 29 2f 66 72 65 65 28 29 0a 2a 2a  lloc()/free().**
4ba0: 20 61 6e 64 20 63 61 6e 20 62 65 20 75 73 65 64   and can be used
4bb0: 20 69 6e 74 65 72 63 68 61 6e 67 61 62 6c 65 2e   interchangable.
4bc0: 20 20 4f 6e 20 6f 74 68 65 72 73 2c 20 74 68 65    On others, the
4bd0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
4be0: 20 61 72 65 0a 2a 2a 20 64 69 66 66 65 72 65 6e   are.** differen
4bf0: 74 2e 20 20 46 6f 72 20 6d 61 78 69 6d 75 6d 20  t.  For maximum 
4c00: 70 6f 72 74 61 62 69 6c 69 74 79 2c 20 69 74 20  portability, it 
4c10: 69 73 20 62 65 73 74 20 6e 6f 74 20 74 6f 20 6d  is best not to m
4c20: 69 78 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f 20 74  ix calls.** to t
4c30: 68 65 20 73 74 61 6e 64 61 72 64 20 6d 61 6c 6c  he standard mall
4c40: 6f 63 2f 72 65 61 6c 6c 6f 63 2f 66 72 65 65 20  oc/realloc/free 
4c50: 77 69 74 68 20 74 68 65 20 73 71 6c 69 74 65 20  with the sqlite 
4c60: 76 65 72 73 69 6f 6e 73 2e 0a 2a 2f 0a 76 6f 69  versions..*/.voi
4c70: 64 20 2a 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  d *sqlite3_mallo
4c80: 63 28 69 6e 74 29 3b 0a 76 6f 69 64 20 2a 73 71  c(int);.void *sq
4c90: 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 76 6f  lite3_realloc(vo
4ca0: 69 64 2a 2c 20 69 6e 74 29 3b 0a 76 6f 69 64 20  id*, int);.void 
4cb0: 73 71 6c 69 74 65 33 5f 66 72 65 65 28 76 6f 69  sqlite3_free(voi
4cc0: 64 2a 29 3b 0a 0a 23 69 66 6e 64 65 66 20 53 51  d*);..#ifndef SQ
4cd0: 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52  LITE_OMIT_AUTHOR
4ce0: 49 5a 41 54 49 4f 4e 0a 2f 2a 0a 2a 2a 20 54 68  IZATION./*.** Th
4cf0: 69 73 20 72 6f 75 74 69 6e 65 20 72 65 67 69 73  is routine regis
4d00: 74 65 72 73 20 61 20 63 61 6c 6c 62 61 63 6b 20  ters a callback 
4d10: 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
4d20: 6c 69 62 72 61 72 79 2e 20 20 54 68 65 0a 2a 2a  library.  The.**
4d30: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
4d40: 6f 6b 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  oked (at compile
4d50: 2d 74 69 6d 65 2c 20 6e 6f 74 20 61 74 20 72 75  -time, not at ru
4d60: 6e 2d 74 69 6d 65 29 20 66 6f 72 20 65 61 63 68  n-time) for each
4d70: 0a 2a 2a 20 61 74 74 65 6d 70 74 20 74 6f 20 61  .** attempt to a
4d80: 63 63 65 73 73 20 61 20 63 6f 6c 75 6d 6e 20 6f  ccess a column o
4d90: 66 20 61 20 74 61 62 6c 65 20 69 6e 20 74 68 65  f a table in the
4da0: 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 65 20   database.  The 
4db0: 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 72 65 74 75  callback.** retu
4dc0: 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66  rns SQLITE_OK if
4dd0: 20 61 63 63 65 73 73 20 69 73 20 61 6c 6c 6f 77   access is allow
4de0: 65 64 2c 20 53 51 4c 49 54 45 5f 44 45 4e 59 20  ed, SQLITE_DENY 
4df0: 69 66 20 74 68 65 20 65 6e 74 69 72 65 0a 2a 2a  if the entire.**
4e00: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 73   SQL statement s
4e10: 68 6f 75 6c 64 20 62 65 20 61 62 6f 72 74 65 64  hould be aborted
4e20: 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 61   with an error a
4e30: 6e 64 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  nd SQLITE_IGNORE
4e40: 0a 2a 2a 20 69 66 20 74 68 65 20 63 6f 6c 75 6d  .** if the colum
4e50: 6e 20 73 68 6f 75 6c 64 20 62 65 20 74 72 65 61  n should be trea
4e60: 74 65 64 20 61 73 20 61 20 4e 55 4c 4c 20 76 61  ted as a NULL va
4e70: 6c 75 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  lue..*/.int sqli
4e80: 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
4e90: 65 72 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a  er(.  sqlite3*,.
4ea0: 20 20 69 6e 74 20 28 2a 78 41 75 74 68 29 28 76    int (*xAuth)(v
4eb0: 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63  oid*,int,const c
4ec0: 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  har*,const char*
4ed0: 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e  ,const char*,con
4ee0: 73 74 20 63 68 61 72 2a 29 2c 0a 20 20 76 6f 69  st char*),.  voi
4ef0: 64 20 2a 70 55 73 65 72 44 61 74 61 0a 29 3b 0a  d *pUserData.);.
4f00: 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54 68  #endif../*.** Th
4f10: 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
4f20: 65 72 20 74 6f 20 74 68 65 20 61 63 63 65 73 73  er to the access
4f30: 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 66   authorization f
4f40: 75 6e 63 74 69 6f 6e 20 61 62 6f 76 65 20 77 69  unction above wi
4f50: 6c 6c 0a 2a 2a 20 62 65 20 6f 6e 65 20 6f 66 20  ll.** be one of 
4f60: 74 68 65 20 76 61 6c 75 65 73 20 62 65 6c 6f 77  the values below
4f70: 2e 20 20 54 68 65 73 65 20 76 61 6c 75 65 73 20  .  These values 
4f80: 73 69 67 6e 69 66 79 20 77 68 61 74 20 6b 69 6e  signify what kin
4f90: 64 20 6f 66 20 6f 70 65 72 61 74 69 6f 6e 0a 2a  d of operation.*
4fa0: 2a 20 69 73 20 74 6f 20 62 65 20 61 75 74 68 6f  * is to be autho
4fb0: 72 69 7a 65 64 2e 20 20 54 68 65 20 33 72 64 20  rized.  The 3rd 
4fc0: 61 6e 64 20 34 74 68 20 70 61 72 61 6d 65 74 65  and 4th paramete
4fd0: 72 73 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72  rs to the author
4fe0: 69 7a 61 74 69 6f 6e 0a 2a 2a 20 66 75 6e 63 74  ization.** funct
4ff0: 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 61 72 61  ion will be para
5000: 6d 65 74 65 72 73 20 6f 72 20 4e 55 4c 4c 20 64  meters or NULL d
5010: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 69 63  epending on whic
5020: 68 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  h of the followi
5030: 6e 67 0a 2a 2a 20 63 6f 64 65 73 20 69 73 20 75  ng.** codes is u
5040: 73 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e  sed as the secon
5050: 64 20 70 61 72 61 6d 65 74 65 72 2e 20 20 54 68  d parameter.  Th
5060: 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20  e 5th parameter 
5070: 69 73 20 74 68 65 20 6e 61 6d 65 0a 2a 2a 20 6f  is the name.** o
5080: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 28  f the database (
5090: 22 6d 61 69 6e 22 2c 20 22 74 65 6d 70 22 2c 20  "main", "temp", 
50a0: 65 74 63 2e 29 20 69 66 20 61 70 70 6c 69 63 61  etc.) if applica
50b0: 62 6c 65 2e 20 20 54 68 65 20 36 74 68 20 70 61  ble.  The 6th pa
50c0: 72 61 6d 65 74 65 72 0a 2a 2a 20 69 73 20 74 68  rameter.** is th
50d0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69 6e  e name of the in
50e0: 6e 65 72 2d 6d 6f 73 74 20 74 72 69 67 67 65 72  ner-most trigger
50f0: 20 6f 72 20 76 69 65 77 20 74 68 61 74 20 69 73   or view that is
5100: 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72   responsible for
5110: 0a 2a 2a 20 74 68 65 20 61 63 63 65 73 73 20 61  .** the access a
5120: 74 74 65 6d 70 74 20 6f 72 20 4e 55 4c 4c 20 69  ttempt or NULL i
5130: 66 20 74 68 69 73 20 61 63 63 65 73 73 20 61 74  f this access at
5140: 74 65 6d 70 74 20 69 73 20 64 69 72 65 63 74 6c  tempt is directl
5150: 79 20 66 72 6f 6d 20 0a 2a 2a 20 69 6e 70 75 74  y from .** input
5160: 20 53 51 4c 20 63 6f 64 65 2e 0a 2a 2a 0a 2a 2a   SQL code..**.**
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5190: 20 20 20 20 20 20 20 20 20 20 41 72 67 2d 33 20            Arg-3 
51a0: 20 20 20 20 20 20 20 20 20 20 41 72 67 2d 34 0a            Arg-4.
51b0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
51c0: 45 5f 43 4f 50 59 20 20 20 20 20 20 20 20 20 20  E_COPY          
51d0: 20 20 20 20 20 20 20 20 30 20 20 20 2f 2a 20 54          0   /* T
51e0: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 46  able Name      F
51f0: 69 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 20 2a  ile Name       *
5200: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
5210: 5f 43 52 45 41 54 45 5f 49 4e 44 45 58 20 20 20  _CREATE_INDEX   
5220: 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20 49 6e         1   /* In
5230: 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61  dex Name      Ta
5240: 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
5250: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5260: 43 52 45 41 54 45 5f 54 41 42 4c 45 20 20 20 20  CREATE_TABLE    
5270: 20 20 20 20 20 20 32 20 20 20 2f 2a 20 54 61 62        2   /* Tab
5280: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
5290: 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
52a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
52b0: 52 45 41 54 45 5f 54 45 4d 50 5f 49 4e 44 45 58  REATE_TEMP_INDEX
52c0: 20 20 20 20 20 33 20 20 20 2f 2a 20 49 6e 64 65       3   /* Inde
52d0: 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c  x Name      Tabl
52e0: 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
52f0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
5300: 45 41 54 45 5f 54 45 4d 50 5f 54 41 42 4c 45 20  EATE_TEMP_TABLE 
5310: 20 20 20 20 34 20 20 20 2f 2a 20 54 61 62 6c 65      4   /* Table
5320: 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
5330: 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
5340: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45  efine SQLITE_CRE
5350: 41 54 45 5f 54 45 4d 50 5f 54 52 49 47 47 45 52  ATE_TEMP_TRIGGER
5360: 20 20 20 35 20 20 20 2f 2a 20 54 72 69 67 67 65     5   /* Trigge
5370: 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20  r Name    Table 
5380: 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
5390: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
53a0: 54 45 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20  TE_TEMP_VIEW    
53b0: 20 20 36 20 20 20 2f 2a 20 56 69 65 77 20 4e 61    6   /* View Na
53c0: 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  me       NULL   
53d0: 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
53e0: 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
53f0: 45 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20  E_TRIGGER       
5400: 20 37 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20   7   /* Trigger 
5410: 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61  Name    Table Na
5420: 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
5430: 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
5440: 5f 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20  _VIEW           
5450: 38 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65  8   /* View Name
5460: 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
5470: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
5480: 65 20 53 51 4c 49 54 45 5f 44 45 4c 45 54 45 20  e SQLITE_DELETE 
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 39                 9
54a0: 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
54b0: 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
54c0: 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
54d0: 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 49 4e 44   SQLITE_DROP_IND
54e0: 45 58 20 20 20 20 20 20 20 20 20 20 20 31 30 20  EX           10 
54f0: 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20    /* Index Name 
5500: 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20       Table Name 
5510: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
5520: 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 41 42 4c  SQLITE_DROP_TABL
5530: 45 20 20 20 20 20 20 20 20 20 20 20 31 31 20 20  E           11  
5540: 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
5550: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
5560: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
5570: 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f  QLITE_DROP_TEMP_
5580: 49 4e 44 45 58 20 20 20 20 20 20 31 32 20 20 20  INDEX      12   
5590: 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20  /* Index Name   
55a0: 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
55b0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
55c0: 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54  LITE_DROP_TEMP_T
55d0: 41 42 4c 45 20 20 20 20 20 20 31 33 20 20 20 2f  ABLE      13   /
55e0: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
55f0: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
5600: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
5610: 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 52  ITE_DROP_TEMP_TR
5620: 49 47 47 45 52 20 20 20 20 31 34 20 20 20 2f 2a  IGGER    14   /*
5630: 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20   Trigger Name   
5640: 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
5650: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
5660: 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 56 49 45  TE_DROP_TEMP_VIE
5670: 57 20 20 20 20 20 20 20 31 35 20 20 20 2f 2a 20  W       15   /* 
5680: 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20  View Name       
5690: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
56a0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
56b0: 45 5f 44 52 4f 50 5f 54 52 49 47 47 45 52 20 20  E_DROP_TRIGGER  
56c0: 20 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 54         16   /* T
56d0: 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54  rigger Name    T
56e0: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
56f0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
5700: 5f 44 52 4f 50 5f 56 49 45 57 20 20 20 20 20 20  _DROP_VIEW      
5710: 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20 56 69        17   /* Vi
5720: 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55  ew Name       NU
5730: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
5740: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5750: 49 4e 53 45 52 54 20 20 20 20 20 20 20 20 20 20  INSERT          
5760: 20 20 20 20 20 31 38 20 20 20 2f 2a 20 54 61 62       18   /* Tab
5770: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
5780: 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
5790: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50  #define SQLITE_P
57a0: 52 41 47 4d 41 20 20 20 20 20 20 20 20 20 20 20  RAGMA           
57b0: 20 20 20 20 31 39 20 20 20 2f 2a 20 50 72 61 67      19   /* Prag
57c0: 6d 61 20 4e 61 6d 65 20 20 20 20 20 31 73 74 20  ma Name     1st 
57d0: 61 72 67 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 23  arg or NULL */.#
57e0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45  define SQLITE_RE
57f0: 41 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20  AD              
5800: 20 20 20 32 30 20 20 20 2f 2a 20 54 61 62 6c 65     20   /* Table
5810: 20 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d   Name      Colum
5820: 6e 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64  n Name     */.#d
5830: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 45 4c  efine SQLITE_SEL
5840: 45 43 54 20 20 20 20 20 20 20 20 20 20 20 20 20  ECT             
5850: 20 20 32 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20    21   /* NULL  
5860: 20 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20            NULL  
5870: 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
5880: 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 4e  fine SQLITE_TRAN
5890: 53 41 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20  SACTION         
58a0: 20 32 32 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20   22   /* NULL   
58b0: 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20           NULL   
58c0: 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
58d0: 69 6e 65 20 53 51 4c 49 54 45 5f 55 50 44 41 54  ine SQLITE_UPDAT
58e0: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
58f0: 32 33 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  23   /* Table Na
5900: 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e  me      Column N
5910: 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  ame     */.#defi
5920: 6e 65 20 53 51 4c 49 54 45 5f 41 54 54 41 43 48  ne SQLITE_ATTACH
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
5940: 34 20 20 20 2f 2a 20 46 69 6c 65 6e 61 6d 65 20  4   /* Filename 
5950: 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
5960: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
5970: 65 20 53 51 4c 49 54 45 5f 44 45 54 41 43 48 20  e SQLITE_DETACH 
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 35                25
5990: 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e     /* Database N
59a0: 61 6d 65 20 20 20 4e 55 4c 4c 20 20 20 20 20 20  ame   NULL      
59b0: 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
59c0: 20 53 51 4c 49 54 45 5f 41 4c 54 45 52 5f 54 41   SQLITE_ALTER_TA
59d0: 42 4c 45 20 20 20 20 20 20 20 20 20 20 32 36 20  BLE          26 
59e0: 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61    /* Database Na
59f0: 6d 65 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20  me   Table Name 
5a00: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
5a10: 53 51 4c 49 54 45 5f 52 45 49 4e 44 45 58 20 20  SQLITE_REINDEX  
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 32 37 20 20              27  
5a30: 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20   /* Index Name  
5a40: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
5a50: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
5a60: 51 4c 49 54 45 5f 41 4e 41 4c 59 5a 45 20 20 20  QLITE_ANALYZE   
5a70: 20 20 20 20 20 20 20 20 20 20 20 32 38 20 20 20             28   
5a80: 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
5a90: 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
5aa0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
5ab0: 4c 49 54 45 5f 43 52 45 41 54 45 5f 56 54 41 42  LITE_CREATE_VTAB
5ac0: 4c 45 20 20 20 20 20 20 20 20 32 39 20 20 20 2f  LE        29   /
5ad0: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
5ae0: 20 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20    Module Name   
5af0: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
5b00: 49 54 45 5f 44 52 4f 50 5f 56 54 41 42 4c 45 20  ITE_DROP_VTABLE 
5b10: 20 20 20 20 20 20 20 20 20 33 30 20 20 20 2f 2a           30   /*
5b20: 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
5b30: 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20 20   Module Name    
5b40: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
5b50: 54 45 5f 46 55 4e 43 54 49 4f 4e 20 20 20 20 20  TE_FUNCTION     
5b60: 20 20 20 20 20 20 20 20 33 31 20 20 20 2f 2a 20          31   /* 
5b70: 46 75 6e 63 74 69 6f 6e 20 4e 61 6d 65 20 20 20  Function Name   
5b80: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
5b90: 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 72 65  */../*.** The re
5ba0: 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68  turn value of th
5bb0: 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20  e authorization 
5bc0: 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20  function should 
5bd0: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 0a 2a 2a  be one of the.**
5be0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74   following const
5bf0: 61 6e 74 73 3a 0a 2a 2f 0a 2f 2a 20 23 64 65 66  ants:.*/./* #def
5c00: 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20 30  ine SQLITE_OK  0
5c10: 20 20 20 2f 2f 20 41 6c 6c 6f 77 20 61 63 63 65     // Allow acce
5c20: 73 73 20 28 54 68 69 73 20 69 73 20 61 63 74 75  ss (This is actu
5c30: 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 61 62 6f  ally defined abo
5c40: 76 65 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ve) */.#define S
5c50: 51 4c 49 54 45 5f 44 45 4e 59 20 20 20 31 20 20  QLITE_DENY   1  
5c60: 20 2f 2a 20 41 62 6f 72 74 20 74 68 65 20 53 51   /* Abort the SQ
5c70: 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68  L statement with
5c80: 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65   an error */.#de
5c90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 47 4e 4f  fine SQLITE_IGNO
5ca0: 52 45 20 32 20 20 20 2f 2a 20 44 6f 6e 27 74 20  RE 2   /* Don't 
5cb0: 61 6c 6c 6f 77 20 61 63 63 65 73 73 2c 20 62 75  allow access, bu
5cc0: 74 20 64 6f 6e 27 74 20 67 65 6e 65 72 61 74 65  t don't generate
5cd0: 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a 2f 2a   an error */../*
5ce0: 0a 2a 2a 20 52 65 67 69 73 74 65 72 20 61 20 66  .** Register a f
5cf0: 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 72 61 63  unction for trac
5d00: 69 6e 67 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 20  ing SQL command 
5d10: 65 76 61 6c 75 61 74 69 6f 6e 2e 20 20 54 68 65  evaluation.  The
5d20: 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 72 65 67   function.** reg
5d30: 69 73 74 65 72 65 64 20 62 79 20 73 71 6c 69 74  istered by sqlit
5d40: 65 33 5f 74 72 61 63 65 28 29 20 69 73 20 69 6e  e3_trace() is in
5d50: 76 6f 6b 65 64 20 61 74 20 74 68 65 20 66 69 72  voked at the fir
5d60: 73 74 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  st sqlite3_step(
5d70: 29 0a 2a 2a 20 66 6f 72 20 74 68 65 20 65 76 61  ).** for the eva
5d80: 6c 75 61 74 69 6f 6e 20 6f 66 20 61 6e 20 53 51  luation of an SQ
5d90: 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  L statement.  Th
5da0: 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 67 69 73  e function regis
5db0: 74 65 72 65 64 20 62 79 0a 2a 2a 20 73 71 6c 69  tered by.** sqli
5dc0: 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 20 72 75  te3_profile() ru
5dd0: 6e 73 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66  ns at the end of
5de0: 20 65 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d   each SQL statem
5df0: 65 6e 74 20 61 6e 64 20 69 6e 63 6c 75 64 65 73  ent and includes
5e00: 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
5e10: 6f 6e 20 68 6f 77 20 6c 6f 6e 67 20 74 68 61 74  on how long that
5e20: 20 73 74 61 74 65 6d 65 6e 74 20 72 61 6e 2e 0a   statement ran..
5e30: 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
5e40: 33 5f 70 72 6f 66 69 6c 65 28 29 20 41 50 49 20  3_profile() API 
5e50: 69 73 20 63 75 72 72 65 6e 74 6c 79 20 63 6f 6e  is currently con
5e60: 73 69 64 65 72 65 64 20 65 78 70 65 72 69 6d 65  sidered experime
5e70: 6e 74 61 6c 20 61 6e 64 0a 2a 2a 20 69 73 20 73  ntal and.** is s
5e80: 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
5e90: 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74  ..*/.void *sqlit
5ea0: 65 33 5f 74 72 61 63 65 28 73 71 6c 69 74 65 33  e3_trace(sqlite3
5eb0: 2a 2c 20 76 6f 69 64 28 2a 78 54 72 61 63 65 29  *, void(*xTrace)
5ec0: 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61  (void*,const cha
5ed0: 72 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 76 6f 69  r*), void*);.voi
5ee0: 64 20 2a 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  d *sqlite3_profi
5ef0: 6c 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20  le(sqlite3*,.   
5f00: 76 6f 69 64 28 2a 78 50 72 6f 66 69 6c 65 29 28  void(*xProfile)(
5f10: 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72  void*,const char
5f20: 2a 2c 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 29  *,sqlite_uint64)
5f30: 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  , void*);../*.**
5f40: 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63 6f   This routine co
5f50: 6e 66 69 67 75 72 65 73 20 61 20 63 61 6c 6c 62  nfigures a callb
5f60: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2d 20 74  ack function - t
5f70: 68 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c  he progress call
5f80: 62 61 63 6b 20 2d 20 74 68 61 74 0a 2a 2a 20 69  back - that.** i
5f90: 73 20 69 6e 76 6f 6b 65 64 20 70 65 72 69 6f 64  s invoked period
5fa0: 69 63 61 6c 6c 79 20 64 75 72 69 6e 67 20 6c 6f  ically during lo
5fb0: 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61 6c 6c 73  ng running calls
5fc0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63   to sqlite3_exec
5fd0: 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73  (),.** sqlite3_s
5fe0: 74 65 70 28 29 20 61 6e 64 20 73 71 6c 69 74 65  tep() and sqlite
5ff0: 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2e 20 41  3_get_table(). A
6000: 6e 20 65 78 61 6d 70 6c 65 20 75 73 65 20 66 6f  n example use fo
6010: 72 20 74 68 69 73 20 41 50 49 20 69 73 20 74 6f  r this API is to
6020: 20 0a 2a 2a 20 6b 65 65 70 20 61 20 47 55 49 20   .** keep a GUI 
6030: 75 70 64 61 74 65 64 20 64 75 72 69 6e 67 20 61  updated during a
6040: 20 6c 61 72 67 65 20 71 75 65 72 79 2e 0a 2a 2a   large query..**
6050: 0a 2a 2a 20 54 68 65 20 70 72 6f 67 72 65 73 73  .** The progress
6060: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
6070: 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 76  oked once for ev
6080: 65 72 79 20 4e 20 76 69 72 74 75 61 6c 20 6d 61  ery N virtual ma
6090: 63 68 69 6e 65 20 6f 70 63 6f 64 65 73 2c 0a 2a  chine opcodes,.*
60a0: 2a 20 77 68 65 72 65 20 4e 20 69 73 20 74 68 65  * where N is the
60b0: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
60c0: 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f   to this functio
60d0: 6e 2e 20 54 68 65 20 70 72 6f 67 72 65 73 73 20  n. The progress 
60e0: 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 74 73 65  callback.** itse
60f0: 6c 66 20 69 73 20 69 64 65 6e 74 69 66 69 65 64  lf is identified
6100: 20 62 79 20 74 68 65 20 74 68 69 72 64 20 61 72   by the third ar
6110: 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 66  gument to this f
6120: 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 66 6f 75  unction. The fou
6130: 72 74 68 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  rth.** argument 
6140: 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  to this function
6150: 20 69 73 20 61 20 76 6f 69 64 20 70 6f 69 6e 74   is a void point
6160: 65 72 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  er passed to the
6170: 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61   progress callba
6180: 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 65  ck.** function e
6190: 61 63 68 20 74 69 6d 65 20 69 74 20 69 73 20 69  ach time it is i
61a0: 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66  nvoked..**.** If
61b0: 20 61 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74   a call to sqlit
61c0: 65 33 5f 65 78 65 63 28 29 2c 20 73 71 6c 69 74  e3_exec(), sqlit
61d0: 65 33 5f 73 74 65 70 28 29 20 6f 72 20 73 71 6c  e3_step() or sql
61e0: 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
61f0: 20 72 65 73 75 6c 74 73 20 0a 2a 2a 20 69 6e 20   results .** in 
6200: 6c 65 73 73 20 74 68 61 6e 20 4e 20 6f 70 63 6f  less than N opco
6210: 64 65 73 20 62 65 69 6e 67 20 65 78 65 63 75 74  des being execut
6220: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 70 72 6f  ed, then the pro
6230: 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 69  gress callback i
6240: 73 20 6e 6f 74 0a 2a 2a 20 69 6e 76 6f 6b 65 64  s not.** invoked
6250: 2e 0a 2a 2a 20 0a 2a 2a 20 54 6f 20 72 65 6d 6f  ..** .** To remo
6260: 76 65 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  ve the progress 
6270: 63 61 6c 6c 62 61 63 6b 20 61 6c 74 6f 67 65 74  callback altoget
6280: 68 65 72 2c 20 70 61 73 73 20 4e 55 4c 4c 20 61  her, pass NULL a
6290: 73 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 61  s the third.** a
62a0: 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20  rgument to this 
62b0: 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  function..**.** 
62c0: 49 66 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  If the progress 
62d0: 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
62e0: 20 61 20 72 65 73 75 6c 74 20 6f 74 68 65 72 20   a result other 
62f0: 74 68 61 6e 20 30 2c 20 74 68 65 6e 20 74 68 65  than 0, then the
6300: 20 63 75 72 72 65 6e 74 20 0a 2a 2a 20 71 75 65   current .** que
6310: 72 79 20 69 73 20 69 6d 6d 65 64 69 61 74 65 6c  ry is immediatel
6320: 79 20 74 65 72 6d 69 6e 61 74 65 64 20 61 6e 64  y terminated and
6330: 20 61 6e 79 20 64 61 74 61 62 61 73 65 20 63 68   any database ch
6340: 61 6e 67 65 73 20 72 6f 6c 6c 65 64 20 62 61 63  anges rolled bac
6350: 6b 2e 20 49 66 20 74 68 65 0a 2a 2a 20 71 75 65  k. If the.** que
6360: 72 79 20 77 61 73 20 70 61 72 74 20 6f 66 20 61  ry was part of a
6370: 20 6c 61 72 67 65 72 20 74 72 61 6e 73 61 63 74   larger transact
6380: 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 74 72  ion, then the tr
6390: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 6e 6f 74  ansaction is not
63a0: 20 72 6f 6c 6c 65 64 0a 2a 2a 20 62 61 63 6b 20   rolled.** back 
63b0: 61 6e 64 20 72 65 6d 61 69 6e 73 20 61 63 74 69  and remains acti
63c0: 76 65 2e 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ve. The sqlite3_
63d0: 65 78 65 63 28 29 20 63 61 6c 6c 20 72 65 74 75  exec() call retu
63e0: 72 6e 73 20 53 51 4c 49 54 45 5f 41 42 4f 52 54  rns SQLITE_ABORT
63f0: 2e 20 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 20 54 48  . .**.******* TH
6400: 49 53 20 49 53 20 41 4e 20 45 58 50 45 52 49 4d  IS IS AN EXPERIM
6410: 45 4e 54 41 4c 20 41 50 49 20 41 4e 44 20 49 53  ENTAL API AND IS
6420: 20 53 55 42 4a 45 43 54 20 54 4f 20 43 48 41 4e   SUBJECT TO CHAN
6430: 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 76 6f 69  GE ******.*/.voi
6440: 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  d sqlite3_progre
6450: 73 73 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69 74  ss_handler(sqlit
6460: 65 33 2a 2c 20 69 6e 74 2c 20 69 6e 74 28 2a 29  e3*, int, int(*)
6470: 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29 3b  (void*), void*);
6480: 0a 0a 2f 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72  ../*.** Register
6490: 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63   a callback func
64a0: 74 69 6f 6e 20 74 6f 20 62 65 20 69 6e 76 6f 6b  tion to be invok
64b0: 65 64 20 77 68 65 6e 65 76 65 72 20 61 20 6e 65  ed whenever a ne
64c0: 77 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 2a 2a  w transaction.**
64d0: 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 2e 20 20   is committed.  
64e0: 54 68 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e  The pArg argumen
64f0: 74 20 69 73 20 70 61 73 73 65 64 20 74 68 72 6f  t is passed thro
6500: 75 67 68 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ugh to the callb
6510: 61 63 6b 2e 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b  ack..** callback
6520: 2e 20 20 49 66 20 74 68 65 20 63 61 6c 6c 62 61  .  If the callba
6530: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  ck function retu
6540: 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68  rns non-zero, th
6550: 65 6e 20 74 68 65 20 63 6f 6d 6d 69 74 0a 2a 2a  en the commit.**
6560: 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
6570: 74 6f 20 61 20 72 6f 6c 6c 62 61 63 6b 2e 0a 2a  to a rollback..*
6580: 2a 0a 2a 2a 20 49 66 20 61 6e 6f 74 68 65 72 20  *.** If another 
6590: 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 70 72 65  function was pre
65a0: 76 69 6f 75 73 6c 79 20 72 65 67 69 73 74 65 72  viously register
65b0: 65 64 2c 20 69 74 73 20 70 41 72 67 20 76 61 6c  ed, its pArg val
65c0: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a  ue is returned..
65d0: 2a 2a 20 4f 74 68 65 72 77 69 73 65 20 4e 55 4c  ** Otherwise NUL
65e0: 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  L is returned..*
65f0: 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 69 6e 67  *.** Registering
6600: 20 61 20 4e 55 4c 4c 20 66 75 6e 63 74 69 6f 6e   a NULL function
6610: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 63 61   disables the ca
6620: 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a  llback..**.*****
6630: 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45 58  ** THIS IS AN EX
6640: 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41  PERIMENTAL API A
6650: 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f  ND IS SUBJECT TO
6660: 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a   CHANGE ******.*
6670: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
6680: 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 73 71 6c 69  commit_hook(sqli
6690: 74 65 33 2a 2c 20 69 6e 74 28 2a 29 28 76 6f 69  te3*, int(*)(voi
66a0: 64 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a  d*), void*);../*
66b0: 0a 2a 2a 20 4f 70 65 6e 20 74 68 65 20 73 71 6c  .** Open the sql
66c0: 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ite database fil
66d0: 65 20 22 66 69 6c 65 6e 61 6d 65 22 2e 20 20 54  e "filename".  T
66e0: 68 65 20 22 66 69 6c 65 6e 61 6d 65 22 20 69 73  he "filename" is
66f0: 20 55 54 46 2d 38 0a 2a 2a 20 65 6e 63 6f 64 65   UTF-8.** encode
6700: 64 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  d for sqlite3_op
6710: 65 6e 28 29 20 61 6e 64 20 55 54 46 2d 31 36 20  en() and UTF-16 
6720: 65 6e 63 6f 64 65 64 20 69 6e 20 74 68 65 20 6e  encoded in the n
6730: 61 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72  ative byte order
6740: 0a 2a 2a 20 66 6f 72 20 73 71 6c 69 74 65 33 5f  .** for sqlite3_
6750: 6f 70 65 6e 31 36 28 29 2e 20 20 41 6e 20 73 71  open16().  An sq
6760: 6c 69 74 65 33 2a 20 68 61 6e 64 6c 65 20 69 73  lite3* handle is
6770: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 2a 70 70   returned in *pp
6780: 44 62 2c 20 65 76 65 6e 0a 2a 2a 20 69 66 20 61  Db, even.** if a
6790: 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 20  n error occurs. 
67a0: 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  If the database 
67b0: 69 73 20 6f 70 65 6e 65 64 20 28 6f 72 20 63 72  is opened (or cr
67c0: 65 61 74 65 64 29 20 73 75 63 63 65 73 73 66 75  eated) successfu
67d0: 6c 6c 79 2c 0a 2a 2a 20 74 68 65 6e 20 53 51 4c  lly,.** then SQL
67e0: 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e  ITE_OK is return
67f0: 65 64 2e 20 4f 74 68 65 72 77 69 73 65 20 61 6e  ed. Otherwise an
6800: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72   error code is r
6810: 65 74 75 72 6e 65 64 2e 20 54 68 65 0a 2a 2a 20  eturned. The.** 
6820: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29  sqlite3_errmsg()
6830: 20 6f 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d   or sqlite3_errm
6840: 73 67 31 36 28 29 20 20 72 6f 75 74 69 6e 65 73  sg16()  routines
6850: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
6860: 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20 45 6e 67  obtain.** an Eng
6870: 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20 64 65  lish language de
6880: 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65  scription of the
6890: 20 65 72 72 6f 72 2e 0a 2a 2a 0a 2a 2a 20 49 66   error..**.** If
68a0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
68b0: 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  le does not exis
68c0: 74 2c 20 74 68 65 6e 20 61 20 6e 65 77 20 64 61  t, then a new da
68d0: 74 61 62 61 73 65 20 69 73 20 63 72 65 61 74 65  tabase is create
68e0: 64 2e 0a 2a 2a 20 54 68 65 20 65 6e 63 6f 64 69  d..** The encodi
68f0: 6e 67 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  ng for the datab
6900: 61 73 65 20 69 73 20 55 54 46 2d 38 20 69 66 20  ase is UTF-8 if 
6910: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 69  sqlite3_open() i
6920: 73 20 63 61 6c 6c 65 64 20 61 6e 64 0a 2a 2a 20  s called and.** 
6930: 55 54 46 2d 31 36 20 69 66 20 73 71 6c 69 74 65  UTF-16 if sqlite
6940: 33 5f 6f 70 65 6e 31 36 20 69 73 20 75 73 65 64  3_open16 is used
6950: 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68 65 72 20  ..**.** Whether 
6960: 6f 72 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20  or not an error 
6970: 6f 63 63 75 72 73 20 77 68 65 6e 20 69 74 20 69  occurs when it i
6980: 73 20 6f 70 65 6e 65 64 2c 20 72 65 73 6f 75 72  s opened, resour
6990: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a 2a  ces associated.*
69a0: 2a 20 77 69 74 68 20 74 68 65 20 73 71 6c 69 74  * with the sqlit
69b0: 65 33 2a 20 68 61 6e 64 6c 65 20 73 68 6f 75 6c  e3* handle shoul
69c0: 64 20 62 65 20 72 65 6c 65 61 73 65 64 20 62 79  d be released by
69d0: 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 0a 2a   passing it to.*
69e0: 2a 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  * sqlite3_close(
69f0: 29 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 20  ) when it is no 
6a00: 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65 64 2e  longer required.
6a10: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
6a20: 6f 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20 63 68  open(.  const ch
6a30: 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20  ar *filename,   
6a40: 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c 65  /* Database file
6a50: 6e 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a  name (UTF-8) */.
6a60: 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62    sqlite3 **ppDb
6a70: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54            /* OUT
6a80: 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64  : SQLite db hand
6a90: 6c 65 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c  le */.);.int sql
6aa0: 69 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20 63  ite3_open16(.  c
6ab0: 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65 6e  onst void *filen
6ac0: 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61  ame,   /* Databa
6ad0: 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46  se filename (UTF
6ae0: 2d 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65  -16) */.  sqlite
6af0: 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20  3 **ppDb        
6b00: 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65    /* OUT: SQLite
6b10: 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b   db handle */.);
6b20: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
6b30: 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 66 6f  he error code fo
6b40: 72 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  r the most recen
6b50: 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49 20  t sqlite3_* API 
6b60: 63 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 0a  call associated.
6b70: 2a 2a 20 77 69 74 68 20 73 71 6c 69 74 65 33 20  ** with sqlite3 
6b80: 68 61 6e 64 6c 65 20 27 64 62 27 2e 20 53 51 4c  handle 'db'. SQL
6b90: 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e  ITE_OK is return
6ba0: 65 64 20 69 66 20 74 68 65 20 6d 6f 73 74 20 72  ed if the most r
6bb0: 65 63 65 6e 74 20 0a 2a 2a 20 41 50 49 20 63 61  ecent .** API ca
6bc0: 6c 6c 20 77 61 73 20 73 75 63 63 65 73 73 66 75  ll was successfu
6bd0: 6c 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 73 20 74  l..**.** Calls t
6be0: 6f 20 6d 61 6e 79 20 73 71 6c 69 74 65 33 5f 2a  o many sqlite3_*
6bf0: 20 66 75 6e 63 74 69 6f 6e 73 20 73 65 74 20 74   functions set t
6c00: 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e  he error code an
6c10: 64 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65  d string returne
6c20: 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33 5f  d.** by sqlite3_
6c30: 65 72 72 63 6f 64 65 28 29 2c 20 73 71 6c 69 74  errcode(), sqlit
6c40: 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64 20  e3_errmsg() and 
6c50: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
6c60: 28 29 0a 2a 2a 20 28 6f 76 65 72 77 72 69 74 69  ().** (overwriti
6c70: 6e 67 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  ng the previous 
6c80: 76 61 6c 75 65 73 29 2e 20 4e 6f 74 65 20 74 68  values). Note th
6c90: 61 74 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69  at calls to sqli
6ca0: 74 65 33 5f 65 72 72 63 6f 64 65 28 29 2c 0a 2a  te3_errcode(),.*
6cb0: 2a 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  * sqlite3_errmsg
6cc0: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65  () and sqlite3_e
6cd0: 72 72 6d 73 67 31 36 28 29 20 74 68 65 6d 73 65  rrmsg16() themse
6ce0: 6c 76 65 73 20 64 6f 20 6e 6f 74 20 61 66 66 65  lves do not affe
6cf0: 63 74 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74  ct the.** result
6d00: 73 20 6f 66 20 66 75 74 75 72 65 20 69 6e 76 6f  s of future invo
6d10: 63 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41  cations..**.** A
6d20: 73 73 75 6d 69 6e 67 20 6e 6f 20 6f 74 68 65 72  ssuming no other
6d30: 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 73 71 6c   intervening sql
6d40: 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c 73  ite3_* API calls
6d50: 20 61 72 65 20 6d 61 64 65 2c 20 74 68 65 20 65   are made, the e
6d60: 72 72 6f 72 0a 2a 2a 20 63 6f 64 65 20 72 65 74  rror.** code ret
6d70: 75 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75  urned by this fu
6d80: 6e 63 74 69 6f 6e 20 69 73 20 61 73 73 6f 63 69  nction is associ
6d90: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 61  ated with the sa
6da0: 6d 65 20 65 72 72 6f 72 20 61 73 0a 2a 2a 20 74  me error as.** t
6db0: 68 65 20 73 74 72 69 6e 67 73 20 20 72 65 74 75  he strings  retu
6dc0: 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
6dd0: 65 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71 6c  errmsg() and sql
6de0: 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 2e  ite3_errmsg16().
6df0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
6e00: 65 72 72 63 6f 64 65 28 73 71 6c 69 74 65 33 20  errcode(sqlite3 
6e10: 2a 64 62 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  *db);../*.** Ret
6e20: 75 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  urn a pointer to
6e30: 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64   a UTF-8 encoded
6e40: 20 73 74 72 69 6e 67 20 64 65 73 63 72 69 62 69   string describi
6e50: 6e 67 20 69 6e 20 65 6e 67 6c 69 73 68 20 74 68  ng in english th
6e60: 65 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 6e 64 69  e.** error condi
6e70: 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6d 6f 73  tion for the mos
6e80: 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33  t recent sqlite3
6e90: 5f 2a 20 41 50 49 20 63 61 6c 6c 2e 20 54 68 65  _* API call. The
6ea0: 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 73 74 72   returned.** str
6eb0: 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20 74 65  ing is always te
6ec0: 72 6d 69 6e 61 74 65 64 20 62 79 20 61 6e 20 30  rminated by an 0
6ed0: 78 30 30 20 62 79 74 65 2e 0a 2a 2a 0a 2a 2a 20  x00 byte..**.** 
6ee0: 54 68 65 20 73 74 72 69 6e 67 20 22 6e 6f 74 20  The string "not 
6ef0: 61 6e 20 65 72 72 6f 72 22 20 69 73 20 72 65 74  an error" is ret
6f00: 75 72 6e 65 64 20 77 68 65 6e 20 74 68 65 20 6d  urned when the m
6f10: 6f 73 74 20 72 65 63 65 6e 74 20 41 50 49 20 63  ost recent API c
6f20: 61 6c 6c 20 77 61 73 0a 2a 2a 20 73 75 63 63 65  all was.** succe
6f30: 73 73 66 75 6c 2e 0a 2a 2f 0a 63 6f 6e 73 74 20  ssful..*/.const 
6f40: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72  char *sqlite3_er
6f50: 72 6d 73 67 28 73 71 6c 69 74 65 33 2a 29 3b 0a  rmsg(sqlite3*);.
6f60: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 61 20  ./*.** Return a 
6f70: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54 46  pointer to a UTF
6f80: 2d 31 36 20 6e 61 74 69 76 65 20 62 79 74 65 20  -16 native byte 
6f90: 6f 72 64 65 72 20 65 6e 63 6f 64 65 64 20 73 74  order encoded st
6fa0: 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67 0a  ring describing.
6fb0: 2a 2a 20 69 6e 20 65 6e 67 6c 69 73 68 20 74 68  ** in english th
6fc0: 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f  e error conditio
6fd0: 6e 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20 72  n for the most r
6fe0: 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20  ecent sqlite3_* 
6ff0: 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 54 68 65  API call..** The
7000: 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67   returned string
7010: 20 69 73 20 61 6c 77 61 79 73 20 74 65 72 6d 69   is always termi
7020: 6e 61 74 65 64 20 62 79 20 61 20 70 61 69 72 20  nated by a pair 
7030: 6f 66 20 30 78 30 30 20 62 79 74 65 73 2e 0a 2a  of 0x00 bytes..*
7040: 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67 20  *.** The string 
7050: 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 20 69  "not an error" i
7060: 73 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20  s returned when 
7070: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
7080: 41 50 49 20 63 61 6c 6c 20 77 61 73 0a 2a 2a 20  API call was.** 
7090: 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a 63  successful..*/.c
70a0: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
70b0: 65 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c 69  e3_errmsg16(sqli
70c0: 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 6e  te3*);../*.** An
70d0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
70e0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 61 71 75   following opaqu
70f0: 65 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  e structure is u
7100: 73 65 64 20 74 6f 20 72 65 70 72 65 73 65 6e 74  sed to represent
7110: 0a 2a 2a 20 61 20 63 6f 6d 70 69 6c 65 64 20 53  .** a compiled S
7120: 51 4c 20 73 74 61 74 6d 65 6e 74 2e 0a 2a 2f 0a  QL statment..*/.
7130: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
7140: 71 6c 69 74 65 33 5f 73 74 6d 74 20 73 71 6c 69  qlite3_stmt sqli
7150: 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a 2a 2a  te3_stmt;../*.**
7160: 20 54 6f 20 65 78 65 63 75 74 65 20 61 6e 20 53   To execute an S
7170: 51 4c 20 71 75 65 72 79 2c 20 69 74 20 6d 75 73  QL query, it mus
7180: 74 20 66 69 72 73 74 20 62 65 20 63 6f 6d 70 69  t first be compi
7190: 6c 65 64 20 69 6e 74 6f 20 61 20 62 79 74 65 2d  led into a byte-
71a0: 63 6f 64 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20  code.** program 
71b0: 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  using one of the
71c0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69   following routi
71d0: 6e 65 73 2e 20 54 68 65 20 6f 6e 6c 79 20 64 69  nes. The only di
71e0: 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e  fference between
71f0: 0a 2a 2a 20 74 68 65 6d 20 69 73 20 74 68 61 74  .** them is that
7200: 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
7210: 6d 65 6e 74 2c 20 73 70 65 63 69 66 79 69 6e 67  ment, specifying
7220: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
7230: 6e 74 20 74 6f 0a 2a 2a 20 63 6f 6d 70 69 6c 65  nt to.** compile
7240: 2c 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f 20  , is assumed to 
7250: 62 65 20 65 6e 63 6f 64 65 64 20 69 6e 20 55 54  be encoded in UT
7260: 46 2d 38 20 66 6f 72 20 74 68 65 20 73 71 6c 69  F-8 for the sqli
7270: 74 65 33 5f 70 72 65 70 61 72 65 28 29 0a 2a 2a  te3_prepare().**
7280: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 55 54   function and UT
7290: 46 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65 33  F-16 for sqlite3
72a0: 5f 70 72 65 70 61 72 65 31 36 28 29 2e 0a 2a 2a  _prepare16()..**
72b0: 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 61  .** The first pa
72c0: 72 61 6d 65 74 65 72 20 22 64 62 22 20 69 73 20  rameter "db" is 
72d0: 61 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  an SQLite databa
72e0: 73 65 20 68 61 6e 64 6c 65 2e 20 54 68 65 20 73  se handle. The s
72f0: 65 63 6f 6e 64 0a 2a 2a 20 70 61 72 61 6d 65 74  econd.** paramet
7300: 65 72 20 22 7a 53 71 6c 22 20 69 73 20 74 68 65  er "zSql" is the
7310: 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65   statement to be
7320: 20 63 6f 6d 70 69 6c 65 64 2c 20 65 6e 63 6f 64   compiled, encod
7330: 65 64 20 61 73 20 65 69 74 68 65 72 0a 2a 2a 20  ed as either.** 
7340: 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 20  UTF-8 or UTF-16 
7350: 28 73 65 65 20 61 62 6f 76 65 29 2e 20 49 66 20  (see above). If 
7360: 74 68 65 20 6e 65 78 74 20 70 61 72 61 6d 65 74  the next paramet
7370: 65 72 2c 20 22 6e 42 79 74 65 73 22 2c 20 69 73  er, "nBytes", is
7380: 20 6c 65 73 73 0a 2a 2a 20 74 68 61 6e 20 7a 65   less.** than ze
7390: 72 6f 2c 20 74 68 65 6e 20 7a 53 71 6c 20 69 73  ro, then zSql is
73a0: 20 72 65 61 64 20 75 70 20 74 6f 20 74 68 65 20   read up to the 
73b0: 66 69 72 73 74 20 6e 75 6c 20 74 65 72 6d 69 6e  first nul termin
73c0: 61 74 6f 72 2e 20 20 49 66 0a 2a 2a 20 22 6e 42  ator.  If.** "nB
73d0: 79 74 65 73 22 20 69 73 20 6e 6f 74 20 6c 65 73  ytes" is not les
73e0: 73 20 74 68 61 6e 20 7a 65 72 6f 2c 20 74 68 65  s than zero, the
73f0: 6e 20 69 74 20 69 73 20 74 68 65 20 6c 65 6e 67  n it is the leng
7400: 74 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67  th of the string
7410: 20 7a 53 71 6c 0a 2a 2a 20 69 6e 20 62 79 74 65   zSql.** in byte
7420: 73 20 28 6e 6f 74 20 63 68 61 72 61 63 74 65 72  s (not character
7430: 73 29 2e 0a 2a 2a 0a 2a 2a 20 2a 70 7a 54 61 69  s)..**.** *pzTai
7440: 6c 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69  l is made to poi
7450: 6e 74 20 74 6f 20 74 68 65 20 66 69 72 73 74 20  nt to the first 
7460: 62 79 74 65 20 70 61 73 74 20 74 68 65 20 65 6e  byte past the en
7470: 64 20 6f 66 20 74 68 65 20 66 69 72 73 74 0a 2a  d of the first.*
7480: 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  * SQL statement 
7490: 69 6e 20 7a 53 71 6c 2e 20 20 54 68 69 73 20 72  in zSql.  This r
74a0: 6f 75 74 69 6e 65 20 6f 6e 6c 79 20 63 6f 6d 70  outine only comp
74b0: 69 6c 65 73 20 74 68 65 20 66 69 72 73 74 20 73  iles the first s
74c0: 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69 6e 20 7a  tatement.** in z
74d0: 53 71 6c 2c 20 73 6f 20 2a 70 7a 54 61 69 6c 20  Sql, so *pzTail 
74e0: 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67  is left pointing
74f0: 20 74 6f 20 77 68 61 74 20 72 65 6d 61 69 6e 73   to what remains
7500: 20 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2a 0a   uncompiled..**.
7510: 2a 2a 20 2a 70 70 53 74 6d 74 20 69 73 20 6c 65  ** *ppStmt is le
7520: 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 61  ft pointing to a
7530: 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74   compiled SQL st
7540: 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 6e  atement that can
7550: 20 62 65 0a 2a 2a 20 65 78 65 63 75 74 65 64 20   be.** executed 
7560: 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 73 74  using sqlite3_st
7570: 65 70 28 29 2e 20 20 4f 72 20 69 66 20 74 68 65  ep().  Or if the
7580: 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2c 20  re is an error, 
7590: 2a 70 70 53 74 6d 74 20 6d 61 79 20 62 65 0a 2a  *ppStmt may be.*
75a0: 2a 20 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 20 20  * set to NULL.  
75b0: 49 66 20 74 68 65 20 69 6e 70 75 74 20 74 65 78  If the input tex
75c0: 74 20 63 6f 6e 74 61 69 6e 65 64 20 6e 6f 20 53  t contained no S
75d0: 51 4c 20 28 69 66 20 74 68 65 20 69 6e 70 75 74  QL (if the input
75e0: 20 69 73 20 61 6e 64 0a 2a 2a 20 65 6d 70 74 79   is and.** empty
75f0: 20 73 74 72 69 6e 67 20 6f 72 20 61 20 63 6f 6d   string or a com
7600: 6d 65 6e 74 29 20 74 68 65 6e 20 2a 70 70 53 74  ment) then *ppSt
7610: 6d 74 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c  mt is set to NUL
7620: 4c 2e 0a 2a 2a 0a 2a 2a 20 4f 6e 20 73 75 63 63  L..**.** On succ
7630: 65 73 73 2c 20 53 51 4c 49 54 45 5f 4f 4b 20 69  ess, SQLITE_OK i
7640: 73 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 74 68  s returned.  Oth
7650: 65 72 77 69 73 65 20 61 6e 20 65 72 72 6f 72 20  erwise an error 
7660: 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65 64  code is returned
7670: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
7680: 5f 70 72 65 70 61 72 65 28 0a 20 20 73 71 6c 69  _prepare(.  sqli
7690: 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
76a0: 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
76b0: 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
76c0: 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20  t char *zSql,   
76d0: 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65      /* SQL state
76e0: 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f  ment, UTF-8 enco
76f0: 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79  ded */.  int nBy
7700: 74 65 73 2c 20 20 20 20 20 20 20 20 20 20 20 20  tes,            
7710: 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66 20 7a 53   /* Length of zS
7720: 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
7730: 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a    sqlite3_stmt *
7740: 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54  *ppStmt,  /* OUT
7750: 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  : Statement hand
7760: 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
7770: 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20  ar **pzTail     
7780: 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20  /* OUT: Pointer 
7790: 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f  to unused portio
77a0: 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a  n of zSql */.);.
77b0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  int sqlite3_prep
77c0: 61 72 65 31 36 28 0a 20 20 73 71 6c 69 74 65 33  are16(.  sqlite3
77d0: 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
77e0: 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
77f0: 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
7800: 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  oid *zSql,      
7810: 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
7820: 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  t, UTF-16 encode
7830: 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65  d */.  int nByte
7840: 73 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  s,             /
7850: 2a 20 4c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  * Length of zSql
7860: 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
7870: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
7880: 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20  pStmt,  /* OUT: 
7890: 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65  Statement handle
78a0: 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64   */.  const void
78b0: 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a   **pzTail     /*
78c0: 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f   OUT: Pointer to
78d0: 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20   unused portion 
78e0: 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a 2f  of zSql */.);../
78f0: 2a 0a 2a 2a 20 4e 65 77 65 72 20 76 65 72 73 69  *.** Newer versi
7900: 6f 6e 73 20 6f 66 20 74 68 65 20 70 72 65 70 61  ons of the prepa
7910: 72 65 20 41 50 49 20 77 6f 72 6b 20 6a 75 73 74  re API work just
7920: 20 6c 69 6b 65 20 74 68 65 20 6c 65 67 61 63 79   like the legacy
7930: 20 76 65 72 73 69 6f 6e 73 0a 2a 2a 20 62 75 74   versions.** but
7940: 20 77 69 74 68 20 6f 6e 65 20 65 78 63 65 70 74   with one except
7950: 69 6f 6e 3a 20 20 54 68 65 20 61 20 63 6f 70 79  ion:  The a copy
7960: 20 6f 66 20 74 68 65 20 53 51 4c 20 74 65 78 74   of the SQL text
7970: 20 69 73 20 73 61 76 65 64 20 69 6e 20 74 68 65   is saved in the
7980: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  .** sqlite3_stmt
7990: 20 73 74 72 75 63 74 75 72 65 20 74 68 61 74 20   structure that 
79a0: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 49 66  is returned.  If
79b0: 20 74 68 69 73 20 63 6f 70 79 20 65 78 69 73 74   this copy exist
79c0: 73 2c 20 69 74 0a 2a 2a 20 6d 6f 64 69 66 69 65  s, it.** modifie
79d0: 64 73 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  ds the behavior 
79e0: 6f 66 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  of sqlite3_step(
79f0: 29 20 73 6c 69 67 68 74 6c 79 2e 20 20 46 69 72  ) slightly.  Fir
7a00: 73 74 2c 20 73 71 6c 69 74 65 33 5f 73 74 65 70  st, sqlite3_step
7a10: 28 29 0a 2a 2a 20 77 69 6c 6c 20 6e 6f 20 6c 6f  ().** will no lo
7a20: 6e 67 65 72 20 72 65 74 75 72 6e 20 61 6e 20 53  nger return an S
7a30: 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 65 72 72  QLITE_SCHEMA err
7a40: 6f 72 20 62 75 74 20 77 69 6c 6c 20 69 6e 73 74  or but will inst
7a50: 65 61 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ead automaticall
7a60: 79 0a 2a 2a 20 72 65 72 75 6e 20 74 68 65 20 63  y.** rerun the c
7a70: 6f 6d 70 69 6c 65 72 20 74 6f 20 72 65 62 75 69  ompiler to rebui
7a80: 6c 64 20 74 68 65 20 70 72 65 70 61 72 65 64 20  ld the prepared 
7a90: 73 74 61 74 65 6d 65 6e 74 2e 20 20 53 65 63 6f  statement.  Seco
7aa0: 6e 64 6c 79 2c 20 0a 2a 2a 20 73 71 6c 69 74 65  ndly, .** sqlite
7ab0: 33 5f 73 74 65 70 28 29 20 6e 6f 77 20 74 75 72  3_step() now tur
7ac0: 6e 73 20 61 20 66 75 6c 6c 20 72 65 73 75 6c 74  ns a full result
7ad0: 20 63 6f 64 65 20 2d 20 74 68 65 20 72 65 73 75   code - the resu
7ae0: 6c 74 20 63 6f 64 65 20 74 68 61 74 0a 2a 2a 20  lt code that.** 
7af0: 75 73 65 20 75 73 65 64 20 74 6f 20 68 61 76 65  use used to have
7b00: 20 74 6f 20 63 61 6c 6c 20 73 71 6c 69 74 65 33   to call sqlite3
7b10: 5f 72 65 73 65 74 28 29 20 74 6f 20 67 65 74 2e  _reset() to get.
7b20: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
7b30: 70 72 65 70 61 72 65 5f 76 32 28 0a 20 20 73 71  prepare_v2(.  sq
7b40: 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
7b50: 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73        /* Databas
7b60: 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  e handle */.  co
7b70: 6e 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20  nst char *zSql, 
7b80: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61        /* SQL sta
7b90: 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e  tement, UTF-8 en
7ba0: 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e  coded */.  int n
7bb0: 42 79 74 65 73 2c 20 20 20 20 20 20 20 20 20 20  Bytes,          
7bc0: 20 20 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66 20     /* Length of 
7bd0: 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a  zSql in bytes. *
7be0: 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  /.  sqlite3_stmt
7bf0: 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f   **ppStmt,  /* O
7c00: 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61  UT: Statement ha
7c10: 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
7c20: 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20  char **pzTail   
7c30: 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65    /* OUT: Pointe
7c40: 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74  r to unused port
7c50: 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29  ion of zSql */.)
7c60: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72  ;.int sqlite3_pr
7c70: 65 70 61 72 65 31 36 5f 76 32 28 0a 20 20 73 71  epare16_v2(.  sq
7c80: 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
7c90: 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73        /* Databas
7ca0: 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  e handle */.  co
7cb0: 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20  nst void *zSql, 
7cc0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61        /* SQL sta
7cd0: 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65  tement, UTF-16 e
7ce0: 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20  ncoded */.  int 
7cf0: 6e 42 79 74 65 73 2c 20 20 20 20 20 20 20 20 20  nBytes,         
7d00: 20 20 20 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66      /* Length of
7d10: 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20   zSql in bytes. 
7d20: 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
7d30: 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
7d40: 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
7d50: 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
7d60: 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20   void **pzTail  
7d70: 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
7d80: 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
7d90: 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
7da0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 50 6f 69 6e 74 65  );../*.** Pointe
7db0: 72 73 20 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77  rs to the follow
7dc0: 69 6e 67 20 74 77 6f 20 6f 70 61 71 75 65 20 73  ing two opaque s
7dd0: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 75 73  tructures are us
7de0: 65 64 20 74 6f 20 63 6f 6d 6d 75 6e 69 63 61 74  ed to communicat
7df0: 65 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 69 6d  e.** with the im
7e00: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66  plementations of
7e10: 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75   user-defined fu
7e20: 6e 63 74 69 6f 6e 73 2e 0a 2a 2f 0a 74 79 70 65  nctions..*/.type
7e30: 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
7e40: 65 33 5f 63 6f 6e 74 65 78 74 20 73 71 6c 69 74  e3_context sqlit
7e50: 65 33 5f 63 6f 6e 74 65 78 74 3b 0a 74 79 70 65  e3_context;.type
7e60: 64 65 66 20 73 74 72 75 63 74 20 4d 65 6d 20 73  def struct Mem s
7e70: 71 6c 69 74 65 33 5f 76 61 6c 75 65 3b 0a 0a 2f  qlite3_value;../
7e80: 2a 0a 2a 2a 20 49 6e 20 74 68 65 20 53 51 4c 20  *.** In the SQL 
7e90: 73 74 72 69 6e 67 73 20 69 6e 70 75 74 20 74 6f  strings input to
7ea0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
7eb0: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70  () and sqlite3_p
7ec0: 72 65 70 61 72 65 31 36 28 29 2c 0a 2a 2a 20 6f  repare16(),.** o
7ed0: 6e 65 20 6f 72 20 6d 6f 72 65 20 6c 69 74 65 72  ne or more liter
7ee0: 61 6c 73 20 63 61 6e 20 62 65 20 72 65 70 6c 61  als can be repla
7ef0: 63 65 20 62 79 20 70 61 72 61 6d 65 74 65 72 73  ce by parameters
7f00: 20 22 3f 22 20 6f 72 20 22 3a 41 41 41 22 20 6f   "?" or ":AAA" o
7f10: 72 0a 2a 2a 20 22 24 56 56 56 22 20 77 68 65 72  r.** "$VVV" wher
7f20: 65 20 41 41 41 20 69 73 20 61 6e 20 69 64 65 6e  e AAA is an iden
7f30: 74 69 66 65 72 20 61 6e 64 20 56 56 56 20 69 73  tifer and VVV is
7f40: 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65   a variable name
7f50: 20 61 63 63 6f 72 64 69 6e 67 0a 2a 2a 20 74 6f   according.** to
7f60: 20 74 68 65 20 73 79 6e 74 61 78 20 72 75 6c 65   the syntax rule
7f70: 73 20 6f 66 20 74 68 65 20 54 43 4c 20 70 72 6f  s of the TCL pro
7f80: 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67  gramming languag
7f90: 65 2e 0a 2a 2a 20 54 68 65 20 76 61 6c 75 65 20  e..** The value 
7fa0: 6f 66 20 74 68 65 73 65 20 70 61 72 61 6d 65 74  of these paramet
7fb0: 65 72 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64  ers (also called
7fc0: 20 22 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72   "host parameter
7fd0: 20 6e 61 6d 65 73 22 29 20 63 61 6e 0a 2a 2a 20   names") can.** 
7fe0: 62 65 20 73 65 74 20 75 73 69 6e 67 20 74 68 65  be set using the
7ff0: 20 72 6f 75 74 69 6e 65 73 20 6c 69 73 74 65 64   routines listed
8000: 20 62 65 6c 6f 77 2e 0a 2a 2a 0a 2a 2a 20 49 6e   below..**.** In
8010: 20 65 76 65 72 79 20 63 61 73 65 2c 20 74 68 65   every case, the
8020: 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
8030: 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
8040: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d   the sqlite3_stm
8050: 74 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 72  t.** structure r
8060: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 73 71 6c  eturned from sql
8070: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 2e 20  ite3_prepare(). 
8080: 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
8090: 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20  meter is the.** 
80a0: 69 6e 64 65 78 20 6f 66 20 74 68 65 20 70 61 72  index of the par
80b0: 61 6d 65 74 65 72 2e 20 20 54 68 65 20 66 69 72  ameter.  The fir
80c0: 73 74 20 70 61 72 61 6d 65 74 65 72 20 61 73 20  st parameter as 
80d0: 61 6e 20 69 6e 64 65 78 20 6f 66 20 31 2e 20 20  an index of 1.  
80e0: 46 6f 72 0a 2a 2a 20 6e 61 6d 65 64 20 70 61 72  For.** named par
80f0: 61 6d 65 74 65 72 73 20 28 22 3a 41 41 41 22 20  ameters (":AAA" 
8100: 6f 72 20 22 24 56 56 56 22 29 20 79 6f 75 20 63  or "$VVV") you c
8110: 61 6e 20 75 73 65 20 0a 2a 2a 20 73 71 6c 69 74  an use .** sqlit
8120: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
8130: 72 5f 69 6e 64 65 78 28 29 20 74 6f 20 67 65 74  r_index() to get
8140: 20 74 68 65 20 63 6f 72 72 65 63 74 20 69 6e 64   the correct ind
8150: 65 78 20 76 61 6c 75 65 20 67 69 76 65 6e 0a 2a  ex value given.*
8160: 2a 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73  * the parameters
8170: 20 6e 61 6d 65 2e 20 20 49 66 20 74 68 65 20 73   name.  If the s
8180: 61 6d 65 20 6e 61 6d 65 64 20 70 61 72 61 6d 65  ame named parame
8190: 74 65 72 20 6f 63 63 75 72 73 20 6d 6f 72 65 20  ter occurs more 
81a0: 74 68 61 6e 0a 2a 2a 20 6f 6e 63 65 2c 20 69 74  than.** once, it
81b0: 20 69 73 20 61 73 73 69 67 6e 65 64 20 74 68 65   is assigned the
81c0: 20 73 61 6d 65 20 69 6e 64 65 78 20 65 61 63 68   same index each
81d0: 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   time..**.** The
81e0: 20 66 69 66 74 68 20 70 61 72 61 6d 65 74 65 72   fifth parameter
81f0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
8200: 5f 62 6c 6f 62 28 29 2c 20 73 71 6c 69 74 65 33  _blob(), sqlite3
8210: 5f 62 69 6e 64 5f 74 65 78 74 28 29 2c 20 61 6e  _bind_text(), an
8220: 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 62 69 6e  d.** sqlite3_bin
8230: 64 5f 74 65 78 74 31 36 28 29 20 69 73 20 61 20  d_text16() is a 
8240: 64 65 73 74 72 75 63 74 6f 72 20 75 73 65 64 20  destructor used 
8250: 74 6f 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68  to dispose of th
8260: 65 20 42 4c 4f 42 20 6f 72 0a 2a 2a 20 74 65 78  e BLOB or.** tex
8270: 74 20 61 66 74 65 72 20 53 51 4c 69 74 65 20 68  t after SQLite h
8280: 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68  as finished with
8290: 20 69 74 2e 20 20 49 66 20 74 68 65 20 66 69 66   it.  If the fif
82a0: 74 68 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  th argument is t
82b0: 68 65 0a 2a 2a 20 73 70 65 63 69 61 6c 20 76 61  he.** special va
82c0: 6c 75 65 20 53 51 4c 49 54 45 5f 53 54 41 54 49  lue SQLITE_STATI
82d0: 43 2c 20 74 68 65 6e 20 74 68 65 20 6c 69 62 72  C, then the libr
82e0: 61 72 79 20 61 73 73 75 6d 65 73 20 74 68 61 74  ary assumes that
82f0: 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   the information
8300: 0a 2a 2a 20 69 73 20 69 6e 20 73 74 61 74 69 63  .** is in static
8310: 2c 20 75 6e 6d 61 6e 61 67 65 64 20 73 70 61 63  , unmanaged spac
8320: 65 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6e  e and does not n
8330: 65 65 64 20 74 6f 20 62 65 20 66 72 65 65 64 2e  eed to be freed.
8340: 20 20 49 66 20 74 68 65 0a 2a 2a 20 66 69 66 74    If the.** fift
8350: 68 20 61 72 67 75 6d 65 6e 74 20 68 61 73 20 74  h argument has t
8360: 68 65 20 76 61 6c 75 65 20 53 51 4c 49 54 45 5f  he value SQLITE_
8370: 54 52 41 4e 53 49 45 4e 54 2c 20 74 68 65 6e 20  TRANSIENT, then 
8380: 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 69 74 73  SQLite makes its
8390: 0a 2a 2a 20 6f 77 6e 20 70 72 69 76 61 74 65 20  .** own private 
83a0: 63 6f 70 79 20 6f 66 20 74 68 65 20 64 61 74 61  copy of the data
83b0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
83c0: 74 65 33 5f 62 69 6e 64 5f 2a 20 72 6f 75 74 69  te3_bind_* routi
83d0: 6e 65 20 6d 75 73 74 20 62 65 20 63 61 6c 6c 65  ne must be calle
83e0: 64 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33  d before sqlite3
83f0: 5f 73 74 65 70 28 29 20 61 66 74 65 72 0a 2a 2a  _step() after.**
8400: 20 61 6e 20 73 71 6c 69 74 65 33 5f 70 72 65 70   an sqlite3_prep
8410: 61 72 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33  are() or sqlite3
8420: 5f 72 65 73 65 74 28 29 2e 20 20 55 6e 62 6f 75  _reset().  Unbou
8430: 6e 64 20 70 61 72 61 6d 65 74 65 72 73 73 20 61  nd parameterss a
8440: 72 65 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 65  re.** interprete
8450: 64 20 61 73 20 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e  d as NULL..*/.in
8460: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62  t sqlite3_bind_b
8470: 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  lob(sqlite3_stmt
8480: 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f  *, int, const vo
8490: 69 64 2a 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64  id*, int n, void
84a0: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 69 6e 74  (*)(void*));.int
84b0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
84c0: 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  uble(sqlite3_stm
84d0: 74 2a 2c 20 69 6e 74 2c 20 64 6f 75 62 6c 65 29  t*, int, double)
84e0: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  ;.int sqlite3_bi
84f0: 6e 64 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 73  nd_int(sqlite3_s
8500: 74 6d 74 2a 2c 20 69 6e 74 2c 20 69 6e 74 29 3b  tmt*, int, int);
8510: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e  .int sqlite3_bin
8520: 64 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33 5f  d_int64(sqlite3_
8530: 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 73 71 6c 69  stmt*, int, sqli
8540: 74 65 5f 69 6e 74 36 34 29 3b 0a 69 6e 74 20 73  te_int64);.int s
8550: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
8560: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
8570: 69 6e 74 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  int);.int sqlite
8580: 33 5f 62 69 6e 64 5f 74 65 78 74 28 73 71 6c 69  3_bind_text(sqli
8590: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20  te3_stmt*, int, 
85a0: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74  const char*, int
85b0: 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64   n, void(*)(void
85c0: 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  *));.int sqlite3
85d0: 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 73 71 6c  _bind_text16(sql
85e0: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
85f0: 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e   const void*, in
8600: 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  t, void(*)(void*
8610: 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  ));.int sqlite3_
8620: 62 69 6e 64 5f 76 61 6c 75 65 28 73 71 6c 69 74  bind_value(sqlit
8630: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63  e3_stmt*, int, c
8640: 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  onst sqlite3_val
8650: 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  ue*);../*.** Ret
8660: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
8670: 66 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20  f parameters in 
8680: 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73  a compiled SQL s
8690: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 69 73 0a  tatement.  This.
86a0: 2a 2a 20 72 6f 75 74 69 6e 65 20 77 61 73 20 61  ** routine was a
86b0: 64 64 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20  dded to support 
86c0: 44 42 44 3a 3a 53 51 4c 69 74 65 2e 0a 2a 2f 0a  DBD::SQLite..*/.
86d0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
86e0: 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74  _parameter_count
86f0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b  (sqlite3_stmt*);
8700: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
8710: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69  he name of the i
8720: 2d 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20 20  -th parameter.  
8730: 4f 72 64 69 6e 61 72 79 20 70 61 72 61 6d 65 74  Ordinary paramet
8740: 65 72 73 20 22 3f 22 20 61 72 65 0a 2a 2a 20 6e  ers "?" are.** n
8750: 61 6d 65 6c 65 73 73 20 61 6e 64 20 61 20 4e 55  ameless and a NU
8760: 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20  LL is returned. 
8770: 20 46 6f 72 20 70 61 72 61 6d 65 74 65 72 73 20   For parameters 
8780: 6f 66 20 74 68 65 20 66 6f 72 6d 20 3a 41 41 41  of the form :AAA
8790: 20 6f 72 0a 2a 2a 20 24 56 56 56 20 74 68 65 20   or.** $VVV the 
87a0: 63 6f 6d 70 6c 65 74 65 20 74 65 78 74 20 6f 66  complete text of
87b0: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6e   the parameter n
87c0: 61 6d 65 20 69 73 20 72 65 74 75 72 6e 65 64 2c  ame is returned,
87d0: 20 69 6e 63 6c 75 64 69 6e 67 0a 2a 2a 20 74 68   including.** th
87e0: 65 20 69 6e 69 74 69 61 6c 20 22 3a 22 20 6f 72  e initial ":" or
87f0: 20 22 24 22 2e 20 20 4e 55 4c 4c 20 69 73 20 72   "$".  NULL is r
8800: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 69  eturned if the i
8810: 6e 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72  ndex is out of r
8820: 61 6e 67 65 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63  ange..*/.const c
8830: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 62 69 6e  har *sqlite3_bin
8840: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
8850: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
8860: 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  int);../*.** Ret
8870: 75 72 6e 20 74 68 65 20 69 6e 64 65 78 20 6f 66  urn the index of
8880: 20 61 20 70 61 72 61 6d 65 74 65 72 20 77 69 74   a parameter wit
8890: 68 20 74 68 65 20 67 69 76 65 6e 20 6e 61 6d 65  h the given name
88a0: 2e 20 20 54 68 65 20 6e 61 6d 65 0a 2a 2a 20 6d  .  The name.** m
88b0: 75 73 74 20 6d 61 74 63 68 20 65 78 61 63 74 6c  ust match exactl
88c0: 79 2e 20 20 49 66 20 6e 6f 20 70 61 72 61 6d 65  y.  If no parame
88d0: 74 65 72 20 77 69 74 68 20 74 68 65 20 67 69 76  ter with the giv
88e0: 65 6e 20 6e 61 6d 65 20 69 73 20 66 6f 75 6e 64  en name is found
88f0: 2c 0a 2a 2a 20 72 65 74 75 72 6e 20 30 2e 0a 2a  ,.** return 0..*
8900: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  /.int sqlite3_bi
8910: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
8920: 65 78 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  ex(sqlite3_stmt*
8930: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
8940: 61 6d 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 65 74  ame);../*.** Set
8950: 20 61 6c 6c 20 74 68 65 20 70 61 72 61 6d 65 74   all the paramet
8960: 65 72 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 69  ers in the compi
8970: 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  led SQL statemen
8980: 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e  t to NULL..*/.in
8990: 74 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  t sqlite3_clear_
89a0: 62 69 6e 64 69 6e 67 73 28 73 71 6c 69 74 65 33  bindings(sqlite3
89b0: 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  _stmt*);../*.** 
89c0: 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65  Return the numbe
89d0: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
89e0: 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 72  the result set r
89f0: 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 63  eturned by the c
8a00: 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51 4c 20 73  ompiled.** SQL s
8a10: 74 61 74 65 6d 65 6e 74 2e 20 54 68 69 73 20 72  tatement. This r
8a20: 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 30  outine returns 0
8a30: 20 69 66 20 70 53 74 6d 74 20 69 73 20 61 6e 20   if pStmt is an 
8a40: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  SQL statement.**
8a50: 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 72   that does not r
8a60: 65 74 75 72 6e 20 64 61 74 61 20 28 66 6f 72 20  eturn data (for 
8a70: 65 78 61 6d 70 6c 65 20 61 6e 20 55 50 44 41 54  example an UPDAT
8a80: 45 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  E)..*/.int sqlit
8a90: 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
8aa0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
8ab0: 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  tmt);../*.** The
8ac0: 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
8ad0: 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53   is a compiled S
8ae0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68  QL statement. Th
8af0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  is function retu
8b00: 72 6e 73 0a 2a 2a 20 74 68 65 20 63 6f 6c 75 6d  rns.** the colum
8b10: 6e 20 68 65 61 64 69 6e 67 20 66 6f 72 20 74 68  n heading for th
8b20: 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20  e Nth column of 
8b30: 74 68 61 74 20 73 74 61 74 65 6d 65 6e 74 2c 20  that statement, 
8b40: 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 0a 2a  where N is the.*
8b50: 2a 20 73 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f  * second functio
8b60: 6e 20 70 61 72 61 6d 65 74 65 72 2e 20 20 54 68  n parameter.  Th
8b70: 65 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65  e string returne
8b80: 64 20 69 73 20 55 54 46 2d 38 20 66 6f 72 0a 2a  d is UTF-8 for.*
8b90: 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  * sqlite3_column
8ba0: 5f 6e 61 6d 65 28 29 20 61 6e 64 20 55 54 46 2d  _name() and UTF-
8bb0: 31 36 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 63  16 for sqlite3_c
8bc0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 29 2e 0a  olumn_name16()..
8bd0: 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  */.const char *s
8be0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
8bf0: 6d 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  me(sqlite3_stmt*
8c00: 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f 69  ,int);.const voi
8c10: 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
8c20: 6e 5f 6e 61 6d 65 31 36 28 73 71 6c 69 74 65 33  n_name16(sqlite3
8c30: 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a  _stmt*,int);../*
8c40: 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 61  .** The first pa
8c50: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 66  rameter to the f
8c60: 6f 6c 6c 6f 77 69 6e 67 20 63 61 6c 6c 73 20 69  ollowing calls i
8c70: 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  s a compiled SQL
8c80: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a 20 54   statement..** T
8c90: 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72  hese functions r
8ca0: 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  eturn informatio
8cb0: 6e 20 61 62 6f 75 74 20 74 68 65 20 4e 74 68 20  n about the Nth 
8cc0: 63 6f 6c 75 6d 6e 20 72 65 74 75 72 6e 65 64 20  column returned 
8cd0: 62 79 20 0a 2a 2a 20 74 68 65 20 73 74 61 74 65  by .** the state
8ce0: 6d 65 6e 74 2c 20 77 68 65 72 65 20 4e 20 69 73  ment, where N is
8cf0: 20 74 68 65 20 73 65 63 6f 6e 64 20 66 75 6e 63   the second func
8d00: 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 2e 0a 2a  tion argument..*
8d10: 2a 0a 2a 2a 20 49 66 20 74 68 65 20 4e 74 68 20  *.** If the Nth 
8d20: 63 6f 6c 75 6d 6e 20 72 65 74 75 72 6e 65 64 20  column returned 
8d30: 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  by the statement
8d40: 20 69 73 20 6e 6f 74 20 61 20 63 6f 6c 75 6d 6e   is not a column
8d50: 20 76 61 6c 75 65 2c 0a 2a 2a 20 74 68 65 6e 20   value,.** then 
8d60: 61 6c 6c 20 6f 66 20 74 68 65 20 66 75 6e 63 74  all of the funct
8d70: 69 6f 6e 73 20 72 65 74 75 72 6e 20 4e 55 4c 4c  ions return NULL
8d80: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65  . Otherwise, the
8d90: 20 72 65 74 75 72 6e 20 74 68 65 20 0a 2a 2a 20   return the .** 
8da0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 74 74 61  name of the atta
8db0: 63 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 74  ched database, t
8dc0: 61 62 6c 65 20 61 6e 64 20 63 6f 6c 75 6d 6e 20  able and column 
8dd0: 74 68 61 74 20 74 68 65 20 65 78 70 72 65 73 73  that the express
8de0: 69 6f 6e 0a 2a 2a 20 65 78 74 72 61 63 74 73 20  ion.** extracts 
8df0: 61 20 76 61 6c 75 65 20 66 72 6f 6d 2e 0a 2a 2a  a value from..**
8e00: 0a 2a 2a 20 41 73 20 77 69 74 68 20 61 6c 6c 20  .** As with all 
8e10: 6f 74 68 65 72 20 53 51 4c 69 74 65 20 41 50 49  other SQLite API
8e20: 73 2c 20 74 68 6f 73 65 20 70 6f 73 74 66 69 78  s, those postfix
8e30: 65 64 20 77 69 74 68 20 22 31 36 22 20 72 65 74  ed with "16" ret
8e40: 75 72 6e 20 55 54 46 2d 31 36 0a 2a 2a 20 65 6e  urn UTF-16.** en
8e50: 63 6f 64 65 64 20 73 74 72 69 6e 67 73 2c 20 74  coded strings, t
8e60: 68 65 20 6f 74 68 65 72 20 66 75 6e 63 74 69 6f  he other functio
8e70: 6e 73 20 72 65 74 75 72 6e 20 55 54 46 2d 38 2e  ns return UTF-8.
8e80: 20 54 68 65 20 6d 65 6d 6f 72 79 20 63 6f 6e 74   The memory cont
8e90: 61 69 6e 69 6e 67 0a 2a 2a 20 74 68 65 20 72 65  aining.** the re
8ea0: 74 75 72 6e 65 64 20 73 74 72 69 6e 67 73 20 69  turned strings i
8eb0: 73 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 74 68  s valid until th
8ec0: 65 20 73 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  e statement hand
8ed0: 6c 65 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 28  le is finalized(
8ee0: 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 41  )..**.** These A
8ef0: 50 49 73 20 61 72 65 20 6f 6e 6c 79 20 61 76 61  PIs are only ava
8f00: 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20 6c 69  ilable if the li
8f10: 62 72 61 72 79 20 77 61 73 20 63 6f 6d 70 69 6c  brary was compil
8f20: 65 64 20 77 69 74 68 20 74 68 65 20 0a 2a 2a 20  ed with the .** 
8f30: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
8f40: 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 20 70 72  LUMN_METADATA pr
8f50: 65 70 72 6f 63 65 73 73 6f 72 20 73 79 6d 62 6f  eprocessor symbo
8f60: 6c 20 64 65 66 69 6e 65 64 2e 0a 2a 2f 0a 63 6f  l defined..*/.co
8f70: 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
8f80: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
8f90: 65 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73  e_name(sqlite3_s
8fa0: 74 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74  tmt*,int);.const
8fb0: 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63   void *sqlite3_c
8fc0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
8fd0: 61 6d 65 31 36 28 73 71 6c 69 74 65 33 5f 73 74  ame16(sqlite3_st
8fe0: 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20  mt*,int);.const 
8ff0: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f  char *sqlite3_co
9000: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
9010: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e  sqlite3_stmt*,in
9020: 74 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a  t);.const void *
9030: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
9040: 61 62 6c 65 5f 6e 61 6d 65 31 36 28 73 71 6c 69  able_name16(sqli
9050: 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a  te3_stmt*,int);.
9060: 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69  const char *sqli
9070: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
9080: 6e 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73  n_name(sqlite3_s
9090: 74 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74  tmt*,int);.const
90a0: 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63   void *sqlite3_c
90b0: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
90c0: 65 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  e16(sqlite3_stmt
90d0: 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  *,int);../*.** T
90e0: 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
90f0: 65 72 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 64  er is a compiled
9100: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20   SQL statement. 
9110: 49 66 20 74 68 69 73 20 73 74 61 74 65 6d 65 6e  If this statemen
9120: 74 0a 2a 2a 20 69 73 20 61 20 53 45 4c 45 43 54  t.** is a SELECT
9130: 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 65 20   statement, the 
9140: 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68  Nth column of th
9150: 65 20 72 65 74 75 72 6e 65 64 20 72 65 73 75 6c  e returned resul
9160: 74 20 73 65 74 20 0a 2a 2a 20 6f 66 20 74 68 65  t set .** of the
9170: 20 53 45 4c 45 43 54 20 69 73 20 61 20 74 61 62   SELECT is a tab
9180: 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 65 6e 20 74  le column then t
9190: 68 65 20 64 65 63 6c 61 72 65 64 20 74 79 70 65  he declared type
91a0: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 0a 2a 2a   of the table.**
91b0: 20 63 6f 6c 75 6d 6e 20 69 73 20 72 65 74 75 72   column is retur
91c0: 6e 65 64 2e 20 49 66 20 74 68 65 20 4e 74 68 20  ned. If the Nth 
91d0: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65  column of the re
91e0: 73 75 6c 74 20 73 65 74 20 69 73 20 6e 6f 74 20  sult set is not 
91f0: 61 74 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75  at table.** colu
9200: 6d 6e 2c 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20  mn, then a NULL 
9210: 70 6f 69 6e 74 65 72 20 69 73 20 72 65 74 75 72  pointer is retur
9220: 6e 65 64 2e 20 54 68 65 20 72 65 74 75 72 6e 65  ned. The returne
9230: 64 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77 61  d string is alwa
9240: 79 73 0a 2a 2a 20 55 54 46 2d 38 20 65 6e 63 6f  ys.** UTF-8 enco
9250: 64 65 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65  ded. For example
9260: 2c 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  , in the databas
9270: 65 20 73 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20  e schema:.**.** 
9280: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28  CREATE TABLE t1(
9290: 63 31 20 56 41 52 49 41 4e 54 29 3b 0a 2a 2a 0a  c1 VARIANT);.**.
92a0: 2a 2a 20 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f  ** And the follo
92b0: 77 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63  wing statement c
92c0: 6f 6d 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53  ompiled:.**.** S
92d0: 45 4c 45 43 54 20 63 31 20 2b 20 31 2c 20 63 31  ELECT c1 + 1, c1
92e0: 20 46 52 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20   FROM t1;.**.** 
92f0: 54 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e  Then this routin
9300: 65 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 20 74  e would return t
9310: 68 65 20 73 74 72 69 6e 67 20 22 56 41 52 49 41  he string "VARIA
9320: 4e 54 22 20 66 6f 72 20 74 68 65 20 73 65 63 6f  NT" for the seco
9330: 6e 64 0a 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c  nd.** result col
9340: 75 6d 6e 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20  umn (i==1), and 
9350: 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66  a NULL pointer f
9360: 6f 72 20 74 68 65 20 66 69 72 73 74 20 72 65 73  or the first res
9370: 75 6c 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69  ult column.** (i
9380: 3d 3d 30 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63  ==0)..*/.const c
9390: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  har *sqlite3_col
93a0: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 73 71 6c  umn_decltype(sql
93b0: 69 74 65 33 5f 73 74 6d 74 20 2a 2c 20 69 6e 74  ite3_stmt *, int
93c0: 20 69 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20   i);../*.** The 
93d0: 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20  first parameter 
93e0: 69 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51  is a compiled SQ
93f0: 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 49 66 20  L statement. If 
9400: 74 68 69 73 20 73 74 61 74 65 6d 65 6e 74 0a 2a  this statement.*
9410: 2a 20 69 73 20 61 20 53 45 4c 45 43 54 20 73 74  * is a SELECT st
9420: 61 74 65 6d 65 6e 74 2c 20 74 68 65 20 4e 74 68  atement, the Nth
9430: 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72   column of the r
9440: 65 74 75 72 6e 65 64 20 72 65 73 75 6c 74 20 73  eturned result s
9450: 65 74 20 0a 2a 2a 20 6f 66 20 74 68 65 20 53 45  et .** of the SE
9460: 4c 45 43 54 20 69 73 20 61 20 74 61 62 6c 65 20  LECT is a table 
9470: 63 6f 6c 75 6d 6e 20 74 68 65 6e 20 74 68 65 20  column then the 
9480: 64 65 63 6c 61 72 65 64 20 74 79 70 65 20 6f 66  declared type of
9490: 20 74 68 65 20 74 61 62 6c 65 0a 2a 2a 20 63 6f   the table.** co
94a0: 6c 75 6d 6e 20 69 73 20 72 65 74 75 72 6e 65 64  lumn is returned
94b0: 2e 20 49 66 20 74 68 65 20 4e 74 68 20 63 6f 6c  . If the Nth col
94c0: 75 6d 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c  umn of the resul
94d0: 74 20 73 65 74 20 69 73 20 6e 6f 74 20 61 74 20  t set is not at 
94e0: 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c  table.** column,
94f0: 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69   then a NULL poi
9500: 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64  nter is returned
9510: 2e 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73  . The returned s
9520: 74 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 0a  tring is always.
9530: 2a 2a 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  ** UTF-16 encode
9540: 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  d. For example, 
9550: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
9560: 73 63 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43 52  schema:.**.** CR
9570: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 63 31  EATE TABLE t1(c1
9580: 20 49 4e 54 45 47 45 52 29 3b 0a 2a 2a 0a 2a 2a   INTEGER);.**.**
9590: 20 41 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69   And the followi
95a0: 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  ng statement com
95b0: 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c  piled:.**.** SEL
95c0: 45 43 54 20 63 31 20 2b 20 31 2c 20 63 31 20 46  ECT c1 + 1, c1 F
95d0: 52 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54 68  ROM t1;.**.** Th
95e0: 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  en this routine 
95f0: 77 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65  would return the
9600: 20 73 74 72 69 6e 67 20 22 49 4e 54 45 47 45 52   string "INTEGER
9610: 22 20 66 6f 72 20 74 68 65 20 73 65 63 6f 6e 64  " for the second
9620: 0a 2a 2a 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d  .** result colum
9630: 6e 20 28 69 3d 3d 31 29 2c 20 61 6e 64 20 61 20  n (i==1), and a 
9640: 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72  NULL pointer for
9650: 20 74 68 65 20 66 69 72 73 74 20 72 65 73 75 6c   the first resul
9660: 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d 3d  t column.** (i==
9670: 30 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69  0)..*/.const voi
9680: 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
9690: 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 73 71 6c  n_decltype16(sql
96a0: 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b  ite3_stmt*,int);
96b0: 0a 0a 2f 2a 20 0a 2a 2a 20 41 66 74 65 72 20 61  ../* .** After a
96c0: 6e 20 53 51 4c 20 71 75 65 72 79 20 68 61 73 20  n SQL query has 
96d0: 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 77 69  been compiled wi
96e0: 74 68 20 61 20 63 61 6c 6c 20 74 6f 20 65 69 74  th a call to eit
96f0: 68 65 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70  her.** sqlite3_p
9700: 72 65 70 61 72 65 28 29 20 6f 72 20 73 71 6c 69  repare() or sqli
9710: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c  te3_prepare16(),
9720: 20 74 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74   then this funct
9730: 69 6f 6e 20 6d 75 73 74 20 62 65 0a 2a 2a 20 63  ion must be.** c
9740: 61 6c 6c 65 64 20 6f 6e 65 20 6f 72 20 6d 6f 72  alled one or mor
9750: 65 20 74 69 6d 65 73 20 74 6f 20 65 78 65 63 75  e times to execu
9760: 74 65 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  te the statement
9770: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75  ..**.** The retu
9780: 72 6e 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  rn value will be
9790: 20 65 69 74 68 65 72 20 53 51 4c 49 54 45 5f 42   either SQLITE_B
97a0: 55 53 59 2c 20 53 51 4c 49 54 45 5f 44 4f 4e 45  USY, SQLITE_DONE
97b0: 2c 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 52 4f 57  , .** SQLITE_ROW
97c0: 2c 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 2c 20  , SQLITE_ERROR, 
97d0: 6f 72 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  or SQLITE_MISUSE
97e0: 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 42  ..**.** SQLITE_B
97f0: 55 53 59 20 6d 65 61 6e 73 20 74 68 61 74 20 74  USY means that t
9800: 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
9810: 6e 65 20 61 74 74 65 6d 70 74 65 64 20 74 6f 20  ne attempted to 
9820: 6f 70 65 6e 0a 2a 2a 20 61 20 6c 6f 63 6b 65 64  open.** a locked
9830: 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 74 68   database and th
9840: 65 72 65 20 69 73 20 6e 6f 20 62 75 73 79 20 63  ere is no busy c
9850: 61 6c 6c 62 61 63 6b 20 72 65 67 69 73 74 65 72  allback register
9860: 65 64 2e 0a 2a 2a 20 43 61 6c 6c 20 73 71 6c 69  ed..** Call sqli
9870: 74 65 33 5f 73 74 65 70 28 29 20 61 67 61 69 6e  te3_step() again
9880: 20 74 6f 20 72 65 74 72 79 20 74 68 65 20 6f 70   to retry the op
9890: 65 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45  en..**.** SQLITE
98a0: 5f 44 4f 4e 45 20 6d 65 61 6e 73 20 74 68 61 74  _DONE means that
98b0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68   the statement h
98c0: 61 73 20 66 69 6e 69 73 68 65 64 20 65 78 65 63  as finished exec
98d0: 75 74 69 6e 67 0a 2a 2a 20 73 75 63 63 65 73 73  uting.** success
98e0: 66 75 6c 6c 79 2e 20 20 73 71 6c 69 74 65 33 5f  fully.  sqlite3_
98f0: 73 74 65 70 28 29 20 73 68 6f 75 6c 64 20 6e 6f  step() should no
9900: 74 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69  t be called agai
9910: 6e 20 6f 6e 20 74 68 69 73 20 76 69 72 74 75 61  n on this virtua
9920: 6c 0a 2a 2a 20 6d 61 63 68 69 6e 65 2e 0a 2a 2a  l.** machine..**
9930: 0a 2a 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73  .** If the SQL s
9940: 74 61 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 65  tatement being e
9950: 78 65 63 75 74 65 64 20 72 65 74 75 72 6e 73 20  xecuted returns 
9960: 61 6e 79 20 64 61 74 61 2c 20 74 68 65 6e 20 0a  any data, then .
9970: 2a 2a 20 53 51 4c 49 54 45 5f 52 4f 57 20 69 73  ** SQLITE_ROW is
9980: 20 72 65 74 75 72 6e 65 64 20 65 61 63 68 20 74   returned each t
9990: 69 6d 65 20 61 20 6e 65 77 20 72 6f 77 20 6f 66  ime a new row of
99a0: 20 64 61 74 61 20 69 73 20 72 65 61 64 79 0a 2a   data is ready.*
99b0: 2a 20 66 6f 72 20 70 72 6f 63 65 73 73 69 6e 67  * for processing
99c0: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 20   by the caller. 
99d0: 54 68 65 20 76 61 6c 75 65 73 20 6d 61 79 20 62  The values may b
99e0: 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67  e accessed using
99f0: 0a 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f  .** the sqlite3_
9a00: 63 6f 6c 75 6d 6e 5f 2a 28 29 20 66 75 6e 63 74  column_*() funct
9a10: 69 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20 62  ions described b
9a20: 65 6c 6f 77 2e 20 73 71 6c 69 74 65 33 5f 73 74  elow. sqlite3_st
9a30: 65 70 28 29 0a 2a 2a 20 69 73 20 63 61 6c 6c 65  ep().** is calle
9a40: 64 20 61 67 61 69 6e 20 74 6f 20 72 65 74 72 69  d again to retri
9a50: 65 76 65 20 74 68 65 20 6e 65 78 74 20 72 6f 77  eve the next row
9a60: 20 6f 66 20 64 61 74 61 2e 0a 2a 2a 20 0a 2a 2a   of data..** .**
9a70: 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 6d 65   SQLITE_ERROR me
9a80: 61 6e 73 20 74 68 61 74 20 61 20 72 75 6e 2d 74  ans that a run-t
9a90: 69 6d 65 20 65 72 72 6f 72 20 28 73 75 63 68 20  ime error (such 
9aa0: 61 73 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 0a  as a constraint.
9ab0: 2a 2a 20 76 69 6f 6c 61 74 69 6f 6e 29 20 68 61  ** violation) ha
9ac0: 73 20 6f 63 63 75 72 72 65 64 2e 20 20 73 71 6c  s occurred.  sql
9ad0: 69 74 65 33 5f 73 74 65 70 28 29 20 73 68 6f 75  ite3_step() shou
9ae0: 6c 64 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65 64  ld not be called
9af0: 20 61 67 61 69 6e 20 6f 6e 0a 2a 2a 20 74 68 65   again on.** the
9b00: 20 56 4d 2e 20 4d 6f 72 65 20 69 6e 66 6f 72 6d   VM. More inform
9b10: 61 74 69 6f 6e 20 6d 61 79 20 62 65 20 66 6f 75  ation may be fou
9b20: 6e 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71  nd by calling sq
9b30: 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29 2e 0a  lite3_errmsg()..
9b40: 2a 2a 0a 2a 2a 20 53 51 4c 49 54 45 5f 4d 49 53  **.** SQLITE_MIS
9b50: 55 53 45 20 6d 65 61 6e 73 20 74 68 61 74 20 74  USE means that t
9b60: 68 65 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  he this routine 
9b70: 77 61 73 20 63 61 6c 6c 65 64 20 69 6e 61 70 70  was called inapp
9b80: 72 6f 70 72 69 61 74 65 6c 79 2e 0a 2a 2a 20 50  ropriately..** P
9b90: 65 72 68 61 70 73 20 69 74 20 77 61 73 20 63 61  erhaps it was ca
9ba0: 6c 6c 65 64 20 6f 6e 20 61 20 76 69 72 74 75 61  lled on a virtua
9bb0: 6c 20 6d 61 63 68 69 6e 65 20 74 68 61 74 20 68  l machine that h
9bc0: 61 64 20 61 6c 72 65 61 64 79 20 62 65 65 6e 0a  ad already been.
9bd0: 2a 2a 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 20  ** finalized or 
9be0: 6f 6e 20 6f 6e 65 20 74 68 61 74 20 68 61 64 20  on one that had 
9bf0: 70 72 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72  previously retur
9c00: 6e 65 64 20 53 51 4c 49 54 45 5f 45 52 52 4f 52  ned SQLITE_ERROR
9c10: 20 6f 72 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 4f   or.** SQLITE_DO
9c20: 4e 45 2e 20 20 4f 72 20 69 74 20 63 6f 75 6c 64  NE.  Or it could
9c30: 20 62 65 20 74 68 65 20 63 61 73 65 20 74 68 65   be the case the
9c40: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
9c50: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a  se connection.**
9c60: 20 69 73 20 62 65 69 6e 67 20 75 73 65 64 20 73   is being used s
9c70: 69 6d 75 6c 61 74 61 6e 65 6f 75 73 6c 79 20 62  imulataneously b
9c80: 79 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74 68  y two or more th
9c90: 72 65 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71  reads..*/.int sq
9ca0: 6c 69 74 65 33 5f 73 74 65 70 28 73 71 6c 69 74  lite3_step(sqlit
9cb0: 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a  e3_stmt*);../*.*
9cc0: 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d  * Return the num
9cd0: 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20 69 6e  ber of values in
9ce0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
9cf0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
9d00: 65 74 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20  et..**.** After 
9d10: 61 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  a call to sqlite
9d20: 33 5f 73 74 65 70 28 29 20 74 68 61 74 20 72 65  3_step() that re
9d30: 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 52 4f 57  turns SQLITE_ROW
9d40: 2c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 0a 2a  , this routine.*
9d50: 2a 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68  * will return th
9d60: 65 20 73 61 6d 65 20 76 61 6c 75 65 20 61 73 20  e same value as 
9d70: 74 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  the sqlite3_colu
9d80: 6d 6e 5f 63 6f 75 6e 74 28 29 20 66 75 6e 63 74  mn_count() funct
9d90: 69 6f 6e 2e 0a 2a 2a 20 41 66 74 65 72 20 73 71  ion..** After sq
9da0: 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68 61 73  lite3_step() has
9db0: 20 72 65 74 75 72 6e 65 64 20 61 6e 20 53 51 4c   returned an SQL
9dc0: 49 54 45 5f 44 4f 4e 45 2c 20 53 51 4c 49 54 45  ITE_DONE, SQLITE
9dd0: 5f 42 55 53 59 20 6f 72 0a 2a 2a 20 65 72 72 6f  _BUSY or.** erro
9de0: 72 20 63 6f 64 65 2c 20 6f 72 20 62 65 66 6f 72  r code, or befor
9df0: 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  e sqlite3_step()
9e00: 20 68 61 73 20 62 65 65 6e 20 63 61 6c 6c 65 64   has been called
9e10: 20 6f 6e 20 61 20 0a 2a 2a 20 63 6f 6d 70 69 6c   on a .** compil
9e20: 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ed SQL statement
9e30: 2c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72  , this routine r
9e40: 65 74 75 72 6e 73 20 7a 65 72 6f 2e 0a 2a 2f 0a  eturns zero..*/.
9e50: 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 61 74 61  int sqlite3_data
9e60: 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 73  _count(sqlite3_s
9e70: 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a  tmt *pStmt);../*
9e80: 0a 2a 2a 20 56 61 6c 75 65 73 20 61 72 65 20 73  .** Values are s
9e90: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 64 61 74  tored in the dat
9ea0: 61 62 61 73 65 20 69 6e 20 6f 6e 65 20 6f 66 20  abase in one of 
9eb0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75  the following fu
9ec0: 6e 64 61 6d 65 6e 74 61 6c 0a 2a 2a 20 74 79 70  ndamental.** typ
9ed0: 65 73 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  es..*/.#define S
9ee0: 51 4c 49 54 45 5f 49 4e 54 45 47 45 52 20 20 31  QLITE_INTEGER  1
9ef0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
9f00: 46 4c 4f 41 54 20 20 20 20 32 0a 2f 2a 20 23 64  FLOAT    2./* #d
9f10: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 45 58  efine SQLITE_TEX
9f20: 54 20 20 33 20 20 2f 2f 20 53 65 65 20 62 65 6c  T  3  // See bel
9f30: 6f 77 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ow */.#define SQ
9f40: 4c 49 54 45 5f 42 4c 4f 42 20 20 20 20 20 34 0a  LITE_BLOB     4.
9f50: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e  #define SQLITE_N
9f60: 55 4c 4c 20 20 20 20 20 35 0a 0a 2f 2a 0a 2a 2a  ULL     5../*.**
9f70: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
9f80: 32 20 64 65 66 69 6e 65 73 20 53 51 4c 49 54 45  2 defines SQLITE
9f90: 5f 54 45 58 54 20 64 69 66 66 65 72 65 6e 74 6c  _TEXT differentl
9fa0: 79 2e 20 20 54 6f 20 61 6c 6c 6f 77 20 62 6f 74  y.  To allow bot
9fb0: 68 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 32 20 61  h.** version 2 a
9fc0: 6e 64 20 76 65 72 73 69 6f 6e 20 33 20 74 6f 20  nd version 3 to 
9fd0: 62 65 20 69 6e 63 6c 75 64 65 64 2c 20 75 6e 64  be included, und
9fe0: 65 66 69 6e 65 20 74 68 65 6d 20 62 6f 74 68 20  efine them both 
9ff0: 69 66 20 61 0a 2a 2a 20 63 6f 6e 66 6c 69 63 74  if a.** conflict
a000: 20 69 73 20 73 65 65 6e 2e 20 20 44 65 66 69 6e   is seen.  Defin
a010: 65 20 53 51 4c 49 54 45 33 5f 54 45 58 54 20 74  e SQLITE3_TEXT t
a020: 6f 20 62 65 20 74 68 65 20 76 65 72 73 69 6f 6e  o be the version
a030: 20 33 20 76 61 6c 75 65 2e 0a 2a 2f 0a 23 69 66   3 value..*/.#if
a040: 64 65 66 20 53 51 4c 49 54 45 5f 54 45 58 54 0a  def SQLITE_TEXT.
a050: 23 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 54  # undef SQLITE_T
a060: 45 58 54 0a 23 65 6c 73 65 0a 23 20 64 65 66 69  EXT.#else.# defi
a070: 6e 65 20 53 51 4c 49 54 45 5f 54 45 58 54 20 20  ne SQLITE_TEXT  
a080: 20 20 20 33 0a 23 65 6e 64 69 66 0a 23 64 65 66     3.#endif.#def
a090: 69 6e 65 20 53 51 4c 49 54 45 33 5f 54 45 58 54  ine SQLITE3_TEXT
a0a0: 20 20 20 20 20 33 0a 0a 2f 2a 0a 2a 2a 20 54 68       3../*.** Th
a0b0: 65 20 6e 65 78 74 20 67 72 6f 75 70 20 6f 66 20  e next group of 
a0c0: 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73  routines returns
a0d0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
a0e0: 75 74 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69  ut the informati
a0f0: 6f 6e 0a 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c  on.** in a singl
a100: 65 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20  e column of the 
a110: 63 75 72 72 65 6e 74 20 72 65 73 75 6c 74 20 72  current result r
a120: 6f 77 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20  ow of a query.  
a130: 49 6e 20 65 76 65 72 79 0a 2a 2a 20 63 61 73 65  In every.** case
a140: 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   the first param
a150: 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65  eter is a pointe
a160: 72 20 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61  r to the SQL sta
a170: 74 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 62  tement that is b
a180: 65 69 6e 67 0a 2a 2a 20 65 78 65 63 75 74 65 64  eing.** executed
a190: 20 28 74 68 65 20 73 71 6c 69 74 65 5f 73 74 6d   (the sqlite_stm
a1a0: 74 2a 20 74 68 61 74 20 77 61 73 20 72 65 74 75  t* that was retu
a1b0: 72 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  rned from sqlite
a1c0: 33 5f 70 72 65 70 61 72 65 28 29 29 20 61 6e 64  3_prepare()) and
a1d0: 0a 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64 20 61  .** the second a
a1e0: 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 69  rgument is the i
a1f0: 6e 64 65 78 20 6f 66 20 74 68 65 20 63 6f 6c 75  ndex of the colu
a200: 6d 6e 20 66 6f 72 20 77 68 69 63 68 20 69 6e 66  mn for which inf
a210: 6f 72 6d 61 74 69 6f 6e 20 0a 2a 2a 20 73 68 6f  ormation .** sho
a220: 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 2e  uld be returned.
a230: 20 20 69 43 6f 6c 20 69 73 20 7a 65 72 6f 2d 69    iCol is zero-i
a240: 6e 64 65 78 65 64 2e 20 20 54 68 65 20 6c 65 66  ndexed.  The lef
a250: 74 2d 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 61 73  t-most column as
a260: 20 61 6e 0a 2a 2a 20 69 6e 64 65 78 20 6f 66 20   an.** index of 
a270: 30 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20  0..**.** If the 
a280: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73  SQL statement is
a290: 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 70   not currently p
a2a0: 6f 69 6e 74 20 74 6f 20 61 20 76 61 6c 69 64 20  oint to a valid 
a2b0: 72 6f 77 2c 20 6f 72 20 69 66 20 74 68 65 0a 2a  row, or if the.*
a2c0: 2a 20 74 68 65 20 63 6f 6c 75 6c 6d 6e 20 69 6e  * the colulmn in
a2d0: 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72 61  dex is out of ra
a2e0: 6e 67 65 2c 20 74 68 65 20 72 65 73 75 6c 74 20  nge, the result 
a2f0: 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a  is undefined..**
a300: 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
a310: 65 73 20 61 74 74 65 6d 70 74 20 74 6f 20 63 6f  es attempt to co
a320: 6e 76 65 72 74 20 74 68 65 20 76 61 6c 75 65 20  nvert the value 
a330: 77 68 65 72 65 20 61 70 70 72 6f 70 72 69 61 74  where appropriat
a340: 65 2e 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70  e.  For.** examp
a350: 6c 65 2c 20 69 66 20 74 68 65 20 69 6e 74 65 72  le, if the inter
a360: 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69  nal representati
a370: 6f 6e 20 69 73 20 46 4c 4f 41 54 20 61 6e 64 20  on is FLOAT and 
a380: 61 20 74 65 78 74 20 72 65 73 75 6c 74 0a 2a 2a  a text result.**
a390: 20 69 73 20 72 65 71 75 65 73 74 65 64 2c 20 73   is requested, s
a3a0: 70 72 69 6e 74 66 28 29 20 69 73 20 75 73 65 64  printf() is used
a3b0: 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64   internally to d
a3c0: 6f 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e  o the conversion
a3d0: 0a 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  .** automaticall
a3e0: 79 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  y.  The followin
a3f0: 67 20 74 61 62 6c 65 20 64 65 74 61 69 6c 73 20  g table details 
a400: 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20  the conversions 
a410: 74 68 61 74 0a 2a 2a 20 61 72 65 20 61 70 70 6c  that.** are appl
a420: 69 65 64 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 49 6e  ied:.**.**    In
a430: 74 65 72 6e 61 6c 20 54 79 70 65 20 20 20 20 52  ternal Type    R
a440: 65 71 75 65 73 74 65 64 20 54 79 70 65 20 20 20  equested Type   
a450: 20 20 43 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a 20    Conversion.** 
a460: 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     -------------
a470: 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d      ------------
a480: 2d 2d 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  --    ----------
a490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a4a0: 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  .**       NULL  
a4b0: 20 20 20 20 20 20 20 20 20 20 20 49 4e 54 45 47             INTEG
a4c0: 45 52 20 20 20 20 20 20 20 20 20 52 65 73 75 6c  ER         Resul
a4d0: 74 20 69 73 20 30 0a 2a 2a 20 20 20 20 20 20 20  t is 0.**       
a4e0: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
a4f0: 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20   FLOAT          
a500: 20 52 65 73 75 6c 74 20 69 73 20 30 2e 30 0a 2a   Result is 0.0.*
a510: 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  *       NULL    
a520: 20 20 20 20 20 20 20 20 20 54 45 58 54 20 20 20           TEXT   
a530: 20 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 20           Result 
a540: 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  is an empty stri
a550: 6e 67 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c  ng.**       NULL
a560: 20 20 20 20 20 20 20 20 20 20 20 20 20 42 4c 4f               BLO
a570: 42 20 20 20 20 20 20 20 20 20 20 20 20 52 65 73  B            Res
a580: 75 6c 74 20 69 73 20 61 20 7a 65 72 6f 2d 6c 65  ult is a zero-le
a590: 6e 67 74 68 20 42 4c 4f 42 0a 2a 2a 20 20 20 20  ngth BLOB.**    
a5a0: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
a5b0: 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20      FLOAT       
a5c0: 20 20 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d      Convert from
a5d0: 20 69 6e 74 65 67 65 72 20 74 6f 20 66 6c 6f 61   integer to floa
a5e0: 74 0a 2a 2a 20 20 20 20 20 20 20 49 4e 54 45 47  t.**       INTEG
a5f0: 45 52 20 20 20 20 20 20 20 20 20 20 54 45 58 54  ER          TEXT
a600: 20 20 20 20 20 20 20 20 20 20 20 20 41 53 43 49              ASCI
a610: 49 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74  I rendering of t
a620: 68 65 20 69 6e 74 65 67 65 72 0a 2a 2a 20 20 20  he integer.**   
a630: 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20      INTEGER     
a640: 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20       BLOB       
a650: 20 20 20 20 20 53 61 6d 65 20 61 73 20 66 6f 72       Same as for
a660: 20 49 4e 54 45 47 45 52 2d 3e 54 45 58 54 0a 2a   INTEGER->TEXT.*
a670: 2a 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20  *       FLOAT   
a680: 20 20 20 20 20 20 20 20 20 49 4e 54 45 47 45 52           INTEGER
a690: 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74           Convert
a6a0: 20 66 72 6f 6d 20 66 6c 6f 61 74 20 74 6f 20 69   from float to i
a6b0: 6e 74 65 67 65 72 0a 2a 2a 20 20 20 20 20 20 20  nteger.**       
a6c0: 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20 20  FLOAT           
a6d0: 20 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20   TEXT           
a6e0: 20 41 53 43 49 49 20 72 65 6e 64 65 72 69 6e 67   ASCII rendering
a6f0: 20 6f 66 20 74 68 65 20 66 6c 6f 61 74 0a 2a 2a   of the float.**
a700: 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20         FLOAT    
a710: 20 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20          BLOB    
a720: 20 20 20 20 20 20 20 20 53 61 6d 65 20 61 73 20          Same as 
a730: 46 4c 4f 41 54 2d 3e 54 45 58 54 0a 2a 2a 20 20  FLOAT->TEXT.**  
a740: 20 20 20 20 20 54 45 58 54 20 20 20 20 20 20 20       TEXT       
a750: 20 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20        INTEGER   
a760: 20 20 20 20 20 20 55 73 65 20 61 74 6f 69 28 29        Use atoi()
a770: 0a 2a 2a 20 20 20 20 20 20 20 54 45 58 54 20 20  .**       TEXT  
a780: 20 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54             FLOAT
a790: 20 20 20 20 20 20 20 20 20 20 20 55 73 65 20 61             Use a
a7a0: 74 6f 66 28 29 0a 2a 2a 20 20 20 20 20 20 20 54  tof().**       T
a7b0: 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20 20  EXT             
a7c0: 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20 20  BLOB            
a7d0: 4e 6f 20 63 68 61 6e 67 65 0a 2a 2a 20 20 20 20  No change.**    
a7e0: 20 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20     BLOB         
a7f0: 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20      INTEGER     
a800: 20 20 20 20 43 6f 6e 76 65 72 74 20 74 6f 20 54      Convert to T
a810: 45 58 54 20 74 68 65 6e 20 75 73 65 20 61 74 6f  EXT then use ato
a820: 69 28 29 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f  i().**       BLO
a830: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 46 4c  B             FL
a840: 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 43 6f  OAT           Co
a850: 6e 76 65 72 74 20 74 6f 20 54 45 58 54 20 74 68  nvert to TEXT th
a860: 65 6e 20 75 73 65 20 61 74 6f 66 28 29 0a 2a 2a  en use atof().**
a870: 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20         BLOB     
a880: 20 20 20 20 20 20 20 20 54 45 58 54 20 20 20 20          TEXT    
a890: 20 20 20 20 20 20 20 20 41 64 64 20 61 20 5c 30          Add a \0
a8a0: 30 30 20 74 65 72 6d 69 6e 61 74 6f 72 20 69 66  00 terminator if
a8b0: 20 6e 65 65 64 65 64 0a 2a 2a 0a 2a 2a 20 54 68   needed.**.** Th
a8c0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 63 63 65  e following acce
a8d0: 73 73 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20  ss routines are 
a8e0: 70 72 6f 76 69 64 65 64 3a 0a 2a 2a 0a 2a 2a 20  provided:.**.** 
a8f0: 5f 74 79 70 65 28 29 20 20 20 20 20 52 65 74 75  _type()     Retu
a900: 72 6e 20 74 68 65 20 64 61 74 61 74 79 70 65 20  rn the datatype 
a910: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20  of the result.  
a920: 54 68 69 73 20 69 73 20 6f 6e 65 20 6f 66 0a 2a  This is one of.*
a930: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51  *             SQ
a940: 4c 49 54 45 5f 49 4e 54 45 47 45 52 2c 20 53 51  LITE_INTEGER, SQ
a950: 4c 49 54 45 5f 46 4c 4f 41 54 2c 20 53 51 4c 49  LITE_FLOAT, SQLI
a960: 54 45 5f 54 45 58 54 2c 20 53 51 4c 49 54 45 5f  TE_TEXT, SQLITE_
a970: 42 4c 4f 42 2c 0a 2a 2a 20 20 20 20 20 20 20 20  BLOB,.**        
a980: 20 20 20 20 20 6f 72 20 53 51 4c 49 54 45 5f 4e       or SQLITE_N
a990: 55 4c 4c 2e 0a 2a 2a 20 5f 62 6c 6f 62 28 29 20  ULL..** _blob() 
a9a0: 20 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 76      Return the v
a9b0: 61 6c 75 65 20 6f 66 20 61 20 42 4c 4f 42 2e 0a  alue of a BLOB..
a9c0: 2a 2a 20 5f 62 79 74 65 73 28 29 20 20 20 20 52  ** _bytes()    R
a9d0: 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72  eturn the number
a9e0: 20 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 42   of bytes in a B
a9f0: 4c 4f 42 20 76 61 6c 75 65 20 6f 72 20 74 68 65  LOB value or the
aa00: 20 6e 75 6d 62 65 72 0a 2a 2a 20 20 20 20 20 20   number.**      
aa10: 20 20 20 20 20 20 20 6f 66 20 62 79 74 65 73 20         of bytes 
aa20: 69 6e 20 61 20 54 45 58 54 20 76 61 6c 75 65 20  in a TEXT value 
aa30: 72 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 55  represented as U
aa40: 54 46 2d 38 2e 20 20 54 68 65 20 5c 30 30 30 0a  TF-8.  The \000.
aa50: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 74  **             t
aa60: 65 72 6d 69 6e 61 74 6f 72 20 69 73 20 69 6e 63  erminator is inc
aa70: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 62 79 74  luded in the byt
aa80: 65 20 63 6f 75 6e 74 20 66 6f 72 20 54 45 58 54  e count for TEXT
aa90: 20 76 61 6c 75 65 73 2e 0a 2a 2a 20 5f 62 79 74   values..** _byt
aaa0: 65 73 31 36 28 29 20 20 52 65 74 75 72 6e 20 74  es16()  Return t
aab0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
aac0: 65 73 20 69 6e 20 61 20 42 4c 4f 42 20 76 61 6c  es in a BLOB val
aad0: 75 65 20 6f 72 20 74 68 65 20 6e 75 6d 62 65 72  ue or the number
aae0: 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  .**             
aaf0: 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 54 45  of bytes in a TE
ab00: 58 54 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  XT value represe
ab10: 6e 74 65 64 20 61 73 20 55 54 46 2d 31 36 2e 20  nted as UTF-16. 
ab20: 20 54 68 65 20 5c 75 30 30 30 30 0a 2a 2a 20 20   The \u0000.**  
ab30: 20 20 20 20 20 20 20 20 20 20 20 74 65 72 6d 69             termi
ab40: 6e 61 74 6f 72 20 69 73 20 69 6e 63 6c 75 64 65  nator is include
ab50: 64 20 69 6e 20 74 68 65 20 62 79 74 65 20 63 6f  d in the byte co
ab60: 75 6e 74 20 66 6f 72 20 54 45 58 54 20 76 61 6c  unt for TEXT val
ab70: 75 65 73 2e 0a 2a 2a 20 5f 64 6f 75 62 6c 65 28  ues..** _double(
ab80: 29 20 20 20 52 65 74 75 72 6e 20 61 20 46 4c 4f  )   Return a FLO
ab90: 41 54 20 76 61 6c 75 65 2e 0a 2a 2a 20 5f 69 6e  AT value..** _in
aba0: 74 28 29 20 20 20 20 20 20 52 65 74 75 72 6e 20  t()      Return 
abb0: 61 6e 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65  an INTEGER value
abc0: 20 69 6e 20 74 68 65 20 68 6f 73 74 20 63 6f 6d   in the host com
abd0: 70 75 74 65 72 27 73 20 6e 61 74 69 76 65 0a 2a  puter's native.*
abe0: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  *             in
abf0: 74 65 67 65 72 20 72 65 70 72 65 73 65 6e 74 61  teger representa
ac00: 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d 69 67 68  tion.  This migh
ac10: 74 20 62 65 20 65 69 74 68 65 72 20 61 20 33 32  t be either a 32
ac20: 2d 20 6f 72 20 36 34 2d 62 69 74 0a 2a 2a 20 20  - or 64-bit.**  
ac30: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 67             integ
ac40: 65 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  er depending on 
ac50: 74 68 65 20 68 6f 73 74 2e 0a 2a 2a 20 5f 69 6e  the host..** _in
ac60: 74 36 34 28 29 20 20 20 20 52 65 74 75 72 6e 20  t64()    Return 
ac70: 61 6e 20 49 4e 54 45 47 45 52 20 76 61 6c 75 65  an INTEGER value
ac80: 20 61 73 20 61 20 36 34 2d 62 69 74 20 73 69 67   as a 64-bit sig
ac90: 6e 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20  ned integer..** 
aca0: 5f 74 65 78 74 28 29 20 20 20 20 20 52 65 74 75  _text()     Retu
acb0: 72 6e 20 74 68 65 20 76 61 6c 75 65 20 61 73 20  rn the value as 
acc0: 55 54 46 2d 38 20 74 65 78 74 2e 0a 2a 2a 20 5f  UTF-8 text..** _
acd0: 74 65 78 74 31 36 28 29 20 20 20 52 65 74 75 72  text16()   Retur
ace0: 6e 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 55  n the value as U
acf0: 54 46 2d 31 36 20 74 65 78 74 2e 0a 2a 2f 0a 63  TF-16 text..*/.c
ad00: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
ad10: 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 73  e3_column_blob(s
ad20: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
ad30: 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c  t iCol);.int sql
ad40: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
ad50: 73 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  s(sqlite3_stmt*,
ad60: 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20   int iCol);.int 
ad70: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
ad80: 79 74 65 73 31 36 28 73 71 6c 69 74 65 33 5f 73  ytes16(sqlite3_s
ad90: 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b  tmt*, int iCol);
ada0: 0a 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f  .double sqlite3_
adb0: 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 73 71  column_double(sq
adc0: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
add0: 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69   iCol);.int sqli
ade0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 73  te3_column_int(s
adf0: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
ae00: 74 20 69 43 6f 6c 29 3b 0a 73 71 6c 69 74 65 5f  t iCol);.sqlite_
ae10: 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 63 6f  int64 sqlite3_co
ae20: 6c 75 6d 6e 5f 69 6e 74 36 34 28 73 71 6c 69 74  lumn_int64(sqlit
ae30: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43  e3_stmt*, int iC
ae40: 6f 6c 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69 67  ol);.const unsig
ae50: 6e 65 64 20 63 68 61 72 20 2a 73 71 6c 69 74 65  ned char *sqlite
ae60: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 73 71  3_column_text(sq
ae70: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
ae80: 20 69 43 6f 6c 29 3b 0a 63 6f 6e 73 74 20 76 6f   iCol);.const vo
ae90: 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  id *sqlite3_colu
aea0: 6d 6e 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65  mn_text16(sqlite
aeb0: 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f  3_stmt*, int iCo
aec0: 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  l);.int sqlite3_
aed0: 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 73 71 6c 69  column_type(sqli
aee0: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
aef0: 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  Col);.int sqlite
af00: 33 5f 63 6f 6c 75 6d 6e 5f 6e 75 6d 65 72 69 63  3_column_numeric
af10: 5f 74 79 70 65 28 73 71 6c 69 74 65 33 5f 73 74  _type(sqlite3_st
af20: 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a  mt*, int iCol);.
af30: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 2a 73  sqlite3_value *s
af40: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61  qlite3_column_va
af50: 6c 75 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  lue(sqlite3_stmt
af60: 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 0a 2f  *, int iCol);../
af70: 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
af80: 5f 66 69 6e 61 6c 69 7a 65 28 29 20 66 75 6e 63  _finalize() func
af90: 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 74  tion is called t
afa0: 6f 20 64 65 6c 65 74 65 20 61 20 63 6f 6d 70 69  o delete a compi
afb0: 6c 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  led.** SQL state
afc0: 6d 65 6e 74 20 6f 62 74 61 69 6e 65 64 20 62 79  ment obtained by
afd0: 20 61 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c   a previous call
afe0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 70 72 65 70   to sqlite3_prep
aff0: 61 72 65 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69  are().** or sqli
b000: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2e  te3_prepare16().
b010: 20 49 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e   If the statemen
b020: 74 20 77 61 73 20 65 78 65 63 75 74 65 64 20 73  t was executed s
b030: 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 6f 72 0a  uccessfully, or.
b040: 2a 2a 20 6e 6f 74 20 65 78 65 63 75 74 65 64 20  ** not executed 
b050: 61 74 20 61 6c 6c 2c 20 74 68 65 6e 20 53 51 4c  at all, then SQL
b060: 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e  ITE_OK is return
b070: 65 64 2e 20 49 66 20 65 78 65 63 75 74 69 6f 6e  ed. If execution
b080: 20 6f 66 20 74 68 65 0a 2a 2a 20 73 74 61 74 65   of the.** state
b090: 6d 65 6e 74 20 66 61 69 6c 65 64 20 74 68 65 6e  ment failed then
b0a0: 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 69   an error code i
b0b0: 73 20 72 65 74 75 72 6e 65 64 2e 20 0a 2a 2a 0a  s returned. .**.
b0c0: 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20  ** This routine 
b0d0: 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61 74  can be called at
b0e0: 20 61 6e 79 20 70 6f 69 6e 74 20 64 75 72 69 6e   any point durin
b0f0: 67 20 74 68 65 20 65 78 65 63 75 74 69 6f 6e 20  g the execution 
b100: 6f 66 20 74 68 65 0a 2a 2a 20 76 69 72 74 75 61  of the.** virtua
b110: 6c 20 6d 61 63 68 69 6e 65 2e 20 20 49 66 20 74  l machine.  If t
b120: 68 65 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69  he virtual machi
b130: 6e 65 20 68 61 73 20 6e 6f 74 20 63 6f 6d 70 6c  ne has not compl
b140: 65 74 65 64 20 65 78 65 63 75 74 69 6f 6e 0a 2a  eted execution.*
b150: 2a 20 77 68 65 6e 20 74 68 69 73 20 72 6f 75 74  * when this rout
b160: 69 6e 65 20 69 73 20 63 61 6c 6c 65 64 2c 20 74  ine is called, t
b170: 68 61 74 20 69 73 20 6c 69 6b 65 20 65 6e 63 6f  hat is like enco
b180: 75 6e 74 65 72 69 6e 67 20 61 6e 20 65 72 72 6f  untering an erro
b190: 72 20 6f 72 0a 2a 2a 20 61 6e 20 69 6e 74 65 72  r or.** an inter
b1a0: 72 75 70 74 2e 20 20 28 53 65 65 20 73 71 6c 69  rupt.  (See sqli
b1b0: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2e  te3_interrupt().
b1c0: 29 20 20 49 6e 63 6f 6d 70 6c 65 74 65 20 75 70  )  Incomplete up
b1d0: 64 61 74 65 73 20 6d 61 79 20 62 65 0a 2a 2a 20  dates may be.** 
b1e0: 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 6e 64 20  rolled back and 
b1f0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e  transactions can
b200: 63 65 6c 6c 65 64 2c 20 20 64 65 70 65 6e 64 69  celled,  dependi
b210: 6e 67 20 6f 6e 20 74 68 65 20 63 69 72 63 75 6d  ng on the circum
b220: 73 74 61 6e 63 65 73 2c 0a 2a 2a 20 61 6e 64 20  stances,.** and 
b230: 74 68 65 20 72 65 73 75 6c 74 20 63 6f 64 65 20  the result code 
b240: 72 65 74 75 72 6e 65 64 20 77 69 6c 6c 20 62 65  returned will be
b250: 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 2a   SQLITE_ABORT..*
b260: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 66 69  /.int sqlite3_fi
b270: 6e 61 6c 69 7a 65 28 73 71 6c 69 74 65 33 5f 73  nalize(sqlite3_s
b280: 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a  tmt *pStmt);../*
b290: 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
b2a0: 72 65 73 65 74 28 29 20 66 75 6e 63 74 69 6f 6e  reset() function
b2b0: 20 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 72 65   is called to re
b2c0: 73 65 74 20 61 20 63 6f 6d 70 69 6c 65 64 20 53  set a compiled S
b2d0: 51 4c 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20  QL.** statement 
b2e0: 6f 62 74 61 69 6e 65 64 20 62 79 20 61 20 70 72  obtained by a pr
b2f0: 65 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20 73  evious call to s
b300: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
b310: 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70   or.** sqlite3_p
b320: 72 65 70 61 72 65 31 36 28 29 20 62 61 63 6b 20  repare16() back 
b330: 74 6f 20 69 74 27 73 20 69 6e 69 74 69 61 6c 20  to it's initial 
b340: 73 74 61 74 65 2c 20 72 65 61 64 79 20 74 6f 20  state, ready to 
b350: 62 65 20 72 65 2d 65 78 65 63 75 74 65 64 2e 0a  be re-executed..
b360: 2a 2a 20 41 6e 79 20 53 51 4c 20 73 74 61 74 65  ** Any SQL state
b370: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 74  ment variables t
b380: 68 61 74 20 68 61 64 20 76 61 6c 75 65 73 20 62  hat had values b
b390: 6f 75 6e 64 20 74 6f 20 74 68 65 6d 20 75 73 69  ound to them usi
b3a0: 6e 67 0a 2a 2a 20 74 68 65 20 73 71 6c 69 74 65  ng.** the sqlite
b3b0: 33 5f 62 69 6e 64 5f 2a 28 29 20 41 50 49 20 72  3_bind_*() API r
b3c0: 65 74 61 69 6e 20 74 68 65 69 72 20 76 61 6c 75  etain their valu
b3d0: 65 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  es..*/.int sqlit
b3e0: 65 33 5f 72 65 73 65 74 28 73 71 6c 69 74 65 33  e3_reset(sqlite3
b3f0: 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a  _stmt *pStmt);..
b400: 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77  /*.** The follow
b410: 69 6e 67 20 74 77 6f 20 66 75 6e 63 74 69 6f 6e  ing two function
b420: 73 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 64  s are used to ad
b430: 64 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73  d user functions
b440: 20 6f 72 20 61 67 67 72 65 67 61 74 65 73 0a 2a   or aggregates.*
b450: 2a 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e  * implemented in
b460: 20 43 20 74 6f 20 74 68 65 20 53 51 4c 20 6c 61   C to the SQL la
b470: 6e 67 61 75 67 65 20 69 6e 74 65 72 70 72 65 74  ngauge interpret
b480: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 20 54 68  ed by SQLite. Th
b490: 65 0a 2a 2a 20 64 69 66 66 65 72 65 6e 63 65 20  e.** difference 
b4a0: 6f 6e 6c 79 20 62 65 74 77 65 65 6e 20 74 68 65  only between the
b4b0: 20 74 77 6f 20 69 73 20 74 68 61 74 20 74 68 65   two is that the
b4c0: 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
b4d0: 72 2c 20 74 68 65 0a 2a 2a 20 6e 61 6d 65 20 6f  r, the.** name o
b4e0: 66 20 74 68 65 20 28 73 63 61 6c 61 72 29 20 66  f the (scalar) f
b4f0: 75 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67 72 65  unction or aggre
b500: 67 61 74 65 2c 20 69 73 20 65 6e 63 6f 64 65 64  gate, is encoded
b510: 20 69 6e 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a   in UTF-8 for.**
b520: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
b530: 66 75 6e 63 74 69 6f 6e 28 29 20 61 6e 64 20 55  function() and U
b540: 54 46 2d 31 36 20 66 6f 72 20 73 71 6c 69 74 65  TF-16 for sqlite
b550: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
b560: 6e 31 36 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  n16()..**.** The
b570: 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
b580: 69 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  is the database 
b590: 68 61 6e 64 6c 65 20 74 68 61 74 20 74 68 65 20  handle that the 
b5a0: 6e 65 77 20 66 75 6e 63 74 69 6f 6e 20 6f 72 0a  new function or.
b5b0: 2a 2a 20 61 67 67 72 65 67 61 74 65 20 69 73 20  ** aggregate is 
b5c0: 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f 2e 20  to be added to. 
b5d0: 49 66 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67  If a single prog
b5e0: 72 61 6d 20 75 73 65 73 20 6d 6f 72 65 20 74 68  ram uses more th
b5f0: 61 6e 20 6f 6e 65 0a 2a 2a 20 64 61 74 61 62 61  an one.** databa
b600: 73 65 20 68 61 6e 64 6c 65 20 69 6e 74 65 72 6e  se handle intern
b610: 61 6c 6c 79 2c 20 74 68 65 6e 20 75 73 65 72 20  ally, then user 
b620: 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 61 67 67  functions or agg
b630: 72 65 67 61 74 65 73 20 6d 75 73 74 20 0a 2a 2a  regates must .**
b640: 20 62 65 20 61 64 64 65 64 20 69 6e 64 69 76 69   be added indivi
b650: 64 75 61 6c 6c 79 20 74 6f 20 65 61 63 68 20 64  dually to each d
b660: 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 77  atabase handle w
b670: 69 74 68 20 77 68 69 63 68 20 74 68 65 79 20 77  ith which they w
b680: 69 6c 6c 20 62 65 0a 2a 2a 20 75 73 65 64 2e 0a  ill be.** used..
b690: 2a 2a 0a 2a 2a 20 54 68 65 20 74 68 69 72 64 20  **.** The third 
b6a0: 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65  parameter is the
b6b0: 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
b6c0: 65 6e 74 73 20 74 68 61 74 20 74 68 65 20 66 75  ents that the fu
b6d0: 6e 63 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67  nction or.** agg
b6e0: 72 65 67 61 74 65 20 74 61 6b 65 73 2e 20 49 66  regate takes. If
b6f0: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
b700: 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65  is negative, the
b710: 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6f  n the function o
b720: 72 0a 2a 2a 20 61 67 67 72 65 67 61 74 65 20 6d  r.** aggregate m
b730: 61 79 20 74 61 6b 65 20 61 6e 79 20 6e 75 6d 62  ay take any numb
b740: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e  er of arguments.
b750: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6f 75 72 74  .**.** The fourt
b760: 68 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 6f  h parameter is o
b770: 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 55 54 46  ne of SQLITE_UTF
b780: 2a 20 76 61 6c 75 65 73 20 64 65 66 69 6e 65 64  * values defined
b790: 20 62 65 6c 6f 77 2c 0a 2a 2a 20 69 6e 64 69 63   below,.** indic
b7a0: 61 74 69 6e 67 20 74 68 65 20 65 6e 63 6f 64 69  ating the encodi
b7b0: 6e 67 20 74 68 61 74 20 74 68 65 20 66 75 6e 63  ng that the func
b7c0: 74 69 6f 6e 20 69 73 20 6d 6f 73 74 20 6c 69 6b  tion is most lik
b7d0: 65 6c 79 20 74 6f 20 68 61 6e 64 6c 65 0a 2a 2a  ely to handle.**
b7e0: 20 76 61 6c 75 65 73 20 69 6e 2e 20 20 54 68 69   values in.  Thi
b7f0: 73 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67  s does not chang
b800: 65 20 74 68 65 20 62 65 68 61 76 69 6f 75 72 20  e the behaviour 
b810: 6f 66 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 69  of the programmi
b820: 6e 67 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 2e  ng.** interface.
b830: 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74 77 6f   However, if two
b840: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65   versions of the
b850: 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 61   same function a
b860: 72 65 20 72 65 67 69 73 74 65 72 65 64 0a 2a 2a  re registered.**
b870: 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20   with different 
b880: 65 6e 63 6f 64 69 6e 67 20 76 61 6c 75 65 73 2c  encoding values,
b890: 20 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20   SQLite invokes 
b8a0: 74 68 65 20 76 65 72 73 69 6f 6e 20 6c 69 6b 65  the version like
b8b0: 6c 79 20 74 6f 0a 2a 2a 20 6d 69 6e 69 6d 69 7a  ly to.** minimiz
b8c0: 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 62 65  e conversions be
b8d0: 74 77 65 65 6e 20 74 65 78 74 20 65 6e 63 6f 64  tween text encod
b8e0: 69 6e 67 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ings..**.** The 
b8f0: 73 65 76 65 6e 74 68 2c 20 65 69 67 68 74 68 20  seventh, eighth 
b900: 61 6e 64 20 6e 69 6e 74 68 20 70 61 72 61 6d 65  and ninth parame
b910: 74 65 72 73 2c 20 78 46 75 6e 63 2c 20 78 53 74  ters, xFunc, xSt
b920: 65 70 20 61 6e 64 20 78 46 69 6e 61 6c 2c 20 61  ep and xFinal, a
b930: 72 65 0a 2a 2a 20 70 6f 69 6e 74 65 72 73 20 74  re.** pointers t
b940: 6f 20 75 73 65 72 20 69 6d 70 6c 65 6d 65 6e 74  o user implement
b950: 65 64 20 43 20 66 75 6e 63 74 69 6f 6e 73 20 74  ed C functions t
b960: 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68  hat implement th
b970: 65 20 75 73 65 72 0a 2a 2a 20 66 75 6e 63 74 69  e user.** functi
b980: 6f 6e 20 6f 72 20 61 67 67 72 65 67 61 74 65 2e  on or aggregate.
b990: 20 41 20 73 63 61 6c 61 72 20 66 75 6e 63 74 69   A scalar functi
b9a0: 6f 6e 20 72 65 71 75 69 72 65 73 20 61 6e 20 69  on requires an i
b9b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
b9c0: 0a 2a 2a 20 74 68 65 20 78 46 75 6e 63 20 63 61  .** the xFunc ca
b9d0: 6c 6c 62 61 63 6b 20 6f 6e 6c 79 2c 20 4e 55 4c  llback only, NUL
b9e0: 4c 20 70 6f 69 6e 74 65 72 73 20 73 68 6f 75 6c  L pointers shoul
b9f0: 64 20 62 65 20 70 61 73 73 65 64 20 61 73 20 74  d be passed as t
ba00: 68 65 20 78 53 74 65 70 0a 2a 2a 20 61 6e 64 20  he xStep.** and 
ba10: 78 46 69 6e 61 6c 20 70 61 72 61 6d 65 74 65 72  xFinal parameter
ba20: 73 2e 20 41 6e 20 61 67 67 72 65 67 61 74 65 20  s. An aggregate 
ba30: 66 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65  function require
ba40: 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  s an implementat
ba50: 69 6f 6e 0a 2a 2a 20 6f 66 20 78 53 74 65 70 20  ion.** of xStep 
ba60: 61 6e 64 20 78 46 69 6e 61 6c 2c 20 62 75 74 20  and xFinal, but 
ba70: 4e 55 4c 4c 20 73 68 6f 75 6c 64 20 62 65 20 70  NULL should be p
ba80: 61 73 73 65 64 20 66 6f 72 20 78 46 75 6e 63 2e  assed for xFunc.
ba90: 20 54 6f 20 64 65 6c 65 74 65 20 61 6e 0a 2a 2a   To delete an.**
baa0: 20 65 78 69 73 74 69 6e 67 20 75 73 65 72 20 66   existing user f
bab0: 75 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67 72 65  unction or aggre
bac0: 67 61 74 65 2c 20 70 61 73 73 20 4e 55 4c 4c 20  gate, pass NULL 
bad0: 66 6f 72 20 61 6c 6c 20 74 68 72 65 65 20 66 75  for all three fu
bae0: 6e 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61  nction.** callba
baf0: 63 6b 2e 20 53 70 65 63 69 66 79 69 6e 67 20 61  ck. Specifying a
bb00: 6e 20 69 6e 63 6f 6e 73 74 65 6e 74 20 73 65 74  n inconstent set
bb10: 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 76 61 6c   of callback val
bb20: 75 65 73 2c 20 73 75 63 68 20 61 73 20 61 6e 0a  ues, such as an.
bb30: 2a 2a 20 78 46 75 6e 63 20 61 6e 64 20 61 6e 20  ** xFunc and an 
bb40: 78 46 69 6e 61 6c 2c 20 6f 72 20 61 6e 20 78 53  xFinal, or an xS
bb50: 74 65 70 20 62 75 74 20 6e 6f 20 78 46 69 6e 61  tep but no xFina
bb60: 6c 2c 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20  l, SQLITE_ERROR 
bb70: 69 73 0a 2a 2a 20 72 65 74 75 72 6e 65 64 2e 0a  is.** returned..
bb80: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  */.int sqlite3_c
bb90: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 0a  reate_function(.
bba0: 20 20 73 71 6c 69 74 65 33 20 2a 2c 0a 20 20 63    sqlite3 *,.  c
bbb0: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 75 6e 63  onst char *zFunc
bbc0: 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e 74 20  tionName,.  int 
bbd0: 6e 41 72 67 2c 0a 20 20 69 6e 74 20 65 54 65 78  nArg,.  int eTex
bbe0: 74 52 65 70 2c 0a 20 20 76 6f 69 64 2a 2c 0a 20  tRep,.  void*,. 
bbf0: 20 76 6f 69 64 20 28 2a 78 46 75 6e 63 29 28 73   void (*xFunc)(s
bc00: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c  qlite3_context*,
bc10: 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c 75  int,sqlite3_valu
bc20: 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a 78  e**),.  void (*x
bc30: 53 74 65 70 29 28 73 71 6c 69 74 65 33 5f 63 6f  Step)(sqlite3_co
bc40: 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69 74  ntext*,int,sqlit
bc50: 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20 76  e3_value**),.  v
bc60: 6f 69 64 20 28 2a 78 46 69 6e 61 6c 29 28 73 71  oid (*xFinal)(sq
bc70: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 0a  lite3_context*).
bc80: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
bc90: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 31 36  reate_function16
bca0: 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20  (.  sqlite3*,.  
bcb0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 46 75 6e  const void *zFun
bcc0: 63 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e 74  ctionName,.  int
bcd0: 20 6e 41 72 67 2c 0a 20 20 69 6e 74 20 65 54 65   nArg,.  int eTe
bce0: 78 74 52 65 70 2c 0a 20 20 76 6f 69 64 2a 2c 0a  xtRep,.  void*,.
bcf0: 20 20 76 6f 69 64 20 28 2a 78 46 75 6e 63 29 28    void (*xFunc)(
bd00: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
bd10: 2c 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c  ,int,sqlite3_val
bd20: 75 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a  ue**),.  void (*
bd30: 78 53 74 65 70 29 28 73 71 6c 69 74 65 33 5f 63  xStep)(sqlite3_c
bd40: 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69  ontext*,int,sqli
bd50: 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20  te3_value**),.  
bd60: 76 6f 69 64 20 28 2a 78 46 69 6e 61 6c 29 28 73  void (*xFinal)(s
bd70: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29  qlite3_context*)
bd80: 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20  .);../*.** This 
bd90: 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 70 72  function is depr
bda0: 65 63 61 74 65 64 2e 20 20 44 6f 20 6e 6f 74 20  ecated.  Do not 
bdb0: 75 73 65 20 69 74 2e 20 20 49 74 20 63 6f 6e 74  use it.  It cont
bdc0: 69 6e 75 65 73 20 74 6f 20 65 78 69 73 74 0a 2a  inues to exist.*
bdd0: 2a 20 73 6f 20 61 73 20 6e 6f 74 20 74 6f 20 62  * so as not to b
bde0: 72 65 61 6b 20 6c 65 67 61 63 79 20 63 6f 64 65  reak legacy code
bdf0: 2e 20 20 42 75 74 20 6e 65 77 20 63 6f 64 65 20  .  But new code 
be00: 73 68 6f 75 6c 64 20 61 76 6f 69 64 20 75 73 69  should avoid usi
be10: 6e 67 20 69 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71  ng it..*/.int sq
be20: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
be30: 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 63 6f  count(sqlite3_co
be40: 6e 74 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  ntext*);../*.** 
be50: 54 68 65 20 6e 65 78 74 20 67 72 6f 75 70 20 6f  The next group o
be60: 66 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  f routines retur
be70: 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  ns information a
be80: 62 6f 75 74 20 70 61 72 61 6d 65 74 65 72 73 20  bout parameters 
be90: 74 6f 0a 2a 2a 20 61 20 75 73 65 72 2d 64 65 66  to.** a user-def
bea0: 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 2e 20 20  ined function.  
beb0: 46 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d 65  Function impleme
bec0: 6e 74 61 74 69 6f 6e 73 20 75 73 65 20 74 68 65  ntations use the
bed0: 73 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a 20 74  se routines.** t
bee0: 6f 20 61 63 63 65 73 73 20 74 68 65 69 72 20 70  o access their p
bef0: 61 72 61 6d 65 74 65 72 73 2e 20 20 54 68 65 73  arameters.  Thes
bf00: 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 74  e routines are t
bf10: 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 0a 2a  he same as the.*
bf20: 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  * sqlite3_column
bf30: 5f 2a 20 72 6f 75 74 69 6e 65 73 20 65 78 63 65  _* routines exce
bf40: 70 74 20 74 68 61 74 20 74 68 65 73 65 20 72 6f  pt that these ro
bf50: 75 74 69 6e 65 73 20 74 61 6b 65 20 61 20 73 69  utines take a si
bf60: 6e 67 6c 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ngle.** sqlite3_
bf70: 76 61 6c 75 65 2a 20 70 6f 69 6e 74 65 72 20 69  value* pointer i
bf80: 6e 73 74 65 61 64 20 6f 66 20 61 6e 20 73 71 6c  nstead of an sql
bf90: 69 74 65 33 5f 73 74 6d 74 2a 20 61 6e 64 20 61  ite3_stmt* and a
bfa0: 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 63 6f 6c  n integer.** col
bfb0: 75 6d 6e 20 6e 75 6d 62 65 72 2e 0a 2a 2f 0a 63  umn number..*/.c
bfc0: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
bfd0: 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 73 71  e3_value_blob(sq
bfe0: 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69  lite3_value*);.i
bff0: 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
c000: 5f 62 79 74 65 73 28 73 71 6c 69 74 65 33 5f 76  _bytes(sqlite3_v
c010: 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69  alue*);.int sqli
c020: 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
c030: 36 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  6(sqlite3_value*
c040: 29 3b 0a 64 6f 75 62 6c 65 20 73 71 6c 69 74 65  );.double sqlite
c050: 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 73  3_value_double(s
c060: 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a  qlite3_value*);.
c070: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
c080: 65 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 76 61  e_int(sqlite3_va
c090: 6c 75 65 2a 29 3b 0a 73 71 6c 69 74 65 5f 69 6e  lue*);.sqlite_in
c0a0: 74 36 34 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  t64 sqlite3_valu
c0b0: 65 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33 5f  e_int64(sqlite3_
c0c0: 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 75  value*);.const u
c0d0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 71  nsigned char *sq
c0e0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
c0f0: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29  (sqlite3_value*)
c100: 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  ;.const void *sq
c110: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
c120: 31 36 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  16(sqlite3_value
c130: 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a  *);.const void *
c140: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
c150: 78 74 31 36 6c 65 28 73 71 6c 69 74 65 33 5f 76  xt16le(sqlite3_v
c160: 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f  alue*);.const vo
c170: 69 64 20 2a 73 71 6c 69 74 65 33 5f 76 61 6c 75  id *sqlite3_valu
c180: 65 5f 74 65 78 74 31 36 62 65 28 73 71 6c 69 74  e_text16be(sqlit
c190: 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20  e3_value*);.int 
c1a0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
c1b0: 70 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  pe(sqlite3_value
c1c0: 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  *);.int sqlite3_
c1d0: 76 61 6c 75 65 5f 6e 75 6d 65 72 69 63 5f 74 79  value_numeric_ty
c1e0: 70 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  pe(sqlite3_value
c1f0: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 67 67 72 65  *);../*.** Aggre
c200: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 75  gate functions u
c210: 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  se the following
c220: 20 72 6f 75 74 69 6e 65 20 74 6f 20 61 6c 6c 6f   routine to allo
c230: 63 61 74 65 0a 2a 2a 20 61 20 73 74 72 75 63 74  cate.** a struct
c240: 75 72 65 20 66 6f 72 20 73 74 6f 72 69 6e 67 20  ure for storing 
c250: 74 68 65 69 72 20 73 74 61 74 65 2e 20 20 54 68  their state.  Th
c260: 65 20 66 69 72 73 74 20 74 69 6d 65 20 74 68 69  e first time thi
c270: 73 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 69 73 20  s routine.** is 
c280: 63 61 6c 6c 65 64 20 66 6f 72 20 61 20 70 61 72  called for a par
c290: 74 69 63 75 6c 61 72 20 61 67 67 72 65 67 61 74  ticular aggregat
c2a0: 65 2c 20 61 20 6e 65 77 20 73 74 72 75 63 74 75  e, a new structu
c2b0: 72 65 20 6f 66 20 73 69 7a 65 20 6e 42 79 74 65  re of size nByte
c2c0: 73 0a 2a 2a 20 69 73 20 61 6c 6c 6f 63 61 74 65  s.** is allocate
c2d0: 64 2c 20 7a 65 72 6f 65 64 2c 20 61 6e 64 20 72  d, zeroed, and r
c2e0: 65 74 75 72 6e 65 64 2e 20 20 4f 6e 20 73 75 62  eturned.  On sub
c2f0: 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 28 66  sequent calls (f
c300: 6f 72 20 74 68 65 0a 2a 2a 20 73 61 6d 65 20 61  or the.** same a
c310: 67 67 72 65 67 61 74 65 20 69 6e 73 74 61 6e 63  ggregate instanc
c320: 65 29 20 74 68 65 20 73 61 6d 65 20 62 75 66 66  e) the same buff
c330: 65 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20  er is returned. 
c340: 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   The implementat
c350: 69 6f 6e 0a 2a 2a 20 6f 66 20 74 68 65 20 61 67  ion.** of the ag
c360: 67 72 65 67 61 74 65 20 63 61 6e 20 75 73 65 20  gregate can use 
c370: 74 68 65 20 72 65 74 75 72 6e 65 64 20 62 75 66  the returned buf
c380: 66 65 72 20 74 6f 20 61 63 63 75 6d 75 6c 61 74  fer to accumulat
c390: 65 20 64 61 74 61 2e 0a 2a 2a 0a 2a 2a 20 54 68  e data..**.** Th
c3a0: 65 20 62 75 66 66 65 72 20 61 6c 6c 6f 63 61 74  e buffer allocat
c3b0: 65 64 20 69 73 20 66 72 65 65 64 20 61 75 74 6f  ed is freed auto
c3c0: 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 53 51 4c  matically by SQL
c3d0: 69 74 65 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71  ite..*/.void *sq
c3e0: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
c3f0: 63 6f 6e 74 65 78 74 28 73 71 6c 69 74 65 33 5f  context(sqlite3_
c400: 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 20 6e 42  context*, int nB
c410: 79 74 65 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  ytes);../*.** Th
c420: 65 20 70 55 73 65 72 44 61 74 61 20 70 61 72 61  e pUserData para
c430: 6d 65 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  meter to the sql
c440: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
c450: 74 69 6f 6e 28 29 0a 2a 2a 20 72 6f 75 74 69 6e  tion().** routin
c460: 65 20 75 73 65 64 20 74 6f 20 72 65 67 69 73 74  e used to regist
c470: 65 72 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  er user function
c480: 73 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74  s is available t
c490: 6f 0a 2a 2a 20 74 68 65 20 69 6d 70 6c 65 6d 65  o.** the impleme
c4a0: 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66  ntation of the f
c4b0: 75 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20 74 68  unction using th
c4c0: 69 73 20 63 61 6c 6c 2e 0a 2a 2f 0a 76 6f 69 64  is call..*/.void
c4d0: 20 2a 73 71 6c 69 74 65 33 5f 75 73 65 72 5f 64   *sqlite3_user_d
c4e0: 61 74 61 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  ata(sqlite3_cont
c4f0: 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  ext*);../*.** Th
c500: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20  e following two 
c510: 66 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62 65  functions may be
c520: 20 75 73 65 64 20 62 79 20 73 63 61 6c 61 72 20   used by scalar 
c530: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 74  user functions t
c540: 6f 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 20 6d  o.** associate m
c550: 65 74 61 2d 64 61 74 61 20 77 69 74 68 20 61 72  eta-data with ar
c560: 67 75 6d 65 6e 74 20 76 61 6c 75 65 73 2e 20 49  gument values. I
c570: 66 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  f the same value
c580: 20 69 73 20 70 61 73 73 65 64 20 74 6f 0a 2a 2a   is passed to.**
c590: 20 6d 75 6c 74 69 70 6c 65 20 69 6e 76 6f 63 61   multiple invoca
c5a0: 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 75 73 65  tions of the use
c5b0: 72 2d 66 75 6e 63 74 69 6f 6e 20 64 75 72 69 6e  r-function durin
c5c0: 67 20 71 75 65 72 79 20 65 78 65 63 75 74 69 6f  g query executio
c5d0: 6e 2c 20 75 6e 64 65 72 0a 2a 2a 20 73 6f 6d 65  n, under.** some
c5e0: 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 74   circumstances t
c5f0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 6d 65  he associated me
c600: 74 61 2d 64 61 74 61 20 6d 61 79 20 62 65 20 70  ta-data may be p
c610: 72 65 73 65 72 76 65 64 2e 20 54 68 69 73 20 6d  reserved. This m
c620: 61 79 0a 2a 2a 20 62 65 20 75 73 65 64 2c 20 66  ay.** be used, f
c630: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 20 61  or example, to a
c640: 64 64 20 61 20 72 65 67 75 6c 61 72 2d 65 78 70  dd a regular-exp
c650: 72 65 73 73 69 6f 6e 20 6d 61 74 63 68 69 6e 67  ression matching
c660: 20 73 63 61 6c 61 72 0a 2a 2a 20 66 75 6e 63 74   scalar.** funct
c670: 69 6f 6e 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65  ion. The compile
c680: 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  d version of the
c690: 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73   regular express
c6a0: 69 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73  ion is stored as
c6b0: 0a 2a 2a 20 6d 65 74 61 2d 64 61 74 61 20 61 73  .** meta-data as
c6c0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
c6d0: 65 20 53 51 4c 20 76 61 6c 75 65 20 70 61 73 73  e SQL value pass
c6e0: 65 64 20 61 73 20 74 68 65 20 72 65 67 75 6c 61  ed as the regula
c6f0: 72 20 65 78 70 72 65 73 73 69 6f 6e 0a 2a 2a 20  r expression.** 
c700: 70 61 74 74 65 72 6e 2e 0a 2a 2a 0a 2a 2a 20 43  pattern..**.** C
c710: 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 67  alling sqlite3_g
c720: 65 74 5f 61 75 78 64 61 74 61 28 29 20 72 65 74  et_auxdata() ret
c730: 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
c740: 6f 20 74 68 65 20 6d 65 74 61 20 64 61 74 61 0a  o the meta data.
c750: 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ** associated wi
c760: 74 68 20 74 68 65 20 4e 74 68 20 61 72 67 75 6d  th the Nth argum
c770: 65 6e 74 20 76 61 6c 75 65 20 74 6f 20 74 68 65  ent value to the
c780: 20 63 75 72 72 65 6e 74 20 75 73 65 72 20 66 75   current user fu
c790: 6e 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 2c 20  nction.** call, 
c7a0: 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 73  where N is the s
c7b0: 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2e  econd parameter.
c7c0: 20 49 66 20 6e 6f 20 6d 65 74 61 2d 64 61 74 61   If no meta-data
c7d0: 20 68 61 73 20 62 65 65 6e 20 73 65 74 20 66 6f   has been set fo
c7e0: 72 0a 2a 2a 20 74 68 61 74 20 76 61 6c 75 65 2c  r.** that value,
c7f0: 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69   then a NULL poi
c800: 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64  nter is returned
c810: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
c820: 74 65 33 5f 73 65 74 5f 61 75 78 64 61 74 61 28  te3_set_auxdata(
c830: 29 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73  ) is used to ass
c840: 6f 63 69 61 74 65 20 6d 65 74 61 20 64 61 74 61  ociate meta data
c850: 20 77 69 74 68 20 61 20 75 73 65 72 0a 2a 2a 20   with a user.** 
c860: 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e  function argumen
c870: 74 2e 20 54 68 65 20 74 68 69 72 64 20 70 61 72  t. The third par
c880: 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e  ameter is a poin
c890: 74 65 72 20 74 6f 20 74 68 65 20 6d 65 74 61 20  ter to the meta 
c8a0: 64 61 74 61 0a 2a 2a 20 74 6f 20 62 65 20 61 73  data.** to be as
c8b0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
c8c0: 65 20 4e 74 68 20 75 73 65 72 20 66 75 6e 63 74  e Nth user funct
c8d0: 69 6f 6e 20 61 72 67 75 6d 65 6e 74 20 76 61 6c  ion argument val
c8e0: 75 65 2e 20 54 68 65 20 66 6f 75 72 74 68 0a 2a  ue. The fourth.*
c8f0: 2a 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63  * parameter spec
c900: 69 66 69 65 73 20 61 20 27 64 65 6c 65 74 65 20  ifies a 'delete 
c910: 66 75 6e 63 74 69 6f 6e 27 20 74 68 61 74 20 77  function' that w
c920: 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 6f 6e  ill be called on
c930: 20 74 68 65 20 6d 65 74 61 0a 2a 2a 20 64 61 74   the meta.** dat
c940: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 72 65 6c  a pointer to rel
c950: 65 61 73 65 20 69 74 20 77 68 65 6e 20 69 74 20  ease it when it 
c960: 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71  is no longer req
c970: 75 69 72 65 64 2e 20 49 66 20 74 68 65 20 64 65  uired. If the de
c980: 6c 65 74 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  lete.** function
c990: 20 70 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c 4c   pointer is NULL
c9a0: 2c 20 69 74 20 69 73 20 6e 6f 74 20 69 6e 76 6f  , it is not invo
c9b0: 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 70 72  ked..**.** In pr
c9c0: 61 63 74 69 63 65 2c 20 6d 65 74 61 2d 64 61 74  actice, meta-dat
c9d0: 61 20 69 73 20 70 72 65 73 65 72 76 65 64 20 62  a is preserved b
c9e0: 65 74 77 65 65 6e 20 66 75 6e 63 74 69 6f 6e 20  etween function 
c9f0: 63 61 6c 6c 73 20 66 6f 72 0a 2a 2a 20 65 78 70  calls for.** exp
ca00: 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72  ressions that ar
ca10: 65 20 63 6f 6e 73 74 61 6e 74 20 61 74 20 63 6f  e constant at co
ca20: 6d 70 69 6c 65 20 74 69 6d 65 2e 20 54 68 69 73  mpile time. This
ca30: 20 69 6e 63 6c 75 64 65 73 20 6c 69 74 65 72 61   includes litera
ca40: 6c 0a 2a 2a 20 76 61 6c 75 65 73 20 61 6e 64 20  l.** values and 
ca50: 53 51 4c 20 76 61 72 69 61 62 6c 65 73 2e 0a 2a  SQL variables..*
ca60: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
ca70: 67 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c 69  get_auxdata(sqli
ca80: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e  te3_context*, in
ca90: 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33  t);.void sqlite3
caa0: 5f 73 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c  _set_auxdata(sql
cab0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69  ite3_context*, i
cac0: 6e 74 2c 20 76 6f 69 64 2a 2c 20 76 6f 69 64 20  nt, void*, void 
cad0: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 0a 0a 2f  (*)(void*));.../
cae0: 2a 0a 2a 2a 20 54 68 65 73 65 20 61 72 65 20 73  *.** These are s
caf0: 70 65 63 69 61 6c 20 76 61 6c 75 65 20 66 6f 72  pecial value for
cb00: 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 20   the destructor 
cb10: 74 68 61 74 20 69 73 20 70 61 73 73 65 64 20 69  that is passed i
cb20: 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66 69 6e 61  n as the.** fina
cb30: 6c 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 72 6f  l argument to ro
cb40: 75 74 69 6e 65 73 20 6c 69 6b 65 20 73 71 6c 69  utines like sqli
cb50: 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28  te3_result_blob(
cb60: 29 2e 20 20 49 66 20 74 68 65 20 64 65 73 74 72  ).  If the destr
cb70: 75 63 74 6f 72 0a 2a 2a 20 61 72 67 75 6d 65 6e  uctor.** argumen
cb80: 74 20 69 73 20 53 51 4c 49 54 45 5f 53 54 41 54  t is SQLITE_STAT
cb90: 49 43 2c 20 69 74 20 6d 65 61 6e 73 20 74 68 61  IC, it means tha
cba0: 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 70 6f  t the content po
cbb0: 69 6e 74 65 72 20 69 73 20 63 6f 6e 73 74 61 6e  inter is constan
cbc0: 74 0a 2a 2a 20 61 6e 64 20 77 69 6c 6c 20 6e 65  t.** and will ne
cbd0: 76 65 72 20 63 68 61 6e 67 65 2e 20 20 49 74 20  ver change.  It 
cbe0: 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f  does not need to
cbf0: 20 62 65 20 64 65 73 74 72 6f 79 65 64 2e 20 20   be destroyed.  
cc00: 54 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 54  The .** SQLITE_T
cc10: 52 41 4e 53 49 45 4e 54 20 76 61 6c 75 65 20 6d  RANSIENT value m
cc20: 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 63 6f  eans that the co
cc30: 6e 74 65 6e 74 20 77 69 6c 6c 20 6c 69 6b 65 6c  ntent will likel
cc40: 79 20 63 68 61 6e 67 65 20 69 6e 0a 2a 2a 20 74  y change in.** t
cc50: 68 65 20 6e 65 61 72 20 66 75 74 75 72 65 20 61  he near future a
cc60: 6e 64 20 74 68 61 74 20 53 51 4c 69 74 65 20 73  nd that SQLite s
cc70: 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 73 20 6f  hould make its o
cc80: 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20  wn private copy 
cc90: 6f 66 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65 6e  of.** the conten
cca0: 74 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69  t before returni
ccb0: 6e 67 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ng..*/.#define S
ccc0: 51 4c 49 54 45 5f 53 54 41 54 49 43 20 20 20 20  QLITE_STATIC    
ccd0: 20 20 28 28 76 6f 69 64 28 2a 29 28 76 6f 69 64    ((void(*)(void
cce0: 20 2a 29 29 30 29 0a 23 64 65 66 69 6e 65 20 53   *))0).#define S
ccf0: 51 4c 49 54 45 5f 54 52 41 4e 53 49 45 4e 54 20  QLITE_TRANSIENT 
cd00: 20 20 28 28 76 6f 69 64 28 2a 29 28 76 6f 69 64    ((void(*)(void
cd10: 20 2a 29 29 2d 31 29 0a 0a 2f 2a 0a 2a 2a 20 55   *))-1)../*.** U
cd20: 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63  ser-defined func
cd30: 74 69 6f 6e 73 20 69 6e 76 6f 6b 65 20 74 68 65  tions invoke the
cd40: 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69   following routi
cd50: 6e 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a  nes in order to.
cd60: 2a 2a 20 73 65 74 20 74 68 65 69 72 20 72 65 74  ** set their ret
cd70: 75 72 6e 20 76 61 6c 75 65 2e 0a 2a 2f 0a 76 6f  urn value..*/.vo
cd80: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
cd90: 74 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 63  t_blob(sqlite3_c
cda0: 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76  ontext*, const v
cdb0: 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 28  oid*, int, void(
cdc0: 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64  *)(void*));.void
cdd0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
cde0: 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 63  double(sqlite3_c
cdf0: 6f 6e 74 65 78 74 2a 2c 20 64 6f 75 62 6c 65 29  ontext*, double)
ce00: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
ce10: 65 73 75 6c 74 5f 65 72 72 6f 72 28 73 71 6c 69  esult_error(sqli
ce20: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f  te3_context*, co
ce30: 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74 29 3b  nst char*, int);
ce40: 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65  .void sqlite3_re
ce50: 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 73 71 6c  sult_error16(sql
ce60: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63  ite3_context*, c
ce70: 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 29  onst void*, int)
ce80: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
ce90: 65 73 75 6c 74 5f 69 6e 74 28 73 71 6c 69 74 65  esult_int(sqlite
cea0: 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 29  3_context*, int)
ceb0: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
cec0: 65 73 75 6c 74 5f 69 6e 74 36 34 28 73 71 6c 69  esult_int64(sqli
ced0: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 73 71  te3_context*, sq
cee0: 6c 69 74 65 5f 69 6e 74 36 34 29 3b 0a 76 6f 69  lite_int64);.voi
cef0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
cf00: 5f 6e 75 6c 6c 28 73 71 6c 69 74 65 33 5f 63 6f  _null(sqlite3_co
cf10: 6e 74 65 78 74 2a 29 3b 0a 76 6f 69 64 20 73 71  ntext*);.void sq
cf20: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
cf30: 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t(sqlite3_contex
cf40: 74 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c  t*, const char*,
cf50: 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f   int, void(*)(vo
cf60: 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c 69  id*));.void sqli
cf70: 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
cf80: 36 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  6(sqlite3_contex
cf90: 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  t*, const void*,
cfa0: 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f   int, void(*)(vo
cfb0: 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c 69  id*));.void sqli
cfc0: 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
cfd0: 36 6c 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  6le(sqlite3_cont
cfe0: 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64  ext*, const void
cff0: 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29 28 76  *, int,void(*)(v
d000: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
d010: 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
d020: 31 36 62 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e  16be(sqlite3_con
d030: 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69  text*, const voi
d040: 64 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29 28  d*, int,void(*)(
d050: 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71  void*));.void sq
d060: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c  lite3_result_val
d070: 75 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  ue(sqlite3_conte
d080: 78 74 2a 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c  xt*, sqlite3_val
d090: 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  ue*);../*.** The
d0a0: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
d0b0: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
d0c0: 65 20 65 54 65 78 74 52 65 70 20 61 72 67 75 6d  e eTextRep argum
d0d0: 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ent to.** sqlite
d0e0: 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
d0f0: 6f 6e 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63  on and sqlite3_c
d100: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 2e 0a  reate_function..
d110: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d120: 45 5f 55 54 46 38 20 20 20 20 20 20 20 20 20 20  E_UTF8          
d130: 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   1.#define SQLIT
d140: 45 5f 55 54 46 31 36 4c 45 20 20 20 20 20 20 20  E_UTF16LE       
d150: 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   2.#define SQLIT
d160: 45 5f 55 54 46 31 36 42 45 20 20 20 20 20 20 20  E_UTF16BE       
d170: 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   3.#define SQLIT
d180: 45 5f 55 54 46 31 36 20 20 20 20 20 20 20 20 20  E_UTF16         
d190: 20 34 20 20 20 20 2f 2a 20 55 73 65 20 6e 61 74   4    /* Use nat
d1a0: 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 20 2a  ive byte order *
d1b0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
d1c0: 5f 41 4e 59 20 20 20 20 20 20 20 20 20 20 20 20  _ANY            
d1d0: 35 20 20 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f  5    /* sqlite3_
d1e0: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 20  create_function 
d1f0: 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20  only */.#define 
d200: 53 51 4c 49 54 45 5f 55 54 46 31 36 5f 41 4c 49  SQLITE_UTF16_ALI
d210: 47 4e 45 44 20 20 38 20 20 20 20 2f 2a 20 73 71  GNED  8    /* sq
d220: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
d230: 6c 61 74 69 6f 6e 20 6f 6e 6c 79 20 2a 2f 0a 0a  lation only */..
d240: 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 74 77 6f 20  /*.** These two 
d250: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 75 73  functions are us
d260: 65 64 20 74 6f 20 61 64 64 20 6e 65 77 20 63 6f  ed to add new co
d270: 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
d280: 73 20 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c 69  s to the.** sqli
d290: 74 65 33 20 68 61 6e 64 6c 65 20 73 70 65 63 69  te3 handle speci
d2a0: 66 69 65 64 20 61 73 20 74 68 65 20 66 69 72 73  fied as the firs
d2b0: 74 20 61 72 67 75 6d 65 6e 74 2e 20 0a 2a 2a 0a  t argument. .**.
d2c0: 2a 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  ** The name of t
d2d0: 68 65 20 6e 65 77 20 63 6f 6c 6c 61 74 69 6f 6e  he new collation
d2e0: 20 73 65 71 75 65 6e 63 65 20 69 73 20 73 70 65   sequence is spe
d2f0: 63 69 66 69 65 64 20 61 73 20 61 20 55 54 46 2d  cified as a UTF-
d300: 38 20 73 74 72 69 6e 67 0a 2a 2a 20 66 6f 72 20  8 string.** for 
d310: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63  sqlite3_create_c
d320: 6f 6c 6c 61 74 69 6f 6e 28 29 20 61 6e 64 20 61  ollation() and a
d330: 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67 20 66   UTF-16 string f
d340: 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72  or.** sqlite3_cr
d350: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36  eate_collation16
d360: 28 29 2e 20 49 6e 20 62 6f 74 68 20 63 61 73 65  (). In both case
d370: 73 20 74 68 65 20 6e 61 6d 65 20 69 73 20 70 61  s the name is pa
d380: 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a 20 73  ssed as the.** s
d390: 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20 61  econd function a
d3a0: 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54  rgument..**.** T
d3b0: 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
d3c0: 74 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f 66  t must be one of
d3d0: 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 20 53   the constants S
d3e0: 51 4c 49 54 45 5f 55 54 46 38 2c 0a 2a 2a 20 53  QLITE_UTF8,.** S
d3f0: 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 20 6f 72  QLITE_UTF16LE or
d400: 20 53 51 4c 49 54 45 5f 55 54 46 31 36 42 45 2c   SQLITE_UTF16BE,
d410: 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74   indicating that
d420: 20 74 68 65 20 75 73 65 72 2d 73 75 70 70 6c 69   the user-suppli
d430: 65 64 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 65 78  ed.** routine ex
d440: 70 65 63 74 73 20 74 6f 20 62 65 20 70 61 73 73  pects to be pass
d450: 65 64 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73  ed pointers to s
d460: 74 72 69 6e 67 73 20 65 6e 63 6f 64 65 64 20 75  trings encoded u
d470: 73 69 6e 67 20 55 54 46 2d 38 2c 0a 2a 2a 20 55  sing UTF-8,.** U
d480: 54 46 2d 31 36 20 6c 69 74 74 6c 65 2d 65 6e 64  TF-16 little-end
d490: 69 61 6e 20 6f 72 20 55 54 46 2d 31 36 20 62 69  ian or UTF-16 bi
d4a0: 67 2d 65 6e 64 69 61 6e 20 72 65 73 70 65 63 74  g-endian respect
d4b0: 69 76 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 20 70  ively..**.** A p
d4c0: 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 75 73  ointer to the us
d4d0: 65 72 20 73 75 70 70 6c 69 65 64 20 72 6f 75 74  er supplied rout
d4e0: 69 6e 65 20 6d 75 73 74 20 62 65 20 70 61 73 73  ine must be pass
d4f0: 65 64 20 61 73 20 74 68 65 20 66 69 66 74 68 0a  ed as the fifth.
d500: 2a 2a 20 61 72 67 75 6d 65 6e 74 2e 20 49 66 20  ** argument. If 
d510: 69 74 20 69 73 20 4e 55 4c 4c 2c 20 74 68 69 73  it is NULL, this
d520: 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20   is the same as 
d530: 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f 6c  deleting the col
d540: 6c 61 74 69 6f 6e 0a 2a 2a 20 73 65 71 75 65 6e  lation.** sequen
d550: 63 65 20 28 73 6f 20 74 68 61 74 20 53 51 4c 69  ce (so that SQLi
d560: 74 65 20 63 61 6e 6e 6f 74 20 63 61 6c 6c 20 69  te cannot call i
d570: 74 20 61 6e 79 6d 6f 72 65 29 2e 20 45 61 63 68  t anymore). Each
d580: 20 74 69 6d 65 20 74 68 65 20 75 73 65 72 0a 2a   time the user.*
d590: 2a 20 73 75 70 70 6c 69 65 64 20 66 75 6e 63 74  * supplied funct
d5a0: 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  ion is invoked, 
d5b0: 69 74 20 69 73 20 70 61 73 73 65 64 20 61 20 63  it is passed a c
d5c0: 6f 70 79 20 6f 66 20 74 68 65 20 76 6f 69 64 2a  opy of the void*
d5d0: 20 70 61 73 73 65 64 20 61 73 0a 2a 2a 20 74 68   passed as.** th
d5e0: 65 20 66 6f 75 72 74 68 20 61 72 67 75 6d 65 6e  e fourth argumen
d5f0: 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 72 65  t to sqlite3_cre
d600: 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29 20  ate_collation() 
d610: 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72  or.** sqlite3_cr
d620: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36  eate_collation16
d630: 28 29 20 61 73 20 69 74 73 20 66 69 72 73 74 20  () as its first 
d640: 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a  parameter..**.**
d650: 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 61   The remaining a
d660: 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20  rguments to the 
d670: 75 73 65 72 2d 73 75 70 70 6c 69 65 64 20 72 6f  user-supplied ro
d680: 75 74 69 6e 65 20 61 72 65 20 74 77 6f 20 73 74  utine are two st
d690: 72 69 6e 67 73 2c 0a 2a 2a 20 65 61 63 68 20 72  rings,.** each r
d6a0: 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61 20  epresented by a 
d6b0: 5b 6c 65 6e 67 74 68 2c 20 64 61 74 61 5d 20 70  [length, data] p
d6c0: 61 69 72 20 61 6e 64 20 65 6e 63 6f 64 65 64 20  air and encoded 
d6d0: 69 6e 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 0a  in the encoding.
d6e0: 2a 2a 20 74 68 61 74 20 77 61 73 20 70 61 73 73  ** that was pass
d6f0: 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64 20  ed as the third 
d700: 61 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 74 68  argument when th
d710: 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  e collation sequ
d720: 65 6e 63 65 20 77 61 73 0a 2a 2a 20 72 65 67 69  ence was.** regi
d730: 73 74 65 72 65 64 2e 20 54 68 65 20 75 73 65 72  stered. The user
d740: 20 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c 64 20   routine should 
d750: 72 65 74 75 72 6e 20 6e 65 67 61 74 69 76 65 2c  return negative,
d760: 20 7a 65 72 6f 20 6f 72 20 70 6f 73 69 74 69 76   zero or positiv
d770: 65 20 69 66 0a 2a 2a 20 74 68 65 20 66 69 72 73  e if.** the firs
d780: 74 20 73 74 72 69 6e 67 20 69 73 20 6c 65 73 73  t string is less
d790: 20 74 68 61 6e 2c 20 65 71 75 61 6c 20 74 6f 2c   than, equal to,
d7a0: 20 6f 72 20 67 72 65 61 74 65 72 20 74 68 61 6e   or greater than
d7b0: 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 73   the second.** s
d7c0: 74 72 69 6e 67 2e 20 69 2e 65 2e 20 28 53 54 52  tring. i.e. (STR
d7d0: 49 4e 47 31 20 2d 20 53 54 52 49 4e 47 32 29 2e  ING1 - STRING2).
d7e0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
d7f0: 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
d800: 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20  (.  sqlite3*, . 
d810: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
d820: 6d 65 2c 20 0a 20 20 69 6e 74 20 65 54 65 78 74  me, .  int eText
d830: 52 65 70 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20  Rep, .  void*,. 
d840: 20 69 6e 74 28 2a 78 43 6f 6d 70 61 72 65 29 28   int(*xCompare)(
d850: 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20  void*,int,const 
d860: 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20  void*,int,const 
d870: 76 6f 69 64 2a 29 0a 29 3b 0a 69 6e 74 20 73 71  void*).);.int sq
d880: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
d890: 6c 61 74 69 6f 6e 31 36 28 0a 20 20 73 71 6c 69  lation16(.  sqli
d8a0: 74 65 33 2a 2c 20 0a 20 20 63 6f 6e 73 74 20 63  te3*, .  const c
d8b0: 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 0a 20 20 69  har *zName, .  i
d8c0: 6e 74 20 65 54 65 78 74 52 65 70 2c 20 0a 20 20  nt eTextRep, .  
d8d0: 76 6f 69 64 2a 2c 0a 20 20 69 6e 74 28 2a 78 43  void*,.  int(*xC
d8e0: 6f 6d 70 61 72 65 29 28 76 6f 69 64 2a 2c 69 6e  ompare)(void*,in
d8f0: 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 69 6e  t,const void*,in
d900: 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a 29  t,const void*).)
d910: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 6f 20 61 76 6f 69  ;../*.** To avoi
d920: 64 20 68 61 76 69 6e 67 20 74 6f 20 72 65 67 69  d having to regi
d930: 73 74 65 72 20 61 6c 6c 20 63 6f 6c 6c 61 74 69  ster all collati
d940: 6f 6e 20 73 65 71 75 65 6e 63 65 73 20 62 65 66  on sequences bef
d950: 6f 72 65 20 61 20 64 61 74 61 62 61 73 65 0a 2a  ore a database.*
d960: 2a 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 61  * can be used, a
d970: 20 73 69 6e 67 6c 65 20 63 61 6c 6c 62 61 63 6b   single callback
d980: 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65   function may be
d990: 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74 68   registered with
d9a0: 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65   the.** database
d9b0: 20 68 61 6e 64 6c 65 20 74 6f 20 62 65 20 63 61   handle to be ca
d9c0: 6c 6c 65 64 20 77 68 65 6e 65 76 65 72 20 61 6e  lled whenever an
d9d0: 20 75 6e 64 65 66 69 6e 65 64 20 63 6f 6c 6c 61   undefined colla
d9e0: 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 69 73  tion sequence is
d9f0: 0a 2a 2a 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a  .** required..**
da00: 0a 2a 2a 20 49 66 20 74 68 65 20 66 75 6e 63 74  .** If the funct
da10: 69 6f 6e 20 69 73 20 72 65 67 69 73 74 65 72 65  ion is registere
da20: 64 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69  d using the sqli
da30: 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65  te3_collation_ne
da40: 65 64 65 64 28 29 20 41 50 49 2c 0a 2a 2a 20 74  eded() API,.** t
da50: 68 65 6e 20 69 74 20 69 73 20 70 61 73 73 65 64  hen it is passed
da60: 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 75 6e   the names of un
da70: 64 65 66 69 6e 65 64 20 63 6f 6c 6c 61 74 69 6f  defined collatio
da80: 6e 20 73 65 71 75 65 6e 63 65 73 20 61 73 20 73  n sequences as s
da90: 74 72 69 6e 67 73 0a 2a 2a 20 65 6e 63 6f 64 65  trings.** encode
daa0: 64 20 69 6e 20 55 54 46 2d 38 2e 20 49 66 20 73  d in UTF-8. If s
dab0: 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e  qlite3_collation
dac0: 5f 6e 65 65 64 65 64 31 36 28 29 20 69 73 20 75  _needed16() is u
dad0: 73 65 64 2c 20 74 68 65 20 6e 61 6d 65 73 0a 2a  sed, the names.*
dae0: 2a 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  * are passed as 
daf0: 55 54 46 2d 31 36 20 69 6e 20 6d 61 63 68 69 6e  UTF-16 in machin
db00: 65 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72  e native byte or
db10: 64 65 72 2e 20 41 20 63 61 6c 6c 20 74 6f 20 65  der. A call to e
db20: 69 74 68 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f  ither.** functio
db30: 6e 20 72 65 70 6c 61 63 65 73 20 61 6e 79 20 65  n replaces any e
db40: 78 69 73 74 69 6e 67 20 63 61 6c 6c 62 61 63 6b  xisting callback
db50: 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65  ..**.** When the
db60: 20 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e 20 69   user-function i
db70: 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65 20 66  s invoked, the f
db80: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 70 61  irst argument pa
db90: 73 73 65 64 20 69 73 20 61 20 63 6f 70 79 0a 2a  ssed is a copy.*
dba0: 2a 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64 20  * of the second 
dbb0: 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
dbc0: 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65  te3_collation_ne
dbd0: 65 64 65 64 28 29 20 6f 72 0a 2a 2a 20 73 71 6c  eded() or.** sql
dbe0: 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e  ite3_collation_n
dbf0: 65 65 64 65 64 31 36 28 29 2e 20 54 68 65 20 73  eeded16(). The s
dc00: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69  econd argument i
dc10: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a  s the database.*
dc20: 2a 20 68 61 6e 64 6c 65 2e 20 54 68 65 20 74 68  * handle. The th
dc30: 69 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20  ird argument is 
dc40: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 55 54  one of SQLITE_UT
dc50: 46 38 2c 20 53 51 4c 49 54 45 5f 55 54 46 31 36  F8, SQLITE_UTF16
dc60: 42 45 20 6f 72 0a 2a 2a 20 53 51 4c 49 54 45 5f  BE or.** SQLITE_
dc70: 55 54 46 31 36 4c 45 2c 20 69 6e 64 69 63 61 74  UTF16LE, indicat
dc80: 69 6e 67 20 74 68 65 20 6d 6f 73 74 20 64 65 73  ing the most des
dc90: 69 72 61 62 6c 65 20 66 6f 72 6d 20 6f 66 20 74  irable form of t
dca0: 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 0a 2a 2a 20  he collation.** 
dcb0: 73 65 71 75 65 6e 63 65 20 66 75 6e 63 74 69 6f  sequence functio
dcc0: 6e 20 72 65 71 75 69 72 65 64 2e 20 54 68 65 20  n required. The 
dcd0: 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
dce0: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
dcf0: 74 68 65 0a 2a 2a 20 72 65 71 75 69 72 65 64 20  the.** required 
dd00: 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
dd10: 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f  ce..**.** The co
dd20: 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
dd30: 20 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20   is returned to 
dd40: 53 51 4c 69 74 65 20 62 79 20 61 20 63 6f 6c 6c  SQLite by a coll
dd50: 61 74 69 6f 6e 2d 6e 65 65 64 65 64 0a 2a 2a 20  ation-needed.** 
dd60: 63 61 6c 6c 62 61 63 6b 20 75 73 69 6e 67 20 74  callback using t
dd70: 68 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  he sqlite3_creat
dd80: 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29 20 6f 72  e_collation() or
dd90: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72 65 61  .** sqlite3_crea
dda0: 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 28 29  te_collation16()
ddb0: 20 41 50 49 73 2c 20 64 65 73 63 72 69 62 65 64   APIs, described
ddc0: 20 61 62 6f 76 65 2e 0a 2a 2f 0a 69 6e 74 20 73   above..*/.int s
ddd0: 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e  qlite3_collation
dde0: 5f 6e 65 65 64 65 64 28 0a 20 20 73 71 6c 69 74  _needed(.  sqlit
ddf0: 65 33 2a 2c 20 0a 20 20 76 6f 69 64 2a 2c 20 0a  e3*, .  void*, .
de00: 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c    void(*)(void*,
de10: 73 71 6c 69 74 65 33 2a 2c 69 6e 74 20 65 54 65  sqlite3*,int eTe
de20: 78 74 52 65 70 2c 63 6f 6e 73 74 20 63 68 61 72  xtRep,const char
de30: 2a 29 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  *).);.int sqlite
de40: 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65 64  3_collation_need
de50: 65 64 31 36 28 0a 20 20 73 71 6c 69 74 65 33 2a  ed16(.  sqlite3*
de60: 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 76 6f  , .  void*,.  vo
de70: 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71 6c 69  id(*)(void*,sqli
de80: 74 65 33 2a 2c 69 6e 74 20 65 54 65 78 74 52 65  te3*,int eTextRe
de90: 70 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a 29  p,const void*).)
dea0: 3b 0a 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69 66 79  ;../*.** Specify
deb0: 20 74 68 65 20 6b 65 79 20 66 6f 72 20 61 6e 20   the key for an 
dec0: 65 6e 63 72 79 70 74 65 64 20 64 61 74 61 62 61  encrypted databa
ded0: 73 65 2e 20 20 54 68 69 73 20 72 6f 75 74 69 6e  se.  This routin
dee0: 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20 63  e should be.** c
def0: 61 6c 6c 65 64 20 72 69 67 68 74 20 61 66 74 65  alled right afte
df00: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  r sqlite3_open()
df10: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f 64 65  ..**.** The code
df20: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68   to implement th
df30: 69 73 20 41 50 49 20 69 73 20 6e 6f 74 20 61 76  is API is not av
df40: 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 70  ailable in the p
df50: 75 62 6c 69 63 20 72 65 6c 65 61 73 65 0a 2a 2a  ublic release.**
df60: 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69   of SQLite..*/.i
df70: 6e 74 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 0a  nt sqlite3_key(.
df80: 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20    sqlite3 *db,  
df90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfa0: 20 2f 2a 20 44 61 74 61 62 61 73 65 20 74 6f 20   /* Database to 
dfb0: 62 65 20 72 65 6b 65 79 65 64 20 2a 2f 0a 20 20  be rekeyed */.  
dfc0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 4b 65 79  const void *pKey
dfd0: 2c 20 69 6e 74 20 6e 4b 65 79 20 20 20 20 20 2f  , int nKey     /
dfe0: 2a 20 54 68 65 20 6b 65 79 20 2a 2f 0a 29 3b 0a  * The key */.);.
dff0: 0a 2f 2a 0a 2a 2a 20 43 68 61 6e 67 65 20 74 68  ./*.** Change th
e000: 65 20 6b 65 79 20 6f 6e 20 61 6e 20 6f 70 65 6e  e key on an open
e010: 20 64 61 74 61 62 61 73 65 2e 20 20 49 66 20 74   database.  If t
e020: 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61 62  he current datab
e030: 61 73 65 20 69 73 20 6e 6f 74 0a 2a 2a 20 65 6e  ase is not.** en
e040: 63 72 79 70 74 65 64 2c 20 74 68 69 73 20 72 6f  crypted, this ro
e050: 75 74 69 6e 65 20 77 69 6c 6c 20 65 6e 63 72 79  utine will encry
e060: 70 74 20 69 74 2e 20 20 49 66 20 70 4e 65 77 3d  pt it.  If pNew=
e070: 3d 30 20 6f 72 20 6e 4e 65 77 3d 3d 30 2c 20 74  =0 or nNew==0, t
e080: 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 69  he.** database i
e090: 73 20 64 65 63 72 79 70 74 65 64 2e 0a 2a 2a 0a  s decrypted..**.
e0a0: 2a 2a 20 54 68 65 20 63 6f 64 65 20 74 6f 20 69  ** The code to i
e0b0: 6d 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 41 50  mplement this AP
e0c0: 49 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  I is not availab
e0d0: 6c 65 20 69 6e 20 74 68 65 20 70 75 62 6c 69 63  le in the public
e0e0: 20 72 65 6c 65 61 73 65 0a 2a 2a 20 6f 66 20 53   release.** of S
e0f0: 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71  QLite..*/.int sq
e100: 6c 69 74 65 33 5f 72 65 6b 65 79 28 0a 20 20 73  lite3_rekey(.  s
e110: 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20  qlite3 *db,     
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
e130: 20 44 61 74 61 62 61 73 65 20 74 6f 20 62 65 20   Database to be 
e140: 72 65 6b 65 79 65 64 20 2a 2f 0a 20 20 63 6f 6e  rekeyed */.  con
e150: 73 74 20 76 6f 69 64 20 2a 70 4b 65 79 2c 20 69  st void *pKey, i
e160: 6e 74 20 6e 4b 65 79 20 20 20 20 20 2f 2a 20 54  nt nKey     /* T
e170: 68 65 20 6e 65 77 20 6b 65 79 20 2a 2f 0a 29 3b  he new key */.);
e180: 0a 0a 2f 2a 0a 2a 2a 20 53 6c 65 65 70 20 66 6f  ../*.** Sleep fo
e190: 72 20 61 20 6c 69 74 74 6c 65 20 77 68 69 6c 65  r a little while
e1a0: 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72  . The second par
e1b0: 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6e 75  ameter is the nu
e1c0: 6d 62 65 72 20 6f 66 0a 2a 2a 20 6d 69 6c 69 73  mber of.** milis
e1d0: 65 63 6f 6e 64 73 20 74 6f 20 73 6c 65 65 70 20  econds to sleep 
e1e0: 66 6f 72 2e 20 0a 2a 2a 0a 2a 2a 20 49 66 20 74  for. .**.** If t
e1f0: 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
e200: 74 65 6d 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  tem does not sup
e210: 70 6f 72 74 20 73 6c 65 65 70 20 72 65 71 75 65  port sleep reque
e220: 73 74 73 20 77 69 74 68 20 0a 2a 2a 20 6d 69 6c  sts with .** mil
e230: 69 73 65 63 6f 6e 64 20 74 69 6d 65 20 72 65 73  isecond time res
e240: 6f 6c 75 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68  olution, then th
e250: 65 20 74 69 6d 65 20 77 69 6c 6c 20 62 65 20 72  e time will be r
e260: 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 0a 2a 2a  ounded up to .**
e270: 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65 63   the nearest sec
e280: 6f 6e 64 2e 20 54 68 65 20 6e 75 6d 62 65 72 20  ond. The number 
e290: 6f 66 20 6d 69 6c 69 73 65 63 6f 6e 64 73 20 6f  of miliseconds o
e2a0: 66 20 73 6c 65 65 70 20 61 63 74 75 61 6c 6c 79  f sleep actually
e2b0: 20 0a 2a 2a 20 72 65 71 75 65 73 74 65 64 20 66   .** requested f
e2c0: 72 6f 6d 20 74 68 65 20 6f 70 65 72 61 74 69 6e  rom the operatin
e2d0: 67 20 73 79 73 74 65 6d 20 69 73 20 72 65 74 75  g system is retu
e2e0: 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  rned..*/.int sql
e2f0: 69 74 65 33 5f 73 6c 65 65 70 28 69 6e 74 29 3b  ite3_sleep(int);
e300: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 54  ../*.** Return T
e310: 52 55 45 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69  RUE (non-zero) i
e320: 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
e330: 73 75 70 70 6c 69 65 64 20 61 73 20 61 6e 20 61  supplied as an a
e340: 72 67 75 6d 65 6e 74 20 6e 65 65 64 73 0a 2a 2a  rgument needs.**
e350: 20 74 6f 20 62 65 20 72 65 63 6f 6d 70 69 6c 65   to be recompile
e360: 64 2e 20 20 41 20 73 74 61 74 65 6d 65 6e 74 20  d.  A statement 
e370: 6e 65 65 64 73 20 74 6f 20 62 65 20 72 65 63 6f  needs to be reco
e380: 6d 70 69 6c 65 64 20 77 68 65 6e 65 76 65 72 20  mpiled whenever 
e390: 74 68 65 0a 2a 2a 20 65 78 65 63 75 74 69 6f 6e  the.** execution
e3a0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 63 68 61   environment cha
e3b0: 6e 67 65 73 20 69 6e 20 61 20 77 61 79 20 74 68  nges in a way th
e3c0: 61 74 20 77 6f 75 6c 64 20 61 6c 74 65 72 20 74  at would alter t
e3d0: 68 65 20 70 72 6f 67 72 61 6d 0a 2a 2a 20 74 68  he program.** th
e3e0: 61 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  at sqlite3_prepa
e3f0: 72 65 28 29 20 67 65 6e 65 72 61 74 65 73 2e 20  re() generates. 
e400: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66   For example, if
e410: 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20 6f   new functions o
e420: 72 0a 2a 2a 20 63 6f 6c 6c 61 74 69 6e 67 20 73  r.** collating s
e430: 65 71 75 65 6e 63 65 73 20 61 72 65 20 72 65 67  equences are reg
e440: 69 73 74 65 72 65 64 20 6f 72 20 69 66 20 61 6e  istered or if an
e450: 20 61 75 74 68 6f 72 69 7a 65 72 20 66 75 6e 63   authorizer func
e460: 74 69 6f 6e 20 69 73 0a 2a 2a 20 61 64 64 65 64  tion is.** added
e470: 20 6f 72 20 63 68 61 6e 67 65 64 2e 0a 2a 2a 0a   or changed..**.
e480: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 65  */.int sqlite3_e
e490: 78 70 69 72 65 64 28 73 71 6c 69 74 65 33 5f 73  xpired(sqlite3_s
e4a0: 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 4d 6f  tmt*);../*.** Mo
e4b0: 76 65 20 61 6c 6c 20 62 69 6e 64 69 6e 67 73 20  ve all bindings 
e4c0: 66 72 6f 6d 20 74 68 65 20 66 69 72 73 74 20 70  from the first p
e4d0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
e4e0: 74 20 6f 76 65 72 20 74 6f 20 74 68 65 20 73 65  t over to the se
e4f0: 63 6f 6e 64 2e 0a 2a 2a 20 54 68 69 73 20 72 6f  cond..** This ro
e500: 75 74 69 6e 65 20 69 73 20 75 73 65 66 75 6c 2c  utine is useful,
e510: 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66   for example, if
e520: 20 74 68 65 20 66 69 72 73 74 20 70 72 65 70 61   the first prepa
e530: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  red statement.**
e540: 20 66 61 69 6c 73 20 77 69 74 68 20 61 6e 20 53   fails with an S
e550: 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 65 72 72  QLITE_SCHEMA err
e560: 6f 72 2e 20 20 54 68 65 20 73 61 6d 65 20 53 51  or.  The same SQ
e570: 4c 20 63 61 6e 20 62 65 20 70 72 65 70 61 72 65  L can be prepare
e580: 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73 65  d into.** the se
e590: 63 6f 6e 64 20 70 72 65 70 61 72 65 64 20 73 74  cond prepared st
e5a0: 61 74 65 6d 65 6e 74 20 74 68 65 6e 20 61 6c 6c  atement then all
e5b0: 20 6f 66 20 74 68 65 20 62 69 6e 64 69 6e 67 73   of the bindings
e5c0: 20 74 72 61 6e 73 66 65 72 65 64 20 6f 76 65 72   transfered over
e5d0: 0a 2a 2a 20 74 6f 20 74 68 65 20 73 65 63 6f 6e  .** to the secon
e5e0: 64 20 73 74 61 74 65 6d 65 6e 74 20 62 65 66 6f  d statement befo
e5f0: 72 65 20 74 68 65 20 66 69 72 73 74 20 73 74 61  re the first sta
e600: 74 65 6d 65 6e 74 20 69 73 20 66 69 6e 61 6c 69  tement is finali
e610: 7a 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  zed..*/.int sqli
e620: 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69 6e  te3_transfer_bin
e630: 64 69 6e 67 73 28 73 71 6c 69 74 65 33 5f 73 74  dings(sqlite3_st
e640: 6d 74 2a 2c 20 73 71 6c 69 74 65 33 5f 73 74 6d  mt*, sqlite3_stm
e650: 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 74  t*);../*.** If t
e660: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67 6c 6f  he following glo
e670: 62 61 6c 20 76 61 72 69 61 62 6c 65 20 69 73 20  bal variable is 
e680: 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f  made to point to
e690: 20 61 0a 2a 2a 20 73 74 72 69 6e 67 20 77 68 69   a.** string whi
e6a0: 63 68 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  ch is the name o
e6b0: 66 20 61 20 64 69 72 65 63 74 6f 72 79 2c 20 74  f a directory, t
e6c0: 68 65 6e 20 61 6c 6c 20 74 65 6d 70 6f 72 61 72  hen all temporar
e6d0: 79 20 66 69 6c 65 73 0a 2a 2a 20 63 72 65 61 74  y files.** creat
e6e0: 65 64 20 62 79 20 53 51 4c 69 74 65 20 77 69 6c  ed by SQLite wil
e6f0: 6c 20 62 65 20 70 6c 61 63 65 64 20 69 6e 20 74  l be placed in t
e700: 68 61 74 20 64 69 72 65 63 74 6f 72 79 2e 20 20  hat directory.  
e710: 49 66 20 74 68 69 73 20 76 61 72 69 61 62 6c 65  If this variable
e720: 0a 2a 2a 20 69 73 20 4e 55 4c 4c 20 70 6f 69 6e  .** is NULL poin
e730: 74 65 72 2c 20 74 68 65 6e 20 53 51 4c 69 74 65  ter, then SQLite
e740: 20 64 6f 65 73 20 61 20 73 65 61 72 63 68 20 66   does a search f
e750: 6f 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  or an appropriat
e760: 65 20 74 65 6d 70 6f 72 61 72 79 0a 2a 2a 20 66  e temporary.** f
e770: 69 6c 65 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a  ile directory..*
e780: 2a 0a 2a 2a 20 4f 6e 63 65 20 73 71 6c 69 74 65  *.** Once sqlite
e790: 33 5f 6f 70 65 6e 28 29 20 68 61 73 20 62 65 65  3_open() has bee
e7a0: 6e 20 63 61 6c 6c 65 64 2c 20 63 68 61 6e 67 69  n called, changi
e7b0: 6e 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65  ng this variable
e7c0: 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65   will invalidate
e7d0: 0a 2a 2a 20 74 68 65 20 63 75 72 72 65 6e 74 20  .** the current 
e7e0: 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61  temporary databa
e7f0: 73 65 2c 20 69 66 20 61 6e 79 2e 0a 2a 2f 0a 65  se, if any..*/.e
e800: 78 74 65 72 6e 20 63 68 61 72 20 2a 73 71 6c 69  xtern char *sqli
e810: 74 65 33 5f 74 65 6d 70 5f 64 69 72 65 63 74 6f  te3_temp_directo
e820: 72 79 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20  ry;../*.** This 
e830: 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c  function is call
e840: 65 64 20 74 6f 20 72 65 63 6f 76 65 72 20 66 72  ed to recover fr
e850: 6f 6d 20 61 20 6d 61 6c 6c 6f 63 28 29 20 66 61  om a malloc() fa
e860: 69 6c 75 72 65 20 74 68 61 74 20 6f 63 63 75 72  ilure that occur
e870: 65 64 0a 2a 2a 20 77 69 74 68 69 6e 20 74 68 65  ed.** within the
e880: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
e890: 20 4e 6f 72 6d 61 6c 6c 79 2c 20 61 66 74 65 72   Normally, after
e8a0: 20 61 20 73 69 6e 67 6c 65 20 6d 61 6c 6c 6f 63   a single malloc
e8b0: 28 29 20 66 61 69 6c 73 20 74 68 65 20 0a 2a 2a  () fails the .**
e8c0: 20 6c 69 62 72 61 72 79 20 72 65 66 75 73 65 73   library refuses
e8d0: 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20 28 61 6c   to function (al
e8e0: 6c 20 6d 61 6a 6f 72 20 63 61 6c 6c 73 20 72 65  l major calls re
e8f0: 74 75 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45  turn SQLITE_NOME
e900: 4d 29 2e 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63  M)..** This func
e910: 74 69 6f 6e 20 72 65 73 74 6f 72 65 73 20 74 68  tion restores th
e920: 65 20 6c 69 62 72 61 72 79 20 73 74 61 74 65 20  e library state 
e930: 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20 62  so that it can b
e940: 65 20 75 73 65 64 20 61 67 61 69 6e 2e 0a 2a 2a  e used again..**
e950: 0a 2a 2a 20 41 6c 6c 20 65 78 69 73 74 69 6e 67  .** All existing
e960: 20 73 74 61 74 65 6d 65 6e 74 73 20 28 73 71 6c   statements (sql
e970: 69 74 65 33 5f 73 74 6d 74 20 70 6f 69 6e 74 65  ite3_stmt pointe
e980: 72 73 29 20 6d 75 73 74 20 62 65 20 66 69 6e 61  rs) must be fina
e990: 6c 69 7a 65 64 20 6f 72 0a 2a 2a 20 72 65 73 65  lized or.** rese
e9a0: 74 20 62 65 66 6f 72 65 20 74 68 69 73 20 63 61  t before this ca
e9b0: 6c 6c 20 69 73 20 6d 61 64 65 2e 20 4f 74 68 65  ll is made. Othe
e9c0: 72 77 69 73 65 2c 20 53 51 4c 49 54 45 5f 42 55  rwise, SQLITE_BU
e9d0: 53 59 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a  SY is returned..
e9e0: 2a 2a 20 49 66 20 61 6e 79 20 69 6e 2d 6d 65 6d  ** If any in-mem
e9f0: 6f 72 79 20 64 61 74 61 62 61 73 65 73 20 61 72  ory databases ar
ea00: 65 20 69 6e 20 75 73 65 2c 20 65 69 74 68 65 72  e in use, either
ea10: 20 61 73 20 61 20 6d 61 69 6e 20 6f 72 20 54 45   as a main or TE
ea20: 4d 50 0a 2a 2a 20 64 61 74 61 62 61 73 65 2c 20  MP.** database, 
ea30: 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 73 20  SQLITE_ERROR is 
ea40: 72 65 74 75 72 6e 65 64 2e 20 49 6e 20 65 69 74  returned. In eit
ea50: 68 65 72 20 6f 66 20 74 68 65 73 65 20 63 61 73  her of these cas
ea60: 65 73 2c 20 74 68 65 20 0a 2a 2a 20 6c 69 62 72  es, the .** libr
ea70: 61 72 79 20 69 73 20 6e 6f 74 20 72 65 73 65 74  ary is not reset
ea80: 20 61 6e 64 20 72 65 6d 61 69 6e 73 20 75 6e 75   and remains unu
ea90: 73 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  sable..**.** Thi
eaa0: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 2a 6e  s function is *n
eab0: 6f 74 2a 20 74 68 72 65 61 64 73 61 66 65 2e 20  ot* threadsafe. 
eac0: 43 61 6c 6c 69 6e 67 20 74 68 69 73 20 66 72 6f  Calling this fro
ead0: 6d 20 77 69 74 68 69 6e 20 61 20 74 68 72 65 61  m within a threa
eae0: 64 65 64 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69  ded.** applicati
eaf0: 6f 6e 20 77 68 65 6e 20 74 68 72 65 61 64 73 20  on when threads 
eb00: 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 63  other than the c
eb10: 61 6c 6c 65 72 20 68 61 76 65 20 75 73 65 64 20  aller have used 
eb20: 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20 64 61 6e  SQLite is.** dan
eb30: 67 65 72 6f 75 73 20 61 6e 64 20 77 69 6c 6c 20  gerous and will 
eb40: 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79  almost certainly
eb50: 20 72 65 73 75 6c 74 20 69 6e 20 6d 61 6c 66 75   result in malfu
eb60: 6e 63 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54  nctions..**.** T
eb70: 68 69 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  his functionalit
eb80: 79 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65 64  y can be omitted
eb90: 20 66 72 6f 6d 20 61 20 62 75 69 6c 64 20 62 79   from a build by
eba0: 20 64 65 66 69 6e 69 6e 67 20 74 68 65 20 0a 2a   defining the .*
ebb0: 2a 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 4c  * SQLITE_OMIT_GL
ebc0: 4f 42 41 4c 52 45 43 4f 56 45 52 20 61 74 20 63  OBALRECOVER at c
ebd0: 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 2a 2f 0a  ompile time..*/.
ebe0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 6c 6f 62  int sqlite3_glob
ebf0: 61 6c 5f 72 65 63 6f 76 65 72 28 76 6f 69 64 29  al_recover(void)
ec00: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 65 73 74 20 74 6f  ;../*.** Test to
ec10: 20 73 65 65 20 77 68 65 74 68 65 72 20 6f 72 20   see whether or 
ec20: 6e 6f 74 20 74 68 65 20 64 61 74 61 62 61 73 65  not the database
ec30: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69   connection is i
ec40: 6e 20 61 75 74 6f 63 6f 6d 6d 69 74 0a 2a 2a 20  n autocommit.** 
ec50: 6d 6f 64 65 2e 20 20 52 65 74 75 72 6e 20 54 52  mode.  Return TR
ec60: 55 45 20 69 66 20 69 74 20 69 73 20 61 6e 64 20  UE if it is and 
ec70: 46 41 4c 53 45 20 69 66 20 6e 6f 74 2e 20 20 41  FALSE if not.  A
ec80: 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20 69  utocommit mode i
ec90: 73 20 6f 6e 0a 2a 2a 20 62 79 20 64 65 66 61 75  s on.** by defau
eca0: 6c 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20  lt.  Autocommit 
ecb0: 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 61  is disabled by a
ecc0: 20 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74   BEGIN statement
ecd0: 20 61 6e 64 20 72 65 65 6e 61 62 6c 65 64 0a 2a   and reenabled.*
ece0: 2a 20 62 79 20 74 68 65 20 6e 65 78 74 20 43 4f  * by the next CO
ecf0: 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b  MMIT or ROLLBACK
ed00: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
ed10: 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
ed20: 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a  sqlite3*);../*.*
ed30: 2a 20 52 65 74 75 72 6e 20 74 68 65 20 73 71 6c  * Return the sql
ed40: 69 74 65 33 2a 20 64 61 74 61 62 61 73 65 20 68  ite3* database h
ed50: 61 6e 64 6c 65 20 74 6f 20 77 68 69 63 68 20 74  andle to which t
ed60: 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
ed70: 65 6d 65 6e 74 20 67 69 76 65 6e 0a 2a 2a 20 69  ement given.** i
ed80: 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 62  n the argument b
ed90: 65 6c 6f 6e 67 73 2e 20 20 54 68 69 73 20 69 73  elongs.  This is
eda0: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
edb0: 73 65 20 68 61 6e 64 6c 65 20 74 68 61 74 20 77  se handle that w
edc0: 61 73 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20  as.** the first 
edd0: 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20  argument to the 
ede0: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
edf0: 29 20 74 68 61 74 20 77 61 73 20 75 73 65 64 20  ) that was used 
ee00: 74 6f 20 63 72 65 61 74 65 0a 2a 2a 20 74 68 65  to create.** the
ee10: 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 74 68   statement in th
ee20: 65 20 66 69 72 73 74 20 70 6c 61 63 65 2e 0a 2a  e first place..*
ee30: 2f 0a 73 71 6c 69 74 65 33 20 2a 73 71 6c 69 74  /.sqlite3 *sqlit
ee40: 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 73 71 6c  e3_db_handle(sql
ee50: 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a  ite3_stmt*);../*
ee60: 0a 2a 2a 20 52 65 67 69 73 74 65 72 20 61 20 63  .** Register a c
ee70: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
ee80: 20 77 69 74 68 20 74 68 65 20 64 61 74 61 62 61   with the databa
ee90: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 64  se connection id
eea0: 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20  entified by the 
eeb0: 0a 2a 2a 20 66 69 72 73 74 20 61 72 67 75 6d 65  .** first argume
eec0: 6e 74 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64  nt to be invoked
eed0: 20 77 68 65 6e 65 76 65 72 20 61 20 72 6f 77 20   whenever a row 
eee0: 69 73 20 75 70 64 61 74 65 64 2c 20 69 6e 73 65  is updated, inse
eef0: 72 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 2e  rted or deleted.
ef00: 0a 2a 2a 20 41 6e 79 20 63 61 6c 6c 62 61 63 6b  .** Any callback
ef10: 20 73 65 74 20 62 79 20 61 20 70 72 65 76 69 6f   set by a previo
ef20: 75 73 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20  us call to this 
ef30: 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68 65  function for the
ef40: 20 73 61 6d 65 20 0a 2a 2a 20 64 61 74 61 62 61   same .** databa
ef50: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
ef60: 20 6f 76 65 72 72 69 64 64 65 6e 2e 0a 2a 2a 0a   overridden..**.
ef70: 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72  ** The second ar
ef80: 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e  gument is a poin
ef90: 74 65 72 20 74 6f 20 74 68 65 20 66 75 6e 63 74  ter to the funct
efa0: 69 6f 6e 20 74 6f 20 69 6e 76 6f 6b 65 20 77 68  ion to invoke wh
efb0: 65 6e 20 61 20 0a 2a 2a 20 72 6f 77 20 69 73 20  en a .** row is 
efc0: 75 70 64 61 74 65 64 2c 20 69 6e 73 65 72 74 65  updated, inserte
efd0: 64 20 6f 72 20 64 65 6c 65 74 65 64 2e 20 54 68  d or deleted. Th
efe0: 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
eff0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
f000: 20 69 73 0a 2a 2a 20 61 20 63 6f 70 79 20 6f 66   is.** a copy of
f010: 20 74 68 65 20 74 68 69 72 64 20 61 72 67 75 6d   the third argum
f020: 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 75  ent to sqlite3_u
f030: 70 64 61 74 65 5f 68 6f 6f 6b 2e 20 54 68 65 20  pdate_hook. The 
f040: 73 65 63 6f 6e 64 20 63 61 6c 6c 62 61 63 6b 20  second callback 
f050: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73 20  .** argument is 
f060: 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e  one of SQLITE_IN
f070: 53 45 52 54 2c 20 53 51 4c 49 54 45 5f 44 45 4c  SERT, SQLITE_DEL
f080: 45 54 45 20 6f 72 20 53 51 4c 49 54 45 5f 55 50  ETE or SQLITE_UP
f090: 44 41 54 45 2c 20 64 65 70 65 6e 64 69 6e 67 0a  DATE, depending.
f0a0: 2a 2a 20 6f 6e 20 74 68 65 20 6f 70 65 72 61 74  ** on the operat
f0b0: 69 6f 6e 20 74 68 61 74 20 63 61 75 73 65 64 20  ion that caused 
f0c0: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20  the callback to 
f0d0: 62 65 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65 20  be invoked. The 
f0e0: 74 68 69 72 64 20 61 6e 64 20 0a 2a 2a 20 66 6f  third and .** fo
f0f0: 75 72 74 68 20 61 72 67 75 6d 65 6e 74 73 20 74  urth arguments t
f100: 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 63  o the callback c
f110: 6f 6e 74 61 69 6e 20 70 6f 69 6e 74 65 72 73 20  ontain pointers 
f120: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
f130: 61 6e 64 20 0a 2a 2a 20 74 61 62 6c 65 20 6e 61  and .** table na
f140: 6d 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  me containing th
f150: 65 20 61 66 66 65 63 74 65 64 20 72 6f 77 2e 20  e affected row. 
f160: 54 68 65 20 66 69 6e 61 6c 20 63 61 6c 6c 62 61  The final callba
f170: 63 6b 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  ck parameter is 
f180: 0a 2a 2a 20 74 68 65 20 72 6f 77 69 64 20 6f 66  .** the rowid of
f190: 20 74 68 65 20 72 6f 77 2e 20 49 6e 20 74 68 65   the row. In the
f1a0: 20 63 61 73 65 20 6f 66 20 61 6e 20 75 70 64 61   case of an upda
f1b0: 74 65 2c 20 74 68 69 73 20 69 73 20 74 68 65 20  te, this is the 
f1c0: 72 6f 77 69 64 20 61 66 74 65 72 20 0a 2a 2a 20  rowid after .** 
f1d0: 74 68 65 20 75 70 64 61 74 65 20 74 61 6b 65 73  the update takes
f1e0: 20 70 6c 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68   place..**.** Th
f1f0: 65 20 75 70 64 61 74 65 20 68 6f 6f 6b 20 69 73  e update hook is
f200: 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 77 68 65   not invoked whe
f210: 6e 20 69 6e 74 65 72 6e 61 6c 20 73 79 73 74 65  n internal syste
f220: 6d 20 74 61 62 6c 65 73 20 61 72 65 0a 2a 2a 20  m tables are.** 
f230: 6d 6f 64 69 66 69 65 64 20 28 69 2e 65 2e 20 73  modified (i.e. s
f240: 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 61 6e 64  qlite_master and
f250: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
f260: 29 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 6f 74  )..**.** If anot
f270: 68 65 72 20 66 75 6e 63 74 69 6f 6e 20 77 61 73  her function was
f280: 20 70 72 65 76 69 6f 75 73 6c 79 20 72 65 67 69   previously regi
f290: 73 74 65 72 65 64 2c 20 69 74 73 20 70 41 72 67  stered, its pArg
f2a0: 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72 6e   value is return
f2b0: 65 64 2e 0a 2a 2a 20 4f 74 68 65 72 77 69 73 65  ed..** Otherwise
f2c0: 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65   NULL is returne
f2d0: 64 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69  d..*/.void *sqli
f2e0: 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28  te3_update_hook(
f2f0: 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20  .  sqlite3*, .  
f300: 76 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 2c 69  void(*)(void *,i
f310: 6e 74 20 2c 63 68 61 72 20 63 6f 6e 73 74 20 2a  nt ,char const *
f320: 2c 63 68 61 72 20 63 6f 6e 73 74 20 2a 2c 73 71  ,char const *,sq
f330: 6c 69 74 65 5f 69 6e 74 36 34 29 2c 0a 20 20 76  lite_int64),.  v
f340: 6f 69 64 2a 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52  oid*.);../*.** R
f350: 65 67 69 73 74 65 72 20 61 20 63 61 6c 6c 62 61  egister a callba
f360: 63 6b 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64  ck to be invoked
f370: 20 77 68 65 6e 65 76 65 72 20 61 20 74 72 61 6e   whenever a tran
f380: 73 61 63 74 69 6f 6e 20 69 73 20 72 6f 6c 6c 65  saction is rolle
f390: 64 0a 2a 2a 20 62 61 63 6b 2e 20 0a 2a 2a 0a 2a  d.** back. .**.*
f3a0: 2a 20 54 68 65 20 6e 65 77 20 63 61 6c 6c 62 61  * The new callba
f3b0: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 76 65 72  ck function over
f3c0: 72 69 64 65 73 20 61 6e 79 20 65 78 69 73 74 69  rides any existi
f3d0: 6e 67 20 72 6f 6c 6c 62 61 63 6b 2d 68 6f 6f 6b  ng rollback-hook
f3e0: 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 2e 20 49 66  .** callback. If
f3f0: 20 74 68 65 72 65 20 77 61 73 20 61 6e 20 65 78   there was an ex
f400: 69 73 74 69 6e 67 20 63 61 6c 6c 62 61 63 6b 2c  isting callback,
f410: 20 74 68 65 6e 20 69 74 27 73 20 70 41 72 67 20   then it's pArg 
f420: 76 61 6c 75 65 20 0a 2a 2a 20 28 74 68 65 20 74  value .** (the t
f430: 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  hird argument to
f440: 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63   sqlite3_rollbac
f450: 6b 5f 68 6f 6f 6b 28 29 20 77 68 65 6e 20 69 74  k_hook() when it
f460: 20 77 61 73 20 72 65 67 69 73 74 65 72 65 64 29   was registered)
f470: 20 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e 65 64   .** is returned
f480: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 4e 55 4c  . Otherwise, NUL
f490: 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  L is returned..*
f4a0: 2a 0a 2a 2a 20 46 6f 72 20 74 68 65 20 70 75 72  *.** For the pur
f4b0: 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 41 50  poses of this AP
f4c0: 49 2c 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  I, a transaction
f4d0: 20 69 73 20 73 61 69 64 20 74 6f 20 68 61 76 65   is said to have
f4e0: 20 62 65 65 6e 20 0a 2a 2a 20 72 6f 6c 6c 65 64   been .** rolled
f4f0: 20 62 61 63 6b 20 69 66 20 61 6e 20 65 78 70 6c   back if an expl
f500: 69 63 69 74 20 22 52 4f 4c 4c 42 41 43 4b 22 20  icit "ROLLBACK" 
f510: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78 65  statement is exe
f520: 63 75 74 65 64 2c 20 6f 72 0a 2a 2a 20 61 6e 20  cuted, or.** an 
f530: 65 72 72 6f 72 20 6f 72 20 63 6f 6e 73 74 72 61  error or constra
f540: 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20 69 6d  int causes an im
f550: 70 6c 69 63 69 74 20 72 6f 6c 6c 62 61 63 6b 20  plicit rollback 
f560: 74 6f 20 6f 63 63 75 72 2e 20 54 68 65 20 0a 2a  to occur. The .*
f570: 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 6f  * callback is no
f580: 74 20 69 6e 76 6f 6b 65 64 20 69 66 20 61 20 74  t invoked if a t
f590: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 61 75  ransaction is au
f5a0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 6f 6c 6c  tomatically roll
f5b0: 65 64 0a 2a 2a 20 62 61 63 6b 20 62 65 63 61 75  ed.** back becau
f5c0: 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  se the database 
f5d0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c  connection is cl
f5e0: 6f 73 65 64 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73  osed..*/.void *s
f5f0: 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
f600: 68 6f 6f 6b 28 73 71 6c 69 74 65 33 2a 2c 20 76  hook(sqlite3*, v
f610: 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 29 2c 20  oid(*)(void *), 
f620: 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  void*);../*.** T
f630: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
f640: 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
f650: 66 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73  f the library is
f660: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75   compiled withou
f670: 74 0a 2a 2a 20 74 68 65 20 53 51 4c 49 54 45 5f  t.** the SQLITE_
f680: 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48  OMIT_SHARED_CACH
f690: 45 20 6d 61 63 72 6f 20 64 65 66 69 6e 65 64 2e  E macro defined.
f6a0: 20 49 74 20 69 73 20 75 73 65 64 20 74 6f 20 65   It is used to e
f6b0: 6e 61 62 6c 65 20 6f 72 0a 2a 2a 20 64 69 73 61  nable or.** disa
f6c0: 62 6c 65 20 28 69 66 20 74 68 65 20 61 72 67 75  ble (if the argu
f6d0: 6d 65 6e 74 20 69 73 20 74 72 75 65 20 6f 72 20  ment is true or 
f6e0: 66 61 6c 73 65 2c 20 72 65 73 70 65 63 74 69 76  false, respectiv
f6f0: 65 6c 79 29 20 74 68 65 20 0a 2a 2a 20 22 73 68  ely) the .** "sh
f700: 61 72 65 64 20 70 61 67 65 72 22 20 66 65 61 74  ared pager" feat
f710: 75 72 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ure..*/.int sqli
f720: 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65  te3_enable_share
f730: 64 5f 63 61 63 68 65 28 69 6e 74 29 3b 0a 0a 2f  d_cache(int);../
f740: 2a 0a 2a 2a 20 41 74 74 65 6d 70 74 20 74 6f 20  *.** Attempt to 
f750: 66 72 65 65 20 4e 20 62 79 74 65 73 20 6f 66 20  free N bytes of 
f760: 68 65 61 70 20 6d 65 6d 6f 72 79 20 62 79 20 64  heap memory by d
f770: 65 61 6c 6c 6f 63 61 74 69 6e 67 20 6e 6f 6e 2d  eallocating non-
f780: 65 73 73 65 6e 74 69 61 6c 0a 2a 2a 20 6d 65 6d  essential.** mem
f790: 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  ory allocations 
f7a0: 68 65 6c 64 20 62 79 20 74 68 65 20 64 61 74 61  held by the data
f7b0: 62 61 73 65 20 6c 69 62 72 61 72 79 20 28 65 78  base library (ex
f7c0: 61 6d 70 6c 65 3a 20 6d 65 6d 6f 72 79 20 0a 2a  ample: memory .*
f7d0: 2a 20 75 73 65 64 20 74 6f 20 63 61 63 68 65 20  * used to cache 
f7e0: 64 61 74 61 62 61 73 65 20 70 61 67 65 73 20 74  database pages t
f7f0: 6f 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72  o improve perfor
f800: 6d 61 6e 63 65 29 2e 0a 2a 2a 0a 2a 2a 20 54 68  mance)..**.** Th
f810: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e  is function is n
f820: 6f 74 20 61 20 70 61 72 74 20 6f 66 20 73 74 61  ot a part of sta
f830: 6e 64 61 72 64 20 62 75 69 6c 64 73 2e 20 20 49  ndard builds.  I
f840: 74 20 69 73 20 6f 6e 6c 79 20 63 72 65 61 74 65  t is only create
f850: 64 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20 69  d.** if SQLite i
f860: 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
f870: 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  the SQLITE_ENABL
f880: 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d  E_MEMORY_MANAGEM
f890: 45 4e 54 20 6d 61 63 72 6f 2e 0a 2a 2f 0a 69 6e  ENT macro..*/.in
f8a0: 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73  t sqlite3_releas
f8b0: 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 29 3b 0a 0a  e_memory(int);..
f8c0: 2f 2a 0a 2a 2a 20 50 6c 61 63 65 20 61 20 22 73  /*.** Place a "s
f8d0: 6f 66 74 22 20 6c 69 6d 69 74 20 6f 6e 20 74 68  oft" limit on th
f8e0: 65 20 61 6d 6f 75 6e 74 20 6f 66 20 68 65 61 70  e amount of heap
f8f0: 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 6d 61 79   memory that may
f900: 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 20 62 79   be allocated by
f910: 0a 2a 2a 20 53 51 4c 69 74 65 20 77 69 74 68 69  .** SQLite withi
f920: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 68  n the current th
f930: 72 65 61 64 2e 20 49 66 20 61 6e 20 69 6e 74 65  read. If an inte
f940: 72 6e 61 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  rnal allocation 
f950: 69 73 20 72 65 71 75 65 73 74 65 64 20 0a 2a 2a  is requested .**
f960: 20 74 68 61 74 20 77 6f 75 6c 64 20 65 78 63 65   that would exce
f970: 65 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ed the specified
f980: 20 6c 69 6d 69 74 2c 20 73 71 6c 69 74 65 33 5f   limit, sqlite3_
f990: 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29  release_memory()
f9a0: 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 6f   is invoked.** o
f9b0: 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73  ne or more times
f9c0: 20 74 6f 20 66 72 65 65 20 75 70 20 73 6f 6d 65   to free up some
f9d0: 20 73 70 61 63 65 20 62 65 66 6f 72 65 20 74 68   space before th
f9e0: 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73 20  e allocation is 
f9f0: 6d 61 64 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  made..**.** The 
fa00: 6c 69 6d 69 74 20 69 73 20 63 61 6c 6c 65 64 20  limit is called 
fa10: 22 73 6f 66 74 22 2c 20 62 65 63 61 75 73 65 20  "soft", because 
fa20: 69 66 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  if sqlite3_relea
fa30: 73 65 5f 6d 65 6d 6f 72 79 28 29 20 63 61 6e 6e  se_memory() cann
fa40: 6f 74 20 66 72 65 65 0a 2a 2a 20 73 75 66 66 69  ot free.** suffi
fa50: 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 74 6f 20  cient memory to 
fa60: 70 72 65 76 65 6e 74 20 74 68 65 20 6c 69 6d 69  prevent the limi
fa70: 74 20 66 72 6f 6d 20 62 65 69 6e 67 20 65 78 63  t from being exc
fa80: 65 65 64 65 64 2c 20 74 68 65 20 6d 65 6d 6f 72  eeded, the memor
fa90: 79 20 69 73 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65  y is.** allocate
faa0: 64 20 61 6e 79 77 61 79 20 61 6e 64 20 74 68 65  d anyway and the
fab0: 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69   current operati
fac0: 6f 6e 20 70 72 6f 63 65 65 64 73 2e 0a 2a 2a 0a  on proceeds..**.
fad0: 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  ** This function
fae0: 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
faf0: 6c 65 20 69 66 20 74 68 65 20 6c 69 62 72 61 72  le if the librar
fb00: 79 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77  y was compiled w
fb10: 69 74 68 20 74 68 65 20 0a 2a 2a 20 53 51 4c 49  ith the .** SQLI
fb20: 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59  TE_ENABLE_MEMORY
fb30: 5f 4d 41 4e 41 47 45 4d 45 4e 54 20 6f 70 74 69  _MANAGEMENT opti
fb40: 6f 6e 20 73 65 74 2e 0a 2a 2a 20 6d 65 6d 6f 72  on set..** memor
fb50: 79 2d 6d 61 6e 61 67 65 6d 65 6e 74 20 68 61 73  y-management has
fb60: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 2e 0a 2a   been enabled..*
fb70: 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 73  /.void sqlite3_s
fb80: 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28 69  oft_heap_limit(i
fb90: 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73  nt);../*.** This
fba0: 20 72 6f 75 74 69 6e 65 20 6d 61 6b 65 73 20 73   routine makes s
fbb0: 75 72 65 20 74 68 61 74 20 61 6c 6c 20 74 68 72  ure that all thr
fbc0: 65 61 64 2d 6c 6f 63 61 6c 20 73 74 6f 72 61 67  ead-local storag
fbd0: 65 20 68 61 73 20 62 65 65 6e 0a 2a 2a 20 64 65  e has been.** de
fbe0: 61 6c 6c 6f 63 61 74 65 64 20 66 6f 72 20 74 68  allocated for th
fbf0: 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61 64  e current thread
fc00: 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75  ..**.** This rou
fc10: 74 69 6e 65 20 69 73 20 6e 6f 74 20 74 65 63 68  tine is not tech
fc20: 6e 69 63 61 6c 6c 79 20 6e 65 63 65 73 73 61 72  nically necessar
fc30: 79 2e 20 20 41 6c 6c 20 74 68 72 65 61 64 2d 6c  y.  All thread-l
fc40: 6f 63 61 6c 20 73 74 6f 72 61 67 65 0a 2a 2a 20  ocal storage.** 
fc50: 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69  will be automati
fc60: 63 61 6c 6c 79 20 64 65 61 6c 6c 6f 63 61 74 65  cally deallocate
fc70: 64 20 6f 6e 63 65 20 6d 65 6d 6f 72 79 2d 6d 61  d once memory-ma
fc80: 6e 61 67 65 6d 65 6e 74 20 61 6e 64 0a 2a 2a 20  nagement and.** 
fc90: 73 68 61 72 65 64 2d 63 61 63 68 65 20 61 72 65  shared-cache are
fca0: 20 64 69 73 61 62 6c 65 64 20 61 6e 64 20 74 68   disabled and th
fcb0: 65 20 73 6f 66 74 20 68 65 61 70 20 6c 69 6d 69  e soft heap limi
fcc0: 74 20 68 61 73 20 62 65 65 6e 20 73 65 74 0a 2a  t has been set.*
fcd0: 2a 20 74 6f 20 7a 65 72 6f 2e 20 20 54 68 69 73  * to zero.  This
fce0: 20 72 6f 75 74 69 6e 65 20 69 73 20 70 72 6f 76   routine is prov
fcf0: 69 64 65 64 20 61 73 20 61 20 63 6f 6e 76 65 6e  ided as a conven
fd00: 69 65 6e 63 65 20 66 6f 72 20 75 73 65 72 73 20  ience for users 
fd10: 77 68 6f 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 6d  who.** want to m
fd20: 61 6b 65 20 61 62 73 6f 6c 75 74 65 6c 79 20 73  ake absolutely s
fd30: 75 72 65 20 74 68 65 79 20 68 61 76 65 20 6e 6f  ure they have no
fd40: 74 20 66 6f 72 67 6f 74 74 65 6e 20 73 6f 6d 65  t forgotten some
fd50: 74 68 69 6e 67 0a 2a 2a 20 70 72 69 6f 72 20 74  thing.** prior t
fd60: 6f 20 6b 69 6c 6c 69 6e 67 20 6f 66 66 20 61 20  o killing off a 
fd70: 74 68 72 65 61 64 2e 0a 2a 2f 0a 76 6f 69 64 20  thread..*/.void 
fd80: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 5f 63  sqlite3_thread_c
fd90: 6c 65 61 6e 75 70 28 76 6f 69 64 29 3b 0a 0a 2f  leanup(void);../
fda0: 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 6d 65 74 61  *.** Return meta
fdb0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
fdc0: 75 74 20 61 20 73 70 65 63 69 66 69 63 20 63 6f  ut a specific co
fdd0: 6c 75 6d 6e 20 6f 66 20 61 20 73 70 65 63 69 66  lumn of a specif
fde0: 69 63 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 74  ic database.** t
fdf0: 61 62 6c 65 20 61 63 63 65 73 73 69 62 6c 65 20  able accessible 
fe00: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
fe10: 74 69 6f 6e 20 68 61 6e 64 6c 65 20 70 61 73 73  tion handle pass
fe20: 65 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20  ed as the first 
fe30: 66 75 6e 63 74 69 6f 6e 20 0a 2a 2a 20 61 72 67  function .** arg
fe40: 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ument..**.** The
fe50: 20 63 6f 6c 75 6d 6e 20 69 73 20 69 64 65 6e 74   column is ident
fe60: 69 66 69 65 64 20 62 79 20 74 68 65 20 73 65 63  ified by the sec
fe70: 6f 6e 64 2c 20 74 68 69 72 64 20 61 6e 64 20 66  ond, third and f
fe80: 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 73  ourth parameters
fe90: 20 74 6f 20 0a 2a 2a 20 74 68 69 73 20 66 75 6e   to .** this fun
fea0: 63 74 69 6f 6e 2e 20 54 68 65 20 73 65 63 6f 6e  ction. The secon
feb0: 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 65  d parameter is e
fec0: 69 74 68 65 72 20 74 68 65 20 6e 61 6d 65 20 6f  ither the name o
fed0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a  f the database.*
fee0: 2a 20 28 69 2e 65 2e 20 22 6d 61 69 6e 22 2c 20  * (i.e. "main", 
fef0: 22 74 65 6d 70 22 20 6f 72 20 61 6e 20 61 74 74  "temp" or an att
ff00: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 29 20  ached database) 
ff10: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 73  containing the s
ff20: 70 65 63 69 66 69 65 64 0a 2a 2a 20 74 61 62 6c  pecified.** tabl
ff30: 65 20 6f 72 20 4e 55 4c 4c 2e 20 49 66 20 69 74  e or NULL. If it
ff40: 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 61   is NULL, then a
ff50: 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61  ll attached data
ff60: 62 61 73 65 73 20 61 72 65 20 73 65 61 72 63 68  bases are search
ff70: 65 64 0a 2a 2a 20 66 6f 72 20 74 68 65 20 74 61  ed.** for the ta
ff80: 62 6c 65 20 75 73 69 6e 67 20 74 68 65 20 73 61  ble using the sa
ff90: 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 61 73 20  me algorithm as 
ffa0: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  the database eng
ffb0: 69 6e 65 20 75 73 65 73 20 74 6f 20 0a 2a 2a 20  ine uses to .** 
ffc0: 72 65 73 6f 6c 76 65 20 75 6e 71 75 61 6c 69 66  resolve unqualif
ffd0: 69 65 64 20 74 61 62 6c 65 20 72 65 66 65 72 65  ied table refere
ffe0: 6e 63 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  nces..**.** The 
fff0: 74 68 69 72 64 20 61 6e 64 20 66 6f 75 72 74 68  third and fourth
10000 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74   parameters to t
10010 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 72 65  his function are
10020 20 74 68 65 20 74 61 62 6c 65 20 61 6e 64 20 63   the table and c
10030 6f 6c 75 6d 6e 20 0a 2a 2a 20 6e 61 6d 65 20 6f  olumn .** name o
10040 66 20 74 68 65 20 64 65 73 69 72 65 64 20 63 6f  f the desired co
10050 6c 75 6d 6e 2c 20 72 65 73 70 65 63 74 69 76 65  lumn, respective
10060 6c 79 2e 20 4e 65 69 74 68 65 72 20 6f 66 20 74  ly. Neither of t
10070 68 65 73 65 20 70 61 72 61 6d 65 74 65 72 73 20  hese parameters 
10080 0a 2a 2a 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e  .** may be NULL.
10090 0a 2a 2a 0a 2a 2a 20 4d 65 74 61 20 69 6e 66 6f  .**.** Meta info
100a0 72 6d 61 74 69 6f 6e 20 69 73 20 72 65 74 75 72  rmation is retur
100b0 6e 65 64 20 62 79 20 77 72 69 74 69 6e 67 20 74  ned by writing t
100c0 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 6c 6f 63  o the memory loc
100d0 61 74 69 6f 6e 73 20 70 61 73 73 65 64 20 61 73  ations passed as
100e0 0a 2a 2a 20 74 68 65 20 35 74 68 20 61 6e 64 20  .** the 5th and 
100f0 73 75 62 73 65 71 75 65 6e 74 20 70 61 72 61 6d  subsequent param
10100 65 74 65 72 73 20 74 6f 20 74 68 69 73 20 66 75  eters to this fu
10110 6e 63 74 69 6f 6e 2e 20 41 6e 79 20 6f 66 20 74  nction. Any of t
10120 68 65 73 65 20 0a 2a 2a 20 61 72 67 75 6d 65 6e  hese .** argumen
10130 74 73 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20  ts may be NULL, 
10140 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68  in which case th
10150 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
10160 65 6c 65 6d 65 6e 74 20 6f 66 20 6d 65 74 61 20  element of meta 
10170 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
10180 69 73 20 6f 6d 6d 69 74 74 65 64 2e 0a 2a 2a 0a  is ommitted..**.
10190 2a 2a 20 50 61 72 61 6d 65 74 65 72 20 20 20 20  ** Parameter    
101a0 20 4f 75 74 70 75 74 20 54 79 70 65 20 20 20 20   Output Type    
101b0 20 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 2a 2a    Description.**
101c0 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
101d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
101e0 2d 2d 2d 2d 0a 2a 2a 0a 2a 2a 20 20 20 35 74 68  ----.**.**   5th
101f0 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63           const c
10200 68 61 72 2a 20 20 20 20 20 20 44 61 74 61 20 74  har*      Data t
10210 79 70 65 0a 2a 2a 20 20 20 36 74 68 20 20 20 20  ype.**   6th    
10220 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 2a       const char*
10230 20 20 20 20 20 20 4e 61 6d 65 20 6f 66 20 74 68        Name of th
10240 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74  e default collat
10250 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 0a 2a 2a  ion sequence .**
10260 20 20 20 37 74 68 20 20 20 20 20 20 20 20 20 69     7th         i
10270 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  nt              
10280 54 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75  True if the colu
10290 6d 6e 20 68 61 73 20 61 20 4e 4f 54 20 4e 55 4c  mn has a NOT NUL
102a0 4c 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a 20  L constraint.** 
102b0 20 20 38 74 68 20 20 20 20 20 20 20 20 20 69 6e    8th         in
102c0 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54  t              T
102d0 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75 6d  rue if the colum
102e0 6e 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65  n is part of the
102f0 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 2a 2a 20   PRIMARY KEY.** 
10300 20 20 39 74 68 20 20 20 20 20 20 20 20 20 69 6e    9th         in
10310 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54  t              T
10320 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75 6d  rue if the colum
10330 6e 20 69 73 20 41 55 54 4f 49 4e 43 52 45 4d 45  n is AUTOINCREME
10340 4e 54 0a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 65 20  NT.**.**.** The 
10350 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65 64 20 74  memory pointed t
10360 6f 20 62 79 20 74 68 65 20 63 68 61 72 61 63 74  o by the charact
10370 65 72 20 70 6f 69 6e 74 65 72 73 20 72 65 74 75  er pointers retu
10380 72 6e 65 64 20 66 6f 72 20 74 68 65 20 0a 2a 2a  rned for the .**
10390 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 74 79 70   declaration typ
103a0 65 20 61 6e 64 20 63 6f 6c 6c 61 74 69 6f 6e 20  e and collation 
103b0 73 65 71 75 65 6e 63 65 20 69 73 20 76 61 6c 69  sequence is vali
103c0 64 20 6f 6e 6c 79 20 75 6e 74 69 6c 20 74 68 65  d only until the
103d0 20 6e 65 78 74 20 0a 2a 2a 20 63 61 6c 6c 20 74   next .** call t
103e0 6f 20 61 6e 79 20 73 71 6c 69 74 65 20 41 50 49  o any sqlite API
103f0 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a   function..**.**
10400 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
10410 64 20 74 61 62 6c 65 20 69 73 20 61 63 74 75 61  d table is actua
10420 6c 6c 79 20 61 20 76 69 65 77 2c 20 74 68 65 6e  lly a view, then
10430 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72 65 74   an error is ret
10440 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  urned..**.** If 
10450 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f  the specified co
10460 6c 75 6d 6e 20 69 73 20 22 72 6f 77 69 64 22 2c  lumn is "rowid",
10470 20 22 6f 69 64 22 20 6f 72 20 22 5f 72 6f 77 69   "oid" or "_rowi
10480 64 5f 22 20 61 6e 64 20 61 6e 20 0a 2a 2a 20 49  d_" and an .** I
10490 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
104a0 45 59 20 63 6f 6c 75 6d 6e 20 68 61 73 20 62 65  EY column has be
104b0 65 6e 20 65 78 70 6c 69 63 69 74 6c 79 20 64 65  en explicitly de
104c0 63 6c 61 72 65 64 2c 20 74 68 65 6e 20 74 68 65  clared, then the
104d0 20 6f 75 74 70 75 74 20 0a 2a 2a 20 70 61 72 61   output .** para
104e0 6d 65 74 65 72 73 20 61 72 65 20 73 65 74 20 66  meters are set f
104f0 6f 72 20 74 68 65 20 65 78 70 6c 69 63 69 74 6c  or the explicitl
10500 79 20 64 65 63 6c 61 72 65 64 20 63 6f 6c 75 6d  y declared colum
10510 6e 2e 20 49 66 20 74 68 65 72 65 20 69 73 20 6e  n. If there is n
10520 6f 0a 2a 2a 20 65 78 70 6c 69 63 69 74 6c 79 20  o.** explicitly 
10530 64 65 63 6c 61 72 65 64 20 49 50 4b 20 63 6f 6c  declared IPK col
10540 75 6d 6e 2c 20 74 68 65 6e 20 74 68 65 20 6f 75  umn, then the ou
10550 74 70 75 74 20 70 61 72 61 6d 65 74 65 72 73 20  tput parameters 
10560 61 72 65 20 73 65 74 20 61 73 20 0a 2a 2a 20 66  are set as .** f
10570 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20 20  ollows:.**.**   
10580 20 20 64 61 74 61 20 74 79 70 65 3a 20 22 49 4e    data type: "IN
10590 54 45 47 45 52 22 0a 2a 2a 20 20 20 20 20 63 6f  TEGER".**     co
105a0 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
105b0 3a 20 22 42 49 4e 41 52 59 22 0a 2a 2a 20 20 20  : "BINARY".**   
105c0 20 20 6e 6f 74 20 6e 75 6c 6c 3a 20 30 0a 2a 2a    not null: 0.**
105d0 20 20 20 20 20 70 72 69 6d 61 72 79 20 6b 65 79       primary key
105e0 3a 20 31 0a 2a 2a 20 20 20 20 20 61 75 74 6f 20  : 1.**     auto 
105f0 69 6e 63 72 65 6d 65 6e 74 3a 20 30 0a 2a 2a 0a  increment: 0.**.
10600 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  ** This function
10610 20 6d 61 79 20 6c 6f 61 64 20 6f 6e 65 20 6f 72   may load one or
10620 20 6d 6f 72 65 20 73 63 68 65 6d 61 73 20 66 72   more schemas fr
10630 6f 6d 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  om database file
10640 73 2e 20 49 66 20 61 6e 0a 2a 2a 20 65 72 72 6f  s. If an.** erro
10650 72 20 6f 63 63 75 72 73 20 64 75 72 69 6e 67 20  r occurs during 
10660 74 68 69 73 20 70 72 6f 63 65 73 73 2c 20 6f 72  this process, or
10670 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 65   if the requeste
10680 64 20 74 61 62 6c 65 20 6f 72 20 63 6f 6c 75 6d  d table or colum
10690 6e 0a 2a 2a 20 63 61 6e 6e 6f 74 20 62 65 20 66  n.** cannot be f
106a0 6f 75 6e 64 2c 20 61 6e 20 53 51 4c 49 54 45 20  ound, an SQLITE 
106b0 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72 65  error code is re
106c0 74 75 72 6e 65 64 20 61 6e 64 20 61 6e 20 65 72  turned and an er
106d0 72 6f 72 20 6d 65 73 73 61 67 65 0a 2a 2a 20 6c  ror message.** l
106e0 65 66 74 20 69 6e 20 74 68 65 20 64 61 74 61 62  eft in the datab
106f0 61 73 65 20 68 61 6e 64 6c 65 20 28 74 6f 20 62  ase handle (to b
10700 65 20 72 65 74 72 69 65 76 65 64 20 75 73 69 6e  e retrieved usin
10710 67 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  g sqlite3_errmsg
10720 28 29 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  ())..**.** This 
10730 41 50 49 20 69 73 20 6f 6e 6c 79 20 61 76 61 69  API is only avai
10740 6c 61 62 6c 65 20 69 66 20 74 68 65 20 6c 69 62  lable if the lib
10750 72 61 72 79 20 77 61 73 20 63 6f 6d 70 69 6c 65  rary was compile
10760 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 53 51  d with the.** SQ
10770 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55  LITE_ENABLE_COLU
10780 4d 4e 5f 4d 45 54 41 44 41 54 41 20 70 72 65 70  MN_METADATA prep
10790 72 6f 63 65 73 73 6f 72 20 73 79 6d 62 6f 6c 20  rocessor symbol 
107a0 64 65 66 69 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20  defined..*/.int 
107b0 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
107c0 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 0a 20  lumn_metadata(. 
107d0 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
107e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
107f0 43 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c  Connection handl
10800 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  e */.  const cha
10810 72 20 2a 7a 44 62 4e 61 6d 65 2c 20 20 20 20 20  r *zDbName,     
10820 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 6e     /* Database n
10830 61 6d 65 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 20  ame or NULL */. 
10840 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 54 61   const char *zTa
10850 62 6c 65 4e 61 6d 65 2c 20 20 20 20 20 2f 2a 20  bleName,     /* 
10860 54 61 62 6c 65 20 6e 61 6d 65 20 2a 2f 0a 20 20  Table name */.  
10870 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 43 6f 6c  const char *zCol
10880 75 6d 6e 4e 61 6d 65 2c 20 20 20 20 2f 2a 20 43  umnName,    /* C
10890 6f 6c 75 6d 6e 20 6e 61 6d 65 20 2a 2f 0a 20 20  olumn name */.  
108a0 63 68 61 72 20 63 6f 6e 73 74 20 2a 2a 70 7a 44  char const **pzD
108b0 61 74 61 54 79 70 65 2c 20 20 20 20 2f 2a 20 4f  ataType,    /* O
108c0 55 54 50 55 54 3a 20 44 65 63 6c 61 72 65 64 20  UTPUT: Declared 
108d0 64 61 74 61 20 74 79 70 65 20 2a 2f 0a 20 20 63  data type */.  c
108e0 68 61 72 20 63 6f 6e 73 74 20 2a 2a 70 7a 43 6f  har const **pzCo
108f0 6c 6c 53 65 71 2c 20 20 20 20 20 2f 2a 20 4f 55  llSeq,     /* OU
10900 54 50 55 54 3a 20 43 6f 6c 6c 61 74 69 6f 6e 20  TPUT: Collation 
10910 73 65 71 75 65 6e 63 65 20 6e 61 6d 65 20 2a 2f  sequence name */
10920 0a 20 20 69 6e 74 20 2a 70 4e 6f 74 4e 75 6c 6c  .  int *pNotNull
10930 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
10940 2a 20 4f 55 54 50 55 54 3a 20 54 72 75 65 20 69  * OUTPUT: True i
10950 66 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74  f NOT NULL const
10960 72 61 69 6e 74 20 65 78 69 73 74 73 20 2a 2f 0a  raint exists */.
10970 20 20 69 6e 74 20 2a 70 50 72 69 6d 61 72 79 4b    int *pPrimaryK
10980 65 79 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ey,           /*
10990 20 4f 55 54 50 55 54 3a 20 54 72 75 65 20 69 66   OUTPUT: True if
109a0 20 63 6f 6c 75 6d 6e 20 70 61 72 74 20 6f 66 20   column part of 
109b0 50 4b 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 41 75  PK */.  int *pAu
109c0 74 6f 69 6e 63 20 20 20 20 20 20 20 20 20 20 20  toinc           
109d0 20 20 20 20 2f 2a 20 4f 55 54 50 55 54 3a 20 54      /* OUTPUT: T
109e0 72 75 65 20 69 66 20 63 6f 6c 75 6d 73 20 69 73  rue if colums is
109f0 20 61 75 74 6f 2d 69 6e 63 72 65 6d 65 6e 74 20   auto-increment 
10a00 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a  */.);../*.******
10a10 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20   EXPERIMENTAL - 
10a20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  subject to chang
10a30 65 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65  e without notice
10a40 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a   **************.
10a50 2a 2a 0a 2a 2a 20 41 74 74 65 6d 70 74 20 74 6f  **.** Attempt to
10a60 20 6c 6f 61 64 20 61 6e 20 53 51 4c 69 74 65 20   load an SQLite 
10a70 65 78 74 65 6e 73 69 6f 6e 20 6c 69 62 72 61 72  extension librar
10a80 79 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74  y contained in t
10a90 68 65 20 66 69 6c 65 0a 2a 2a 20 7a 46 69 6c 65  he file.** zFile
10aa0 2e 20 20 54 68 65 20 65 6e 74 72 79 20 70 6f 69  .  The entry poi
10ab0 6e 74 20 69 73 20 7a 50 72 6f 63 2e 20 20 7a 50  nt is zProc.  zP
10ac0 72 6f 63 20 6d 61 79 20 62 65 20 30 20 69 6e 20  roc may be 0 in 
10ad0 77 68 69 63 68 20 63 61 73 65 20 74 68 65 0a 2a  which case the.*
10ae0 2a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e  * name of the en
10af0 74 72 79 20 70 6f 69 6e 74 20 64 65 66 61 75 6c  try point defaul
10b00 74 73 20 74 6f 20 22 73 71 6c 69 74 65 33 5f 65  ts to "sqlite3_e
10b10 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 22 2e 0a  xtension_init"..
10b20 2a 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 53 51 4c  **.** Return SQL
10b30 49 54 45 5f 4f 4b 20 6f 6e 20 73 75 63 63 65 73  ITE_OK on succes
10b40 73 20 61 6e 64 20 53 51 4c 49 54 45 5f 45 52 52  s and SQLITE_ERR
10b50 4f 52 20 69 66 20 73 6f 6d 65 74 68 69 6e 67 20  OR if something 
10b60 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2a 2a 0a 2a  goes wrong..**.*
10b70 2a 20 49 66 20 61 6e 20 65 72 72 6f 72 20 6f 63  * If an error oc
10b80 63 75 72 73 20 61 6e 64 20 70 7a 45 72 72 4d 73  curs and pzErrMs
10b90 67 20 69 73 20 6e 6f 74 20 30 2c 20 74 68 65 6e  g is not 0, then
10ba0 20 66 69 6c 6c 20 2a 70 7a 45 72 72 4d 73 67 20   fill *pzErrMsg 
10bb0 77 69 74 68 20 0a 2a 2a 20 65 72 72 6f 72 20 6d  with .** error m
10bc0 65 73 73 61 67 65 20 74 65 78 74 2e 20 20 54 68  essage text.  Th
10bd0 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74 69  e calling functi
10be0 6f 6e 20 73 68 6f 75 6c 64 20 66 72 65 65 20 74  on should free t
10bf0 68 69 73 20 6d 65 6d 6f 72 79 0a 2a 2a 20 62 79  his memory.** by
10c00 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33   calling sqlite3
10c10 5f 66 72 65 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 45  _free()..**.** E
10c20 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
10c30 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65 64   must be enabled
10c40 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 65   using sqlite3_e
10c50 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
10c60 73 69 6f 6e 28 29 0a 2a 2a 20 70 72 69 6f 72 20  sion().** prior 
10c70 74 6f 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20  to calling this 
10c80 41 50 49 20 6f 72 20 61 6e 20 65 72 72 6f 72 20  API or an error 
10c90 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64  will be returned
10ca0 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 20 45 58 50 45  ..**.****** EXPE
10cb0 52 49 4d 45 4e 54 41 4c 20 2d 20 73 75 62 6a 65  RIMENTAL - subje
10cc0 63 74 20 74 6f 20 63 68 61 6e 67 65 20 77 69 74  ct to change wit
10cd0 68 6f 75 74 20 6e 6f 74 69 63 65 20 2a 2a 2a 2a  hout notice ****
10ce0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 69 6e  **********.*/.in
10cf0 74 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65  t sqlite3_load_e
10d00 78 74 65 6e 73 69 6f 6e 28 0a 20 20 73 71 6c 69  xtension(.  sqli
10d10 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
10d20 20 20 2f 2a 20 4c 6f 61 64 20 74 68 65 20 65 78    /* Load the ex
10d30 74 65 6e 73 69 6f 6e 20 69 6e 74 6f 20 74 68 69  tension into thi
10d40 73 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  s database conne
10d50 63 74 69 6f 6e 20 2a 2f 0a 20 20 63 6f 6e 73 74  ction */.  const
10d60 20 63 68 61 72 20 2a 7a 46 69 6c 65 2c 20 20 20   char *zFile,   
10d70 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 65 20   /* Name of the 
10d80 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 20 63  shared library c
10d90 6f 6e 74 61 69 6e 69 6e 67 20 65 78 74 65 6e 73  ontaining extens
10da0 69 6f 6e 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ion */.  const c
10db0 68 61 72 20 2a 7a 50 72 6f 63 2c 20 20 20 20 2f  har *zProc,    /
10dc0 2a 20 45 6e 74 72 79 20 70 6f 69 6e 74 2e 20 20  * Entry point.  
10dd0 44 65 72 69 76 65 64 20 66 72 6f 6d 20 7a 46 69  Derived from zFi
10de0 6c 65 20 69 66 20 30 20 2a 2f 0a 20 20 63 68 61  le if 0 */.  cha
10df0 72 20 2a 2a 70 7a 45 72 72 4d 73 67 20 20 20 20  r **pzErrMsg    
10e00 20 20 20 2f 2a 20 50 75 74 20 65 72 72 6f 72 20     /* Put error 
10e10 6d 65 73 73 61 67 65 20 68 65 72 65 20 69 66 20  message here if 
10e20 6e 6f 74 20 30 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a  not 0 */.);../*.
10e30 2a 2a 20 53 6f 20 61 73 20 6e 6f 74 20 74 6f 20  ** So as not to 
10e40 6f 70 65 6e 20 73 65 63 75 72 69 74 79 20 68 6f  open security ho
10e50 6c 65 73 20 69 6e 20 6f 6c 64 65 72 20 61 70 70  les in older app
10e60 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 61  lications that a
10e70 72 65 0a 2a 2a 20 75 6e 70 72 65 70 61 72 65 64  re.** unprepared
10e80 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 65 78   to deal with ex
10e90 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 2c 20 61 6e  tension load, an
10ea0 64 20 61 73 20 61 20 6d 65 61 6e 73 20 6f 66 20  d as a means of 
10eb0 64 69 73 61 62 6c 69 6e 67 0a 2a 2a 20 65 78 74  disabling.** ext
10ec0 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 77  ension loading w
10ed0 68 69 6c 65 20 65 78 65 63 75 74 69 6e 67 20 75  hile executing u
10ee0 73 65 72 2d 65 6e 74 65 72 65 64 20 53 51 4c 2c  ser-entered SQL,
10ef0 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 2a   the following.*
10f00 2a 20 41 50 49 20 69 73 20 70 72 6f 76 69 64 65  * API is provide
10f10 64 20 74 6f 20 74 75 72 6e 20 74 68 65 20 65 78  d to turn the ex
10f20 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
10f30 6d 65 63 68 61 6e 69 73 6d 20 6f 6e 20 61 6e 64  mechanism on and
10f40 0a 2a 2a 20 6f 66 66 2e 20 20 49 74 20 69 73 20  .** off.  It is 
10f50 6f 66 66 20 62 79 20 64 65 66 61 75 6c 74 2e 20  off by default. 
10f60 20 53 65 65 20 74 69 63 6b 65 74 20 23 31 38 36   See ticket #186
10f70 33 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 20 74 68  3..**.** Call th
10f80 69 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68 20  is routine with 
10f90 6f 6e 6f 66 66 3d 3d 31 20 74 6f 20 74 75 72 6e  onoff==1 to turn
10fa0 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69   extension loadi
10fb0 6e 67 20 6f 6e 0a 2a 2a 20 61 6e 64 20 63 61 6c  ng on.** and cal
10fc0 6c 20 69 74 20 77 69 74 68 20 6f 6e 6f 66 66 3d  l it with onoff=
10fd0 3d 30 20 74 6f 20 74 75 72 6e 20 69 74 20 62 61  =0 to turn it ba
10fe0 63 6b 20 6f 66 66 20 61 67 61 69 6e 2e 0a 2a 2f  ck off again..*/
10ff0 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 6e 61  .int sqlite3_ena
11000 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
11010 6f 6e 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  on(sqlite3 *db, 
11020 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a  int onoff);../*.
11030 2a 2a 2a 2a 2a 2a 20 45 58 50 45 52 49 4d 45 4e  ****** EXPERIMEN
11040 54 41 4c 20 2d 20 73 75 62 6a 65 63 74 20 74 6f  TAL - subject to
11050 20 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74 20   change without 
11060 6e 6f 74 69 63 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  notice *********
11070 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 52 65 67 69  *****.**.** Regi
11080 73 74 65 72 20 61 6e 20 65 78 74 65 6e 73 69 6f  ster an extensio
11090 6e 20 65 6e 74 72 79 20 70 6f 69 6e 74 20 74 68  n entry point th
110a0 61 74 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  at is automatica
110b0 6c 6c 79 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 77  lly invoked.** w
110c0 68 65 6e 65 76 65 72 20 61 20 6e 65 77 20 64 61  henever a new da
110d0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
110e0 6e 20 69 73 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a  n is opened..**.
110f0 2a 2a 20 54 68 69 73 20 41 50 49 20 63 61 6e 20  ** This API can 
11100 62 65 20 69 6e 76 6f 6b 65 64 20 61 74 20 70 72  be invoked at pr
11110 6f 67 72 61 6d 20 73 74 61 72 74 75 70 20 69 6e  ogram startup in
11120 20 6f 72 64 65 72 20 74 6f 20 72 65 67 69 73 74   order to regist
11130 65 72 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f 72  er.** one or mor
11140 65 20 73 74 61 74 69 63 61 6c 6c 79 20 6c 69 6e  e statically lin
11150 6b 65 64 20 65 78 74 65 6e 73 69 6f 6e 73 20 74  ked extensions t
11160 68 61 74 20 77 69 6c 6c 20 62 65 20 61 76 61 69  hat will be avai
11170 6c 61 62 6c 65 0a 2a 2a 20 74 6f 20 61 6c 6c 20  lable.** to all 
11180 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f 6e  new database con
11190 6e 65 63 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20  nections..**.** 
111a0 44 75 70 6c 69 63 61 74 65 20 65 78 74 65 6e 73  Duplicate extens
111b0 69 6f 6e 73 20 61 72 65 20 64 65 74 65 63 74 65  ions are detecte
111c0 64 20 73 6f 20 63 61 6c 6c 69 6e 67 20 74 68 69  d so calling thi
111d0 73 20 72 6f 75 74 69 6e 65 20 6d 75 6c 74 69 70  s routine multip
111e0 6c 65 0a 2a 2a 20 74 69 6d 65 73 20 77 69 74 68  le.** times with
111f0 20 74 68 65 20 73 61 6d 65 20 65 78 74 65 6e 73   the same extens
11200 69 6f 6e 20 69 73 20 68 61 72 6d 6c 65 73 73 2e  ion is harmless.
11210 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74  .**.** This rout
11220 69 6e 65 20 73 74 6f 72 65 73 20 61 20 70 6f 69  ine stores a poi
11230 6e 74 65 72 20 74 6f 20 74 68 65 20 65 78 74 65  nter to the exte
11240 6e 73 69 6f 6e 20 69 6e 20 61 6e 20 61 72 72 61  nsion in an arra
11250 79 0a 2a 2a 20 74 68 61 74 20 69 73 20 6f 62 74  y.** that is obt
11260 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f  ained from mallo
11270 63 28 29 2e 20 20 49 66 20 79 6f 75 20 72 75 6e  c().  If you run
11280 20 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 0a 2a   a memory leak.*
11290 2a 20 63 68 65 63 6b 65 72 20 6f 6e 20 79 6f 75  * checker on you
112a0 72 20 70 72 6f 67 72 61 6d 20 61 6e 64 20 69 74  r program and it
112b0 20 72 65 70 6f 72 74 73 20 61 20 6c 65 61 6b 20   reports a leak 
112c0 62 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 0a  because of this.
112d0 2a 2a 20 61 72 72 61 79 2c 20 74 68 65 6e 20 69  ** array, then i
112e0 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 61 75  nvoke sqlite3_au
112f0 74 6f 6d 61 74 69 63 5f 65 78 74 65 6e 73 69 6f  tomatic_extensio
11300 6e 5f 72 65 73 65 74 28 29 20 70 72 69 6f 72 0a  n_reset() prior.
11310 2a 2a 20 74 6f 20 73 68 75 74 64 6f 77 6e 20 74  ** to shutdown t
11320 6f 20 66 72 65 65 20 74 68 65 20 6d 65 6d 6f 72  o free the memor
11330 79 2e 0a 2a 2a 0a 2a 2a 20 41 75 74 6f 6d 61 74  y..**.** Automat
11340 69 63 20 65 78 74 65 6e 73 69 6f 6e 73 20 61 70  ic extensions ap
11350 70 6c 79 20 61 63 72 6f 73 73 20 61 6c 6c 20 74  ply across all t
11360 68 72 65 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73  hreads..*/.int s
11370 71 6c 69 74 65 33 5f 61 75 74 6f 5f 65 78 74 65  qlite3_auto_exte
11380 6e 73 69 6f 6e 28 76 6f 69 64 20 2a 78 45 6e 74  nsion(void *xEnt
11390 72 79 50 6f 69 6e 74 29 3b 0a 0a 0a 2f 2a 0a 2a  ryPoint);.../*.*
113a0 2a 2a 2a 2a 2a 20 45 58 50 45 52 49 4d 45 4e 54  ***** EXPERIMENT
113b0 41 4c 20 2d 20 73 75 62 6a 65 63 74 20 74 6f 20  AL - subject to 
113c0 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74 20 6e  change without n
113d0 6f 74 69 63 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  otice **********
113e0 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 44 69 73 61 62  ****.**.** Disab
113f0 6c 65 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 6c  le all previousl
11400 79 20 72 65 67 69 73 74 65 72 65 64 20 61 75 74  y registered aut
11410 6f 6d 61 74 69 63 20 65 78 74 65 6e 73 69 6f 6e  omatic extension
11420 73 2e 20 20 54 68 69 73 0a 2a 2a 20 72 6f 75 74  s.  This.** rout
11430 69 6e 65 20 75 6e 64 6f 65 73 20 74 68 65 20 65  ine undoes the e
11440 66 66 65 63 74 20 6f 66 20 61 6c 6c 20 70 72 69  ffect of all pri
11450 6f 72 20 73 71 6c 69 74 65 33 5f 61 75 74 6f 6d  or sqlite3_autom
11460 61 74 69 63 5f 65 78 74 65 6e 73 69 6f 6e 28 29  atic_extension()
11470 0a 2a 2a 20 63 61 6c 6c 73 2e 0a 2a 2a 0a 2a 2a  .** calls..**.**
11480 20 54 68 69 73 20 63 61 6c 6c 20 64 69 73 61 62   This call disab
11490 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 20 65 78  led automatic ex
114a0 74 65 6e 73 69 6f 6e 73 20 69 6e 20 61 6c 6c 20  tensions in all 
114b0 74 68 72 65 61 64 73 2e 0a 2a 2f 0a 76 6f 69 64  threads..*/.void
114c0 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 61   sqlite3_reset_a
114d0 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 28 76 6f  uto_extension(vo
114e0 69 64 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a  id);.../*.******
114f0 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20   EXPERIMENTAL - 
11500 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  subject to chang
11510 65 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65  e without notice
11520 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a   **************.
11530 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 74 65 72 66  **.** The interf
11540 61 63 65 20 74 6f 20 74 68 65 20 76 69 72 74 75  ace to the virtu
11550 61 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e 69  al-table mechani
11560 73 6d 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20  sm is currently 
11570 63 6f 6e 73 69 64 65 72 65 64 0a 2a 2a 20 74 6f  considered.** to
11580 20 62 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c   be experimental
11590 2e 20 20 54 68 65 20 69 6e 74 65 72 66 61 63 65  .  The interface
115a0 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e   might change in
115b0 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 61   incompatible wa
115c0 79 73 2e 0a 2a 2a 20 49 66 20 74 68 69 73 20 69  ys..** If this i
115d0 73 20 61 20 70 72 6f 62 6c 65 6d 20 66 6f 72 20  s a problem for 
115e0 79 6f 75 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20  you, do not use 
115f0 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 61 74  the interface at
11600 20 74 68 69 73 20 74 69 6d 65 2e 0a 2a 2a 0a 2a   this time..**.*
11610 2a 20 57 68 65 6e 20 74 68 65 20 76 69 72 74 75  * When the virtu
11620 61 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e 69  al-table mechani
11630 73 6d 20 73 74 61 62 6c 69 7a 65 73 2c 20 77 65  sm stablizes, we
11640 20 77 69 6c 6c 20 64 65 63 6c 61 72 65 20 74 68   will declare th
11650 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 66  e.** interface f
11660 69 78 65 64 2c 20 73 75 70 70 6f 72 74 20 69 74  ixed, support it
11670 20 69 6e 64 65 66 69 6e 69 74 65 6c 79 2c 20 61   indefinitely, a
11680 6e 64 20 72 65 6d 6f 76 65 20 74 68 69 73 20 63  nd remove this c
11690 6f 6d 6d 65 6e 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 2a  omment..*/../*.*
116a0 2a 20 53 74 72 75 63 74 75 72 65 73 20 75 73 65  * Structures use
116b0 64 20 62 79 20 74 68 65 20 76 69 72 74 75 61 6c  d by the virtual
116c0 20 74 61 62 6c 65 20 69 6e 74 65 72 66 61 63 65   table interface
116d0 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
116e0 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ct sqlite3_vtab 
116f0 73 71 6c 69 74 65 33 5f 76 74 61 62 3b 0a 74 79  sqlite3_vtab;.ty
11700 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c  pedef struct sql
11710 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20  ite3_index_info 
11720 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
11730 66 6f 3b 0a 74 79 70 65 64 65 66 20 73 74 72 75  fo;.typedef stru
11740 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ct sqlite3_vtab_
11750 63 75 72 73 6f 72 20 73 71 6c 69 74 65 33 5f 76  cursor sqlite3_v
11760 74 61 62 5f 63 75 72 73 6f 72 3b 0a 74 79 70 65  tab_cursor;.type
11770 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
11780 65 33 5f 6d 6f 64 75 6c 65 20 73 71 6c 69 74 65  e3_module sqlite
11790 33 5f 6d 6f 64 75 6c 65 3b 0a 0a 2f 2a 0a 2a 2a  3_module;../*.**
117a0 20 41 20 6d 6f 64 75 6c 65 20 69 73 20 61 20 63   A module is a c
117b0 6c 61 73 73 20 6f 66 20 76 69 72 74 75 61 6c 20  lass of virtual 
117c0 74 61 62 6c 65 73 2e 20 20 45 61 63 68 20 6d 6f  tables.  Each mo
117d0 64 75 6c 65 20 69 73 20 64 65 66 69 6e 65 64 0a  dule is defined.
117e0 2a 2a 20 62 79 20 61 6e 20 69 6e 73 74 61 6e 63  ** by an instanc
117f0 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  e of the followi
11800 6e 67 20 73 74 72 75 63 74 75 72 65 2e 20 20 54  ng structure.  T
11810 68 69 73 20 73 74 72 75 63 74 75 72 65 20 63 6f  his structure co
11820 6e 73 69 73 74 73 0a 2a 2a 20 6d 6f 73 74 6c 79  nsists.** mostly
11830 20 6f 66 20 6d 65 74 68 6f 64 73 20 66 6f 72 20   of methods for 
11840 74 68 65 20 6d 6f 64 75 6c 65 2e 0a 2a 2f 0a 73  the module..*/.s
11850 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f  truct sqlite3_mo
11860 64 75 6c 65 20 7b 0a 20 20 69 6e 74 20 69 56 65  dule {.  int iVe
11870 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28 2a 78  rsion;.  int (*x
11880 43 72 65 61 74 65 29 28 73 71 6c 69 74 65 33 2a  Create)(sqlite3*
11890 2c 20 76 6f 69 64 20 2a 70 41 75 78 2c 0a 20 20  , void *pAux,.  
118a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
118b0 20 61 72 67 63 2c 20 63 6f 6e 73 74 20 63 68 61   argc, const cha
118c0 72 20 2a 63 6f 6e 73 74 2a 61 72 67 76 2c 0a 20  r *const*argv,. 
118d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 71                sq
118e0 6c 69 74 65 33 5f 76 74 61 62 20 2a 2a 70 70 56  lite3_vtab **ppV
118f0 54 61 62 2c 20 63 68 61 72 2a 2a 29 3b 0a 20 20  Tab, char**);.  
11900 69 6e 74 20 28 2a 78 43 6f 6e 6e 65 63 74 29 28  int (*xConnect)(
11910 73 71 6c 69 74 65 33 2a 2c 20 76 6f 69 64 20 2a  sqlite3*, void *
11920 70 41 75 78 2c 0a 20 20 20 20 20 20 20 20 20 20  pAux,.          
11930 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 20 63       int argc, c
11940 6f 6e 73 74 20 63 68 61 72 20 2a 63 6f 6e 73 74  onst char *const
11950 2a 61 72 67 76 2c 0a 20 20 20 20 20 20 20 20 20  *argv,.         
11960 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 76 74        sqlite3_vt
11970 61 62 20 2a 2a 70 70 56 54 61 62 2c 20 63 68 61  ab **ppVTab, cha
11980 72 2a 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 42  r**);.  int (*xB
11990 65 73 74 49 6e 64 65 78 29 28 73 71 6c 69 74 65  estIndex)(sqlite
119a0 33 5f 76 74 61 62 20 2a 70 56 54 61 62 2c 20 73  3_vtab *pVTab, s
119b0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
119c0 6f 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44 69  o*);.  int (*xDi
119d0 73 63 6f 6e 6e 65 63 74 29 28 73 71 6c 69 74 65  sconnect)(sqlite
119e0 33 5f 76 74 61 62 20 2a 70 56 54 61 62 29 3b 0a  3_vtab *pVTab);.
119f0 20 20 69 6e 74 20 28 2a 78 44 65 73 74 72 6f 79    int (*xDestroy
11a00 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a  )(sqlite3_vtab *
11a10 70 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a  pVTab);.  int (*
11a20 78 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f 76  xOpen)(sqlite3_v
11a30 74 61 62 20 2a 70 56 54 61 62 2c 20 73 71 6c 69  tab *pVTab, sqli
11a40 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
11a50 2a 2a 70 70 43 75 72 73 6f 72 29 3b 0a 20 20 69  **ppCursor);.  i
11a60 6e 74 20 28 2a 78 43 6c 6f 73 65 29 28 73 71 6c  nt (*xClose)(sql
11a70 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
11a80 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46 69 6c  *);.  int (*xFil
11a90 74 65 72 29 28 73 71 6c 69 74 65 33 5f 76 74 61  ter)(sqlite3_vta
11aa0 62 5f 63 75 72 73 6f 72 2a 2c 20 69 6e 74 20 69  b_cursor*, int i
11ab0 64 78 4e 75 6d 2c 20 63 6f 6e 73 74 20 63 68 61  dxNum, const cha
11ac0 72 20 2a 69 64 78 53 74 72 2c 0a 20 20 20 20 20  r *idxStr,.     
11ad0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
11ae0 72 67 63 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c  rgc, sqlite3_val
11af0 75 65 20 2a 2a 61 72 67 76 29 3b 0a 20 20 69 6e  ue **argv);.  in
11b00 74 20 28 2a 78 4e 65 78 74 29 28 73 71 6c 69 74  t (*xNext)(sqlit
11b10 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 2a 29  e3_vtab_cursor*)
11b20 3b 0a 20 20 69 6e 74 20 28 2a 78 45 6f 66 29 28  ;.  int (*xEof)(
11b30 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
11b40 73 6f 72 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78  sor*);.  int (*x
11b50 43 6f 6c 75 6d 6e 29 28 73 71 6c 69 74 65 33 5f  Column)(sqlite3_
11b60 76 74 61 62 5f 63 75 72 73 6f 72 2a 2c 20 73 71  vtab_cursor*, sq
11b70 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20  lite3_context*, 
11b80 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 52  int);.  int (*xR
11b90 6f 77 69 64 29 28 73 71 6c 69 74 65 33 5f 76 74  owid)(sqlite3_vt
11ba0 61 62 5f 63 75 72 73 6f 72 2a 2c 20 73 71 6c 69  ab_cursor*, sqli
11bb0 74 65 5f 69 6e 74 36 34 20 2a 70 52 6f 77 69 64  te_int64 *pRowid
11bc0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 55 70 64 61  );.  int (*xUpda
11bd0 74 65 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62  te)(sqlite3_vtab
11be0 20 2a 2c 20 69 6e 74 2c 20 73 71 6c 69 74 65 33   *, int, sqlite3
11bf0 5f 76 61 6c 75 65 20 2a 2a 2c 20 73 71 6c 69 74  _value **, sqlit
11c00 65 5f 69 6e 74 36 34 20 2a 29 3b 0a 20 20 69 6e  e_int64 *);.  in
11c10 74 20 28 2a 78 42 65 67 69 6e 29 28 73 71 6c 69  t (*xBegin)(sqli
11c20 74 65 33 5f 76 74 61 62 20 2a 70 56 54 61 62 29  te3_vtab *pVTab)
11c30 3b 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63 29  ;.  int (*xSync)
11c40 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70  (sqlite3_vtab *p
11c50 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a 78  VTab);.  int (*x
11c60 43 6f 6d 6d 69 74 29 28 73 71 6c 69 74 65 33 5f  Commit)(sqlite3_
11c70 76 74 61 62 20 2a 70 56 54 61 62 29 3b 0a 20 20  vtab *pVTab);.  
11c80 69 6e 74 20 28 2a 78 52 6f 6c 6c 62 61 63 6b 29  int (*xRollback)
11c90 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70  (sqlite3_vtab *p
11ca0 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a 78  VTab);.  int (*x
11cb0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 28 73 71  FindFunction)(sq
11cc0 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56 74 61  lite3_vtab *pVta
11cd0 62 2c 20 69 6e 74 20 6e 41 72 67 2c 20 63 6f 6e  b, int nArg, con
11ce0 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 0a  st char *zName,.
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d00 20 20 20 20 20 20 20 76 6f 69 64 20 28 2a 2a 70         void (**p
11d10 78 46 75 6e 63 29 28 73 71 6c 69 74 65 33 5f 63  xFunc)(sqlite3_c
11d20 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c 69  ontext*,int,sqli
11d30 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20 20  te3_value**),.  
11d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d50 20 20 20 20 20 76 6f 69 64 20 2a 2a 70 70 41 72       void **ppAr
11d60 67 29 3b 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  g);.};../*.** Th
11d70 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
11d80 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 61  info structure a
11d90 6e 64 20 69 74 73 20 73 75 62 73 74 72 75 63 74  nd its substruct
11da0 75 72 65 73 20 69 73 20 75 73 65 64 20 74 6f 0a  ures is used to.
11db0 2a 2a 20 70 61 73 73 20 69 6e 66 6f 72 6d 61 74  ** pass informat
11dc0 69 6f 6e 20 69 6e 74 6f 20 61 6e 64 20 72 65 63  ion into and rec
11dd0 65 69 76 65 20 74 68 65 20 72 65 70 6c 79 20 66  eive the reply f
11de0 72 6f 6d 20 74 68 65 20 78 42 65 73 74 49 6e 64  rom the xBestInd
11df0 65 78 0a 2a 2a 20 6d 65 74 68 6f 64 20 6f 66 20  ex.** method of 
11e00 61 6e 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  an sqlite3_modul
11e10 65 2e 20 20 54 68 65 20 66 69 65 6c 64 73 20 75  e.  The fields u
11e20 6e 64 65 72 20 2a 2a 49 6e 70 75 74 73 2a 2a 20  nder **Inputs** 
11e30 61 72 65 20 74 68 65 0a 2a 2a 20 69 6e 70 75 74  are the.** input
11e40 73 20 74 6f 20 78 42 65 73 74 49 6e 64 65 78 20  s to xBestIndex 
11e50 61 6e 64 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c  and are read-onl
11e60 79 2e 20 20 78 42 65 73 74 49 6e 64 65 78 20 69  y.  xBestIndex i
11e70 6e 73 65 72 74 73 20 69 74 73 0a 2a 2a 20 72 65  nserts its.** re
11e80 73 75 6c 74 73 20 69 6e 74 6f 20 74 68 65 20 2a  sults into the *
11e90 2a 4f 75 74 70 75 74 73 2a 2a 20 66 69 65 6c 64  *Outputs** field
11ea0 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 43 6f  s..**.** The aCo
11eb0 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61 79  nstraint[] array
11ec0 20 72 65 63 6f 72 64 73 20 57 48 45 52 45 20 63   records WHERE c
11ed0 6c 61 75 73 65 20 63 6f 6e 73 74 72 61 69 6e 74  lause constraint
11ee0 73 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f 72 6d  s of the.** form
11ef0 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20 20  :.**.**         
11f00 63 6f 6c 75 6d 6e 20 4f 50 20 65 78 70 72 0a 2a  column OP expr.*
11f10 2a 0a 2a 2a 20 57 68 65 72 65 20 4f 50 20 69 73  *.** Where OP is
11f20 20 3d 2c 20 3c 2c 20 3c 3d 2c 20 3e 2c 20 6f 72   =, <, <=, >, or
11f30 20 3e 3d 2e 20 20 54 68 65 20 70 61 72 74 69 63   >=.  The partic
11f40 75 6c 61 72 20 6f 70 65 72 61 74 6f 72 20 69 73  ular operator is
11f50 20 73 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61 43   stored.** in aC
11f60 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e 6f 70 2e 20  onstraint[].op. 
11f70 20 54 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68   The index of th
11f80 65 20 63 6f 6c 75 6d 6e 20 69 73 20 73 74 6f 72  e column is stor
11f90 65 64 20 69 6e 20 0a 2a 2a 20 61 43 6f 6e 73 74  ed in .** aConst
11fa0 72 61 69 6e 74 5b 5d 2e 69 43 6f 6c 75 6d 6e 2e  raint[].iColumn.
11fb0 20 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e    aConstraint[].
11fc0 75 73 61 62 6c 65 20 69 73 20 54 52 55 45 20 69  usable is TRUE i
11fd0 66 20 74 68 65 0a 2a 2a 20 65 78 70 72 20 6f 6e  f the.** expr on
11fe0 20 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20   the right-hand 
11ff0 73 69 64 65 20 63 61 6e 20 62 65 20 65 76 61 6c  side can be eval
12000 75 61 74 65 64 20 28 61 6e 64 20 74 68 75 73 20  uated (and thus 
12010 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a  the constraint.*
12020 2a 20 69 73 20 75 73 61 62 6c 65 29 20 61 6e 64  * is usable) and
12030 20 66 61 6c 73 65 20 69 66 20 69 74 20 63 61 6e   false if it can
12040 6e 6f 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6f  not..**.** The o
12050 70 74 69 6d 69 7a 65 72 20 61 75 74 6f 6d 61 74  ptimizer automat
12060 69 63 61 6c 6c 79 20 69 6e 76 65 72 74 73 20 74  ically inverts t
12070 65 72 6d 73 20 6f 66 20 74 68 65 20 66 6f 72 6d  erms of the form
12080 20 22 65 78 70 72 20 4f 50 20 63 6f 6c 75 6d 6e   "expr OP column
12090 22 0a 2a 2a 20 61 6e 64 20 6d 61 6b 65 73 20 6f  ".** and makes o
120a0 74 68 65 72 20 73 69 6d 70 6c 69 66 69 63 61 74  ther simplificat
120b0 69 6e 6f 73 20 74 6f 20 74 68 65 20 57 48 45 52  inos to the WHER
120c0 45 20 63 6c 61 75 73 65 20 69 6e 20 61 6e 20 61  E clause in an a
120d0 74 74 65 6d 70 74 20 74 6f 0a 2a 2a 20 67 65 74  ttempt to.** get
120e0 20 61 73 20 6d 61 6e 79 20 57 48 45 52 45 20 63   as many WHERE c
120f0 6c 61 75 73 65 20 74 65 72 6d 73 20 69 6e 74 6f  lause terms into
12100 20 74 68 65 20 66 6f 72 6d 20 73 68 6f 77 6e 20   the form shown 
12110 61 62 6f 76 65 20 61 73 20 70 6f 73 73 69 62 6c  above as possibl
12120 65 2e 0a 2a 2a 20 54 68 65 20 61 43 6f 6e 73 74  e..** The aConst
12130 72 61 69 6e 74 5b 5d 20 61 72 72 61 79 20 6f 6e  raint[] array on
12140 6c 79 20 72 65 70 6f 72 74 73 20 57 48 45 52 45  ly reports WHERE
12150 20 63 6c 61 75 73 65 20 74 65 72 6d 73 20 69 6e   clause terms in
12160 20 74 68 65 20 63 6f 72 72 65 63 74 0a 2a 2a 20   the correct.** 
12170 66 6f 72 6d 20 74 68 61 74 20 72 65 66 65 72 20  form that refer 
12180 74 6f 20 74 68 65 20 70 61 72 74 69 63 75 6c 61  to the particula
12190 72 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  r virtual table 
121a0 62 65 69 6e 67 20 71 75 65 72 69 65 64 2e 0a 2a  being queried..*
121b0 2a 0a 2a 2a 20 49 6e 66 6f 72 6d 61 74 69 6f 6e  *.** Information
121c0 20 61 62 6f 75 74 20 74 68 65 20 4f 52 44 45 52   about the ORDER
121d0 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 73 74   BY clause is st
121e0 6f 72 65 64 20 69 6e 20 61 4f 72 64 65 72 42 79  ored in aOrderBy
121f0 5b 5d 2e 0a 2a 2a 20 45 61 63 68 20 74 65 72 6d  []..** Each term
12200 20 6f 66 20 61 4f 72 64 65 72 42 79 20 72 65 63   of aOrderBy rec
12210 6f 72 64 73 20 61 20 63 6f 6c 75 6d 6e 20 6f 66  ords a column of
12220 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
12230 61 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ause..**.** The 
12240 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
12250 64 20 6d 75 73 74 20 66 69 6c 6c 20 61 43 6f 6e  d must fill aCon
12260 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 77  straintUsage[] w
12270 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  ith information.
12280 2a 2a 20 61 62 6f 75 74 20 77 68 61 74 20 70 61  ** about what pa
12290 72 61 6d 65 74 65 72 73 20 74 6f 20 70 61 73 73  rameters to pass
122a0 20 74 6f 20 78 46 69 6c 74 65 72 2e 20 20 49 66   to xFilter.  If
122b0 20 61 72 67 76 49 6e 64 65 78 3e 30 20 74 68 65   argvIndex>0 the
122c0 6e 0a 2a 2a 20 74 68 65 20 72 69 67 68 74 2d 68  n.** the right-h
122d0 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20  and side of the 
122e0 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 61 43  corresponding aC
122f0 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 69 73 20 65  onstraint[] is e
12300 76 61 6c 75 61 74 65 64 0a 2a 2a 20 61 6e 64 20  valuated.** and 
12310 62 65 63 6f 6d 65 73 20 74 68 65 20 61 72 67 76  becomes the argv
12320 49 6e 64 65 78 2d 74 68 20 65 6e 74 72 79 20 69  Index-th entry i
12330 6e 20 61 72 67 76 2e 20 20 49 66 20 61 43 6f 6e  n argv.  If aCon
12340 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 6f  straintUsage[].o
12350 6d 69 74 0a 2a 2a 20 69 73 20 74 72 75 65 2c 20  mit.** is true, 
12360 74 68 65 6e 20 74 68 65 20 63 6f 6e 73 74 72 61  then the constra
12370 69 6e 74 20 69 73 20 61 73 73 75 6d 65 64 20 74  int is assumed t
12380 6f 20 62 65 20 66 75 6c 6c 79 20 68 61 6e 64 6c  o be fully handl
12390 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 76 69 72  ed by the.** vir
123a0 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20 69  tual table and i
123b0 73 20 6e 6f 74 20 63 68 65 63 6b 65 64 20 61 67  s not checked ag
123c0 61 69 6e 20 62 79 20 53 51 4c 69 74 65 2e 0a 2a  ain by SQLite..*
123d0 2a 0a 2a 2a 20 54 68 65 20 69 64 78 4e 75 6d 20  *.** The idxNum 
123e0 61 6e 64 20 69 64 78 50 74 72 20 76 61 6c 75 65  and idxPtr value
123f0 73 20 61 72 65 20 72 65 63 6f 72 64 65 64 20 61  s are recorded a
12400 6e 64 20 70 61 73 73 65 64 20 69 6e 74 6f 20 78  nd passed into x
12410 46 69 6c 74 65 72 2e 0a 2a 2a 20 73 71 6c 69 74  Filter..** sqlit
12420 65 33 5f 66 72 65 65 28 29 20 69 73 20 75 73 65  e3_free() is use
12430 64 20 74 6f 20 66 72 65 65 20 69 64 78 50 74 72  d to free idxPtr
12440 20 69 66 20 6e 65 65 64 54 6f 46 72 65 65 49 64   if needToFreeId
12450 78 50 74 72 20 69 73 20 74 72 75 65 2e 0a 2a 2a  xPtr is true..**
12460 0a 2a 2a 20 54 68 65 20 6f 72 64 65 72 42 79 43  .** The orderByC
12470 6f 6e 73 75 6d 65 64 20 6d 65 61 6e 73 20 74 68  onsumed means th
12480 61 74 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 78  at output from x
12490 46 69 6c 74 65 72 20 77 69 6c 6c 20 6f 63 63 75  Filter will occu
124a0 72 20 69 6e 0a 2a 2a 20 74 68 65 20 63 6f 72 72  r in.** the corr
124b0 65 63 74 20 6f 72 64 65 72 20 74 6f 20 73 61 74  ect order to sat
124c0 69 73 66 79 20 74 68 65 20 4f 52 44 45 52 20 42  isfy the ORDER B
124d0 59 20 63 6c 61 75 73 65 20 73 6f 20 74 68 61 74  Y clause so that
124e0 20 6e 6f 20 73 65 70 61 72 61 74 65 0a 2a 2a 20   no separate.** 
124f0 73 6f 72 74 69 6e 67 20 73 74 65 70 20 69 73 20  sorting step is 
12500 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20  required..**.** 
12510 54 68 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73  The estimatedCos
12520 74 20 76 61 6c 75 65 20 69 73 20 61 6e 20 65 73  t value is an es
12530 74 69 6d 61 74 65 20 6f 66 20 74 68 65 20 63 6f  timate of the co
12540 73 74 20 6f 66 20 64 6f 69 6e 67 20 74 68 65 0a  st of doing the.
12550 2a 2a 20 70 61 72 74 69 63 75 6c 61 72 20 6c 6f  ** particular lo
12560 6f 6b 75 70 2e 20 20 41 20 66 75 6c 6c 20 73 63  okup.  A full sc
12570 61 6e 20 6f 66 20 61 20 74 61 62 6c 65 20 77 69  an of a table wi
12580 74 68 20 4e 20 65 6e 74 72 69 65 73 20 73 68 6f  th N entries sho
12590 75 6c 64 20 68 61 76 65 0a 2a 2a 20 61 20 63 6f  uld have.** a co
125a0 73 74 20 6f 66 20 4e 2e 20 20 41 20 62 69 6e 61  st of N.  A bina
125b0 72 79 20 73 65 61 72 63 68 20 6f 66 20 61 20 74  ry search of a t
125c0 61 62 6c 65 20 6f 66 20 4e 20 65 6e 74 72 69 65  able of N entrie
125d0 73 20 73 68 6f 75 6c 64 20 68 61 76 65 20 61 0a  s should have a.
125e0 2a 2a 20 63 6f 73 74 20 6f 66 20 61 70 70 72 6f  ** cost of appro
125f0 78 69 6d 61 74 65 6c 79 20 6c 6f 67 28 4e 29 2e  ximately log(N).
12600 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c 69 74  .*/.struct sqlit
12610 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 7b 0a  e3_index_info {.
12620 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0a 20    /* Inputs */. 
12630 20 63 6f 6e 73 74 20 69 6e 74 20 6e 43 6f 6e 73   const int nCons
12640 74 72 61 69 6e 74 3b 20 20 20 20 20 2f 2a 20 4e  traint;     /* N
12650 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
12660 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20   in aConstraint 
12670 2a 2f 0a 20 20 63 6f 6e 73 74 20 73 74 72 75 63  */.  const struc
12680 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
12690 63 6f 6e 73 74 72 61 69 6e 74 20 7b 0a 20 20 20  constraint {.   
126a0 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 20    int iColumn;  
126b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 43              /* C
126c0 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61  olumn on left-ha
126d0 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74  nd side of const
126e0 72 61 69 6e 74 20 2a 2f 0a 20 20 20 20 20 75 6e  raint */.     un
126f0 73 69 67 6e 65 64 20 63 68 61 72 20 6f 70 3b 20  signed char op; 
12700 20 20 20 20 20 20 20 20 2f 2a 20 43 6f 6e 73 74          /* Const
12710 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 2a  raint operator *
12720 2f 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20  /.     unsigned 
12730 63 68 61 72 20 75 73 61 62 6c 65 3b 20 20 20 20  char usable;    
12740 20 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69 73   /* True if this
12750 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75   constraint is u
12760 73 61 62 6c 65 20 2a 2f 0a 20 20 20 20 20 69 6e  sable */.     in
12770 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 20 20  t iTermOffset;  
12780 20 20 20 20 20 20 20 20 2f 2a 20 55 73 65 64 20          /* Used 
12790 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 78 42 65  internally - xBe
127a0 73 74 49 6e 64 65 78 20 73 68 6f 75 6c 64 20 69  stIndex should i
127b0 67 6e 6f 72 65 20 2a 2f 0a 20 20 7d 20 2a 63 6f  gnore */.  } *co
127c0 6e 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b  nst aConstraint;
127d0 20 20 20 20 20 20 2f 2a 20 54 61 62 6c 65 20 6f        /* Table o
127e0 66 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  f WHERE clause c
127f0 6f 6e 73 74 72 61 69 6e 74 73 20 2a 2f 0a 20 20  onstraints */.  
12800 63 6f 6e 73 74 20 69 6e 74 20 6e 4f 72 64 65 72  const int nOrder
12810 42 79 3b 20 20 20 20 20 20 20 20 2f 2a 20 4e 75  By;        /* Nu
12820 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e  mber of terms in
12830 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
12840 61 75 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ause */.  const 
12850 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
12860 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 7b 0a 20  ndex_orderby {. 
12870 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b      int iColumn;
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
12890 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a   Column number *
128a0 2f 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20  /.     unsigned 
128b0 63 68 61 72 20 64 65 73 63 3b 20 20 20 20 20 20  char desc;      
128c0 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53   /* True for DES
128d0 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53  C.  False for AS
128e0 43 2e 20 2a 2f 0a 20 20 7d 20 2a 63 6f 6e 73 74  C. */.  } *const
128f0 20 61 4f 72 64 65 72 42 79 3b 20 20 20 20 20 20   aOrderBy;      
12900 20 20 20 2f 2a 20 54 68 65 20 4f 52 44 45 52 20     /* The ORDER 
12910 42 59 20 63 6c 61 75 73 65 20 2a 2f 0a 0a 20 20  BY clause */..  
12920 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0a 20 20  /* Outputs */.  
12930 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
12940 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
12950 75 73 61 67 65 20 7b 0a 20 20 20 20 69 6e 74 20  usage {.    int 
12960 61 72 67 76 49 6e 64 65 78 3b 20 20 20 20 20 20  argvIndex;      
12970 20 20 20 20 20 2f 2a 20 69 66 20 3e 30 2c 20 63       /* if >0, c
12980 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
12990 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
129a0 6c 74 65 72 20 2a 2f 0a 20 20 20 20 75 6e 73 69  lter */.    unsi
129b0 67 6e 65 64 20 63 68 61 72 20 6f 6d 69 74 3b 20  gned char omit; 
129c0 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63       /* Do not c
129d0 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74  ode a test for t
129e0 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a  his constraint *
129f0 2f 0a 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43 6f  /.  } *const aCo
12a00 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0a 20  nstraintUsage;. 
12a10 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20   int idxNum;    
12a20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e              /* N
12a30 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64  umber used to id
12a40 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78  entify the index
12a50 20 2a 2f 0a 20 20 63 68 61 72 20 2a 69 64 78 53   */.  char *idxS
12a60 74 72 3b 20 20 20 20 20 20 20 20 20 20 20 20 20  tr;             
12a70 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73   /* String, poss
12a80 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  ibly obtained fr
12a90 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  om sqlite3_mallo
12aa0 63 20 2a 2f 0a 20 20 69 6e 74 20 6e 65 65 64 54  c */.  int needT
12ab0 6f 46 72 65 65 49 64 78 53 74 72 3b 20 20 20 20  oFreeIdxStr;    
12ac0 20 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72    /* Free idxStr
12ad0 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
12ae0 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f  ree() if true */
12af0 0a 20 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f  .  int orderByCo
12b00 6e 73 75 6d 65 64 3b 20 20 20 20 20 20 20 2f 2a  nsumed;       /*
12b10 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20   True if output 
12b20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72  is already order
12b30 65 64 20 2a 2f 0a 20 20 64 6f 75 62 6c 65 20 65  ed */.  double e
12b40 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 20 20  stimatedCost;   
12b50 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20     /* Estimated 
12b60 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68  cost of using th
12b70 69 73 20 69 6e 64 65 78 20 2a 2f 0a 7d 3b 0a 23  is index */.};.#
12b80 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
12b90 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 45  DEX_CONSTRAINT_E
12ba0 51 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20 53  Q    2.#define S
12bb0 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53  QLITE_INDEX_CONS
12bc0 54 52 41 49 4e 54 5f 47 54 20 20 20 20 34 0a 23  TRAINT_GT    4.#
12bd0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
12be0 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4c  DEX_CONSTRAINT_L
12bf0 45 20 20 20 20 38 0a 23 64 65 66 69 6e 65 20 53  E    8.#define S
12c00 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53  QLITE_INDEX_CONS
12c10 54 52 41 49 4e 54 5f 4c 54 20 20 20 20 31 36 0a  TRAINT_LT    16.
12c20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
12c30 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  NDEX_CONSTRAINT_
12c40 47 45 20 20 20 20 33 32 0a 23 64 65 66 69 6e 65  GE    32.#define
12c50 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f   SQLITE_INDEX_CO
12c60 4e 53 54 52 41 49 4e 54 5f 4d 41 54 43 48 20 36  NSTRAINT_MATCH 6
12c70 34 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f  4../*.** This ro
12c80 75 74 69 6e 65 20 69 73 20 75 73 65 64 20 74 6f  utine is used to
12c90 20 72 65 67 69 73 74 65 72 20 61 20 6e 65 77 20   register a new 
12ca0 6d 6f 64 75 6c 65 20 6e 61 6d 65 20 77 69 74 68  module name with
12cb0 20 61 6e 20 53 51 4c 69 74 65 0a 2a 2a 20 63 6f   an SQLite.** co
12cc0 6e 6e 65 63 74 69 6f 6e 2e 20 20 4d 6f 64 75 6c  nnection.  Modul
12cd0 65 20 6e 61 6d 65 73 20 6d 75 73 74 20 62 65 20  e names must be 
12ce0 72 65 67 69 73 74 65 72 65 64 20 62 65 66 6f 72  registered befor
12cf0 65 20 63 72 65 61 74 69 6e 67 20 6e 65 77 0a 2a  e creating new.*
12d00 2a 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  * virtual tables
12d10 20 6f 6e 20 74 68 65 20 6d 6f 64 75 6c 65 2c 20   on the module, 
12d20 6f 72 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20  or before using 
12d30 70 72 65 65 78 69 73 74 69 6e 67 20 76 69 72 74  preexisting virt
12d40 75 61 6c 0a 2a 2a 20 74 61 62 6c 65 73 20 6f 66  ual.** tables of
12d50 20 74 68 65 20 6d 6f 64 75 6c 65 2e 0a 2a 2f 0a   the module..*/.
12d60 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61  int sqlite3_crea
12d70 74 65 5f 6d 6f 64 75 6c 65 28 0a 20 20 73 71 6c  te_module(.  sql
12d80 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
12d90 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 69 74          /* SQLit
12da0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  e connection to 
12db0 72 65 67 69 73 74 65 72 20 6d 6f 64 75 6c 65 20  register module 
12dc0 77 69 74 68 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  with */.  const 
12dd0 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 20 20 20  char *zName,    
12de0 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20       /* Name of 
12df0 74 68 65 20 6d 6f 64 75 6c 65 20 2a 2f 0a 20 20  the module */.  
12e00 63 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 6d 6f  const sqlite3_mo
12e10 64 75 6c 65 20 2a 2c 20 20 20 20 2f 2a 20 4d 65  dule *,    /* Me
12e20 74 68 6f 64 73 20 66 6f 72 20 74 68 65 20 6d 6f  thods for the mo
12e30 64 75 6c 65 20 2a 2f 0a 20 20 76 6f 69 64 20 2a  dule */.  void *
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e50 20 20 20 20 20 2f 2a 20 43 6c 69 65 6e 74 20 64       /* Client d
12e60 61 74 61 20 66 6f 72 20 78 43 72 65 61 74 65 2f  ata for xCreate/
12e70 78 43 6f 6e 6e 65 63 74 20 2a 2f 0a 29 3b 0a 0a  xConnect */.);..
12e80 2f 2a 0a 2a 2a 20 45 76 65 72 79 20 6d 6f 64 75  /*.** Every modu
12e90 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
12ea0 6e 20 75 73 65 73 20 61 20 73 75 62 63 6c 61 73  n uses a subclas
12eb0 73 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  s of the followi
12ec0 6e 67 20 73 74 72 75 63 74 75 72 65 0a 2a 2a 20  ng structure.** 
12ed0 74 6f 20 64 65 73 63 72 69 62 65 20 61 20 70 61  to describe a pa
12ee0 72 74 69 63 75 6c 61 72 20 69 6e 73 74 61 6e 63  rticular instanc
12ef0 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e  e of the module.
12f00 20 20 45 61 63 68 20 73 75 62 63 6c 61 73 73 20    Each subclass 
12f10 77 69 6c 6c 0a 2a 2a 20 62 65 20 74 61 79 6c 6f  will.** be taylo
12f20 72 65 64 20 74 6f 20 74 68 65 20 73 70 65 63 69  red to the speci
12f30 66 69 63 20 6e 65 65 64 73 20 6f 66 20 74 68 65  fic needs of the
12f40 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
12f50 74 61 74 69 6f 6e 2e 20 20 20 54 68 65 0a 2a 2a  tation.   The.**
12f60 20 70 75 72 70 6f 73 65 20 6f 66 20 74 68 69 73   purpose of this
12f70 20 73 75 70 65 72 63 6c 61 73 73 20 69 73 20 74   superclass is t
12f80 6f 20 64 65 66 69 6e 65 20 63 65 72 74 61 69 6e  o define certain
12f90 20 66 69 65 6c 64 73 20 74 68 61 74 20 61 72 65   fields that are
12fa0 20 63 6f 6d 6d 6f 6e 0a 2a 2a 20 74 6f 20 61 6c   common.** to al
12fb0 6c 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  l module impleme
12fc0 6e 74 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20  ntations..**.** 
12fd0 56 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20 6d  Virtual tables m
12fe0 65 74 68 6f 64 73 20 63 61 6e 20 73 65 74 20 61  ethods can set a
12ff0 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  n error message 
13000 62 79 20 61 73 73 69 67 6e 69 6e 67 20 61 0a 2a  by assigning a.*
13010 2a 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65  * string obtaine
13020 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d  d from sqlite3_m
13030 70 72 69 6e 74 66 28 29 20 74 6f 20 7a 45 72 72  printf() to zErr
13040 4d 73 67 2e 20 20 54 68 65 20 6d 65 74 68 6f 64  Msg.  The method
13050 20 73 68 6f 75 6c 64 0a 2a 2a 20 74 61 6b 65 20   should.** take 
13060 63 61 72 65 20 74 68 61 74 20 61 6e 79 20 70 72  care that any pr
13070 69 6f 72 20 73 74 72 69 6e 67 20 69 73 20 66 72  ior string is fr
13080 65 65 64 20 62 79 20 61 20 63 61 6c 6c 20 74 6f  eed by a call to
13090 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 0a   sqlite3_free().
130a0 2a 2a 20 70 72 69 6f 72 20 74 6f 20 61 73 73 69  ** prior to assi
130b0 67 6e 69 6e 67 20 61 20 6e 65 77 20 73 74 72 69  gning a new stri
130c0 6e 67 20 74 6f 20 7a 45 72 72 4d 73 67 2e 20 20  ng to zErrMsg.  
130d0 41 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20  After the error 
130e0 6d 65 73 73 61 67 65 0a 2a 2a 20 69 73 20 64 65  message.** is de
130f0 6c 69 76 65 72 65 64 20 75 70 20 74 6f 20 74 68  livered up to th
13100 65 20 63 6c 69 65 6e 74 20 61 70 70 6c 69 63 61  e client applica
13110 74 69 6f 6e 2c 20 74 68 65 20 73 74 72 69 6e 67  tion, the string
13120 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74   will be automat
13130 69 63 61 6c 6c 79 0a 2a 2a 20 66 72 65 65 64 20  ically.** freed 
13140 62 79 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  by sqlite3_free(
13150 29 20 61 6e 64 20 74 68 65 20 7a 45 72 72 4d 73  ) and the zErrMs
13160 67 20 66 69 65 6c 64 20 77 69 6c 6c 20 62 65 20  g field will be 
13170 7a 65 72 6f 65 64 2e 20 20 4e 6f 74 65 0a 2a 2a  zeroed.  Note.**
13180 20 74 68 61 74 20 73 71 6c 69 74 65 33 5f 6d 70   that sqlite3_mp
13190 72 69 6e 74 66 28 29 20 61 6e 64 20 73 71 6c 69  rintf() and sqli
131a0 74 65 33 5f 66 72 65 65 28 29 20 61 72 65 20 75  te3_free() are u
131b0 73 65 64 20 6f 6e 20 74 68 65 20 7a 45 72 72 4d  sed on the zErrM
131c0 73 67 20 66 69 65 6c 64 0a 2a 2a 20 73 69 6e 63  sg field.** sinc
131d0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  e virtual tables
131e0 20 61 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 69 6d   are commonly im
131f0 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6c 6f 61  plemented in loa
13200 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e 73  dable extensions
13210 20 77 68 69 63 68 0a 2a 2a 20 64 6f 20 6e 6f 74   which.** do not
13220 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6f 20   have access to 
13230 73 71 6c 69 74 65 33 4d 50 72 69 6e 74 66 28 29  sqlite3MPrintf()
13240 20 6f 72 20 73 71 6c 69 74 65 33 46 72 65 65 28   or sqlite3Free(
13250 29 2e 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c  )..*/.struct sql
13260 69 74 65 33 5f 76 74 61 62 20 7b 0a 20 20 63 6f  ite3_vtab {.  co
13270 6e 73 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  nst sqlite3_modu
13280 6c 65 20 2a 70 4d 6f 64 75 6c 65 3b 20 20 2f 2a  le *pModule;  /*
13290 20 54 68 65 20 6d 6f 64 75 6c 65 20 66 6f 72 20   The module for 
132a0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
132b0 6c 65 20 2a 2f 0a 20 20 69 6e 74 20 6e 52 65 66  le */.  int nRef
132c0 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
132d0 20 20 20 20 20 20 20 20 2f 2a 20 55 73 65 64 20          /* Used 
132e0 69 6e 74 65 72 6e 61 6c 6c 79 20 2a 2f 0a 20 20  internally */.  
132f0 63 68 61 72 20 2a 7a 45 72 72 4d 73 67 3b 20 20  char *zErrMsg;  
13300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13310 2f 2a 20 45 72 72 6f 72 20 6d 65 73 73 61 67 65  /* Error message
13320 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 70   from sqlite3_mp
13330 72 69 6e 74 66 28 29 20 2a 2f 0a 20 20 2f 2a 20  rintf() */.  /* 
13340 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  Virtual table im
13350 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77 69  plementations wi
13360 6c 6c 20 74 79 70 69 63 61 6c 6c 79 20 61 64 64  ll typically add
13370 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c   additional fiel
13380 64 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 20 45 76 65  ds */.};../* Eve
13390 72 79 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  ry module implem
133a0 65 6e 74 61 74 69 6f 6e 20 75 73 65 73 20 61 20  entation uses a 
133b0 73 75 62 63 6c 61 73 73 20 6f 66 20 74 68 65 20  subclass of the 
133c0 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 75 63 74  following struct
133d0 75 72 65 0a 2a 2a 20 74 6f 20 64 65 73 63 72 69  ure.** to descri
133e0 62 65 20 63 75 72 73 6f 72 73 20 74 68 61 74 20  be cursors that 
133f0 70 6f 69 6e 74 20 69 6e 74 6f 20 74 68 65 20 76  point into the v
13400 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64  irtual table and
13410 20 61 72 65 20 75 73 65 64 0a 2a 2a 20 74 6f 20   are used.** to 
13420 6c 6f 6f 70 20 74 68 72 6f 75 67 68 20 74 68 65  loop through the
13430 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
13440 20 43 75 72 73 6f 72 73 20 61 72 65 20 63 72 65   Cursors are cre
13450 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 0a 2a  ated using the.*
13460 2a 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 6f  * xOpen method o
13470 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20 45  f the module.  E
13480 61 63 68 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  ach module imple
13490 6d 65 6e 74 61 74 69 6f 6e 20 77 69 6c 6c 20 64  mentation will d
134a0 65 66 69 6e 65 0a 2a 2a 20 74 68 65 20 63 6f 6e  efine.** the con
134b0 74 65 6e 74 20 6f 66 20 61 20 63 75 72 73 6f 72  tent of a cursor
134c0 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 73 75   structure to su
134d0 69 74 20 69 74 73 20 6f 77 6e 20 6e 65 65 64 73  it its own needs
134e0 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 73 75 70  ..**.** This sup
134f0 65 72 63 6c 61 73 73 20 65 78 69 73 74 73 20 69  erclass exists i
13500 6e 20 6f 72 64 65 72 20 74 6f 20 64 65 66 69 6e  n order to defin
13510 65 20 66 69 65 6c 64 73 20 6f 66 20 74 68 65 20  e fields of the 
13520 63 75 72 73 6f 72 20 74 68 61 74 0a 2a 2a 20 61  cursor that.** a
13530 72 65 20 63 6f 6d 6d 6f 6e 20 74 6f 20 61 6c 6c  re common to all
13540 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
13550 2e 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c 69  ..*/.struct sqli
13560 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
13570 7b 0a 20 20 73 71 6c 69 74 65 33 5f 76 74 61 62  {.  sqlite3_vtab
13580 20 2a 70 56 74 61 62 3b 20 20 20 20 20 20 2f 2a   *pVtab;      /*
13590 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6f   Virtual table o
135a0 66 20 74 68 69 73 20 63 75 72 73 6f 72 20 2a 2f  f this cursor */
135b0 0a 20 20 2f 2a 20 56 69 72 74 75 61 6c 20 74 61  .  /* Virtual ta
135c0 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ble implementati
135d0 6f 6e 73 20 77 69 6c 6c 20 74 79 70 69 63 61 6c  ons will typical
135e0 6c 79 20 61 64 64 20 61 64 64 69 74 69 6f 6e 61  ly add additiona
135f0 6c 20 66 69 65 6c 64 73 20 2a 2f 0a 7d 3b 0a 0a  l fields */.};..
13600 2f 2a 0a 2a 2a 20 54 68 65 20 78 43 72 65 61 74  /*.** The xCreat
13610 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d  e and xConnect m
13620 65 74 68 6f 64 73 20 6f 66 20 61 20 6d 6f 64 75  ethods of a modu
13630 6c 65 20 75 73 65 20 74 68 65 20 66 6f 6c 6c 6f  le use the follo
13640 77 69 6e 67 20 41 50 49 0a 2a 2a 20 74 6f 20 64  wing API.** to d
13650 65 63 6c 61 72 65 20 74 68 65 20 66 6f 72 6d 61  eclare the forma
13660 74 20 28 74 68 65 20 6e 61 6d 65 73 20 61 6e 64  t (the names and
13670 20 64 61 74 61 74 79 70 65 73 20 6f 66 20 74 68   datatypes of th
13680 65 20 63 6f 6c 75 6d 6e 73 29 20 6f 66 0a 2a 2a  e columns) of.**
13690 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
136a0 6c 65 73 20 74 68 65 79 20 69 6d 70 6c 65 6d 65  les they impleme
136b0 6e 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  nt..*/.int sqlit
136c0 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
136d0 73 71 6c 69 74 65 33 2a 2c 20 63 6f 6e 73 74 20  sqlite3*, const 
136e0 63 68 61 72 20 2a 7a 43 72 65 61 74 65 54 61 62  char *zCreateTab
136f0 6c 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 56 69 72 74  le);../*.** Virt
13700 75 61 6c 20 74 61 62 6c 65 73 20 63 61 6e 20 70  ual tables can p
13710 72 6f 76 69 64 65 20 61 6c 74 65 72 6e 61 74 69  rovide alternati
13720 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ve implementatio
13730 6e 73 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 0a  ns of functions.
13740 2a 2a 20 75 73 69 6e 67 20 74 68 65 20 78 46 69  ** using the xFi
13750 6e 64 46 75 6e 63 74 69 6f 6e 20 6d 65 74 68 6f  ndFunction metho
13760 64 2e 20 20 42 75 74 20 67 6c 6f 62 61 6c 20 76  d.  But global v
13770 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 6f 73 65  ersions of those
13780 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 6d 75   functions.** mu
13790 73 74 20 65 78 69 73 74 20 69 6e 20 6f 72 64 65  st exist in orde
137a0 72 20 74 6f 20 62 65 20 6f 76 65 72 6c 6f 61 64  r to be overload
137b0 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 41  ed..**.** This A
137c0 50 49 20 6d 61 6b 65 73 20 73 75 72 65 20 61 20  PI makes sure a 
137d0 67 6c 6f 62 61 6c 20 76 65 72 73 69 6f 6e 20 6f  global version o
137e0 66 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 69 74  f a function wit
137f0 68 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a  h a particular.*
13800 2a 20 6e 61 6d 65 20 61 6e 64 20 6e 75 6d 62 65  * name and numbe
13810 72 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73 20  r of parameters 
13820 65 78 69 73 74 73 2e 20 20 49 66 20 6e 6f 20 73  exists.  If no s
13830 75 63 68 20 66 75 6e 63 74 69 6f 6e 20 65 78 69  uch function exi
13840 73 74 73 0a 2a 2a 20 62 65 66 6f 72 65 20 74 68  sts.** before th
13850 69 73 20 41 50 49 20 69 73 20 63 61 6c 6c 65 64  is API is called
13860 2c 20 61 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e  , a new function
13870 20 69 73 20 63 72 65 61 74 65 64 2e 20 20 54 68   is created.  Th
13880 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
13890 0a 2a 2a 20 6f 66 20 74 68 65 20 6e 65 77 20 66  .** of the new f
138a0 75 6e 63 74 69 6f 6e 20 61 6c 77 61 79 73 20 63  unction always c
138b0 61 75 73 65 73 20 61 6e 20 65 78 63 65 70 74 69  auses an excepti
138c0 6f 6e 20 74 6f 20 62 65 20 74 68 72 6f 77 6e 2e  on to be thrown.
138d0 20 20 53 6f 0a 2a 2a 20 74 68 65 20 6e 65 77 20    So.** the new 
138e0 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20  function is not 
138f0 67 6f 6f 64 20 66 6f 72 20 61 6e 79 74 68 69 6e  good for anythin
13900 67 20 62 79 20 69 74 73 65 6c 66 2e 20 20 49 74  g by itself.  It
13910 73 20 6f 6e 6c 79 0a 2a 2a 20 70 75 72 70 6f 73  s only.** purpos
13920 65 20 69 73 20 74 6f 20 62 65 20 61 20 70 6c 61  e is to be a pla
13930 63 65 2d 68 6f 6c 64 65 72 20 66 75 6e 63 74 69  ce-holder functi
13940 6f 6e 20 74 68 61 74 20 63 61 6e 20 62 65 20 6f  on that can be o
13950 76 65 72 6c 6f 61 64 65 64 0a 2a 2a 20 62 79 20  verloaded.** by 
13960 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 2e 0a  virtual tables..
13970 2a 2a 0a 2a 2a 20 54 68 69 73 20 41 50 49 20 73  **.** This API s
13980 68 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 64 65  hould be conside
13990 72 65 64 20 70 61 72 74 20 6f 66 20 74 68 65 20  red part of the 
139a0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e  virtual table in
139b0 74 65 72 66 61 63 65 2c 0a 2a 2a 20 77 68 69 63  terface,.** whic
139c0 68 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61  h is experimenta
139d0 6c 20 61 6e 64 20 73 75 62 6a 65 63 74 20 74 6f  l and subject to
139e0 20 63 68 61 6e 67 65 2e 0a 2a 2f 0a 69 6e 74 20   change..*/.int 
139f0 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64  sqlite3_overload
13a00 5f 66 75 6e 63 74 69 6f 6e 28 73 71 6c 69 74 65  _function(sqlite
13a10 33 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  3*, const char *
13a20 7a 46 75 6e 63 4e 61 6d 65 2c 20 69 6e 74 20 6e  zFuncName, int n
13a30 41 72 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  Arg);../*.** The
13a40 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 74 68   interface to th
13a50 65 20 76 69 72 74 75 61 6c 2d 74 61 62 6c 65 20  e virtual-table 
13a60 6d 65 63 68 61 6e 69 73 6d 20 64 65 66 69 6e 65  mechanism define
13a70 64 20 61 62 6f 76 65 20 28 62 61 63 6b 20 75 70  d above (back up
13a80 0a 2a 2a 20 74 6f 20 61 20 63 6f 6d 6d 65 6e 74  .** to a comment
13a90 20 72 65 6d 61 72 6b 61 62 6c 79 20 73 69 6d 69   remarkably simi
13aa0 6c 61 72 20 74 6f 20 74 68 69 73 20 6f 6e 65 29  lar to this one)
13ab0 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 63 6f   is currently co
13ac0 6e 73 69 64 65 72 65 64 0a 2a 2a 20 74 6f 20 62  nsidered.** to b
13ad0 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e 20  e experimental. 
13ae0 20 54 68 65 20 69 6e 74 65 72 66 61 63 65 20 6d   The interface m
13af0 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20 69  ight change in i
13b00 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 61 79 73  ncompatible ways
13b10 2e 0a 2a 2a 20 49 66 20 74 68 69 73 20 69 73 20  ..** If this is 
13b20 61 20 70 72 6f 62 6c 65 6d 20 66 6f 72 20 79 6f  a problem for yo
13b30 75 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 74 68  u, do not use th
13b40 65 20 69 6e 74 65 72 66 61 63 65 20 61 74 20 74  e interface at t
13b50 68 69 73 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20  his time..**.** 
13b60 57 68 65 6e 20 74 68 65 20 76 69 72 74 75 61 6c  When the virtual
13b70 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e 69 73 6d  -table mechanism
13b80 20 73 74 61 62 6c 69 7a 65 73 2c 20 77 65 20 77   stablizes, we w
13b90 69 6c 6c 20 64 65 63 6c 61 72 65 20 74 68 65 0a  ill declare the.
13ba0 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 66 69 78  ** interface fix
13bb0 65 64 2c 20 73 75 70 70 6f 72 74 20 69 74 20 69  ed, support it i
13bc0 6e 64 65 66 69 6e 69 74 65 6c 79 2c 20 61 6e 64  ndefinitely, and
13bd0 20 72 65 6d 6f 76 65 20 74 68 69 73 20 63 6f 6d   remove this com
13be0 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 20  ment..**.****** 
13bf0 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20 73  EXPERIMENTAL - s
13c00 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
13c10 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65 20   without notice 
13c20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a  **************.*
13c30 2f 0a 0a 2f 2a 0a 2a 2a 20 55 6e 64 6f 20 74 68  /../*.** Undo th
13c40 65 20 68 61 63 6b 20 74 68 61 74 20 63 6f 6e 76  e hack that conv
13c50 65 72 74 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f  erts floating po
13c60 69 6e 74 20 74 79 70 65 73 20 74 6f 20 69 6e 74  int types to int
13c70 65 67 65 72 20 66 6f 72 0a 2a 2a 20 62 75 69 6c  eger for.** buil
13c80 64 73 20 6f 6e 20 70 72 6f 63 65 73 73 6f 72 73  ds on processors
13c90 20 77 69 74 68 6f 75 74 20 66 6c 6f 61 74 69 6e   without floatin
13ca0 67 20 70 6f 69 6e 74 20 73 75 70 70 6f 72 74 2e  g point support.
13cb0 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54  .*/.#ifdef SQLIT
13cc0 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f  E_OMIT_FLOATING_
13cd0 50 4f 49 4e 54 0a 23 20 75 6e 64 65 66 20 64 6f  POINT.# undef do
13ce0 75 62 6c 65 0a 23 65 6e 64 69 66 0a 0a 23 69 66  uble.#endif..#if
13cf0 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a  def __cplusplus.
13d00 7d 20 20 2f 2a 20 45 6e 64 20 6f 66 20 74 68 65  }  /* End of the
13d10 20 27 65 78 74 65 72 6e 20 22 43 22 27 20 62 6c   'extern "C"' bl
13d20 6f 63 6b 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 65  ock */.#endif.#e
13d30 6e 64 69 66 0a                                   ndif.