/ Hex Artifact Content
Login

Artifact 6b7383baf76070214f6381f603328ca9b22a7fae:


0000: 2f 2a 0a 2a 2a 20 32 30 30 31 20 53 65 70 74 65  /*.** 2001 Septe
0010: 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a 20 54 68  mber 15.**.** Th
0020: 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69  e author disclai
0030: 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20  ms copyright to 
0040: 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65  this source code
0050: 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a  .  In place of.*
0060: 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65  * a legal notice
0070: 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73  , here is a bles
0080: 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d  sing:.**.**    M
0090: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
00a0: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20  nd not evil..** 
00b0: 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20     May you find 
00c0: 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20  forgiveness for 
00d0: 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72  yourself and for
00e0: 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20  give others..** 
00f0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
0100: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0110: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0120: 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a  you give..**.***
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73 20 68  ******.** This h
0180: 65 61 64 65 72 20 66 69 6c 65 20 64 65 66 69 6e  eader file defin
0190: 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  es the interface
01a0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
01b0: 20 6c 69 62 72 61 72 79 0a 2a 2a 20 70 72 65 73   library.** pres
01c0: 65 6e 74 73 20 74 6f 20 63 6c 69 65 6e 74 20 70  ents to client p
01d0: 72 6f 67 72 61 6d 73 2e 0a 2a 2a 0a 2a 2a 20 40  rograms..**.** @
01e0: 28 23 29 20 24 49 64 3a 20 73 71 6c 69 74 65 2e  (#) $Id: sqlite.
01f0: 68 2e 69 6e 2c 76 20 31 2e 31 39 38 20 32 30 30  h.in,v 1.198 200
0200: 37 2f 30 31 2f 32 36 20 30 30 3a 35 31 3a 34 34  7/01/26 00:51:44
0210: 20 64 72 68 20 45 78 70 20 24 0a 2a 2f 0a 23 69   drh Exp $.*/.#i
0220: 66 6e 64 65 66 20 5f 53 51 4c 49 54 45 33 5f 48  fndef _SQLITE3_H
0230: 5f 0a 23 64 65 66 69 6e 65 20 5f 53 51 4c 49 54  _.#define _SQLIT
0240: 45 33 5f 48 5f 0a 23 69 6e 63 6c 75 64 65 20 3c  E3_H_.#include <
0250: 73 74 64 61 72 67 2e 68 3e 20 20 20 20 20 2f 2a  stdarg.h>     /*
0260: 20 4e 65 65 64 65 64 20 66 6f 72 20 74 68 65 20   Needed for the 
0270: 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 76 61  definition of va
0280: 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20  _list */../*.** 
0290: 4d 61 6b 65 20 73 75 72 65 20 77 65 20 63 61 6e  Make sure we can
02a0: 20 63 61 6c 6c 20 74 68 69 73 20 73 74 75 66 66   call this stuff
02b0: 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a 2f 0a 23 69   from C++..*/.#i
02c0: 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73  fdef __cplusplus
02d0: 0a 65 78 74 65 72 6e 20 22 43 22 20 7b 0a 23 65  .extern "C" {.#e
02e0: 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  ndif../*.** The 
02f0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
0300: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 2a  QLite library..*
0310: 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  /.#ifdef SQLITE_
0320: 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64 65 66 20  VERSION.# undef 
0330: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 0a 23  SQLITE_VERSION.#
0340: 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 53 51  endif.#define SQ
0350: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20 20 20 20  LITE_VERSION    
0360: 20 20 20 20 20 22 2d 2d 56 45 52 53 2d 2d 22 0a       "--VERS--".
0370: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 72 6d 61  ./*.** The forma
0380: 74 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f 6e  t of the version
0390: 20 73 74 72 69 6e 67 20 69 73 20 22 58 2e 59 2e   string is "X.Y.
03a0: 5a 3c 74 72 61 69 6c 69 6e 67 20 73 74 72 69 6e  Z<trailing strin
03b0: 67 3e 22 2c 20 77 68 65 72 65 0a 2a 2a 20 58 20  g>", where.** X 
03c0: 69 73 20 74 68 65 20 6d 61 6a 6f 72 20 76 65 72  is the major ver
03d0: 73 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 59 20 69  sion number, Y i
03e0: 73 20 74 68 65 20 6d 69 6e 6f 72 20 76 65 72 73  s the minor vers
03f0: 69 6f 6e 20 6e 75 6d 62 65 72 20 61 6e 64 20 5a  ion number and Z
0400: 0a 2a 2a 20 69 73 20 74 68 65 20 72 65 6c 65 61  .** is the relea
0410: 73 65 20 6e 75 6d 62 65 72 2e 20 54 68 65 20 74  se number. The t
0420: 72 61 69 6c 69 6e 67 20 73 74 72 69 6e 67 20 69  railing string i
0430: 73 20 6f 66 74 65 6e 20 22 61 6c 70 68 61 22 20  s often "alpha" 
0440: 6f 72 20 22 62 65 74 61 22 2e 0a 2a 2a 20 46 6f  or "beta"..** Fo
0450: 72 20 65 78 61 6d 70 6c 65 20 22 33 2e 31 2e 31  r example "3.1.1
0460: 62 65 74 61 22 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  beta"..**.** The
0470: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f   SQLITE_VERSION_
0480: 4e 55 4d 42 45 52 20 69 73 20 61 6e 20 69 6e 74  NUMBER is an int
0490: 65 67 65 72 20 77 69 74 68 20 74 68 65 20 76 61  eger with the va
04a0: 6c 75 65 20 0a 2a 2a 20 28 58 2a 31 30 30 30 30  lue .** (X*10000
04b0: 30 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a 29 2e  0 + Y*1000 + Z).
04c0: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 66 6f   For example, fo
04d0: 72 20 76 65 72 73 69 6f 6e 20 22 33 2e 31 2e 31  r version "3.1.1
04e0: 62 65 74 61 22 2c 20 0a 2a 2a 20 53 51 4c 49 54  beta", .** SQLIT
04f0: 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52  E_VERSION_NUMBER
0500: 20 69 73 20 73 65 74 20 74 6f 20 33 30 30 31 30   is set to 30010
0510: 30 31 2e 20 54 6f 20 64 65 74 65 63 74 20 69 66  01. To detect if
0520: 20 74 68 65 79 20 61 72 65 20 75 73 69 6e 67 20   they are using 
0530: 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e  .** version 3.1.
0540: 31 20 6f 72 20 67 72 65 61 74 65 72 20 61 74 20  1 or greater at 
0550: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 20 70 72  compile time, pr
0560: 6f 67 72 61 6d 73 20 6d 61 79 20 75 73 65 20 74  ograms may use t
0570: 68 65 20 74 65 73 74 20 0a 2a 2a 20 28 53 51 4c  he test .** (SQL
0580: 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42  ITE_VERSION_NUMB
0590: 45 52 3e 3d 33 30 30 31 30 30 31 29 2e 0a 2a 2f  ER>=3001001)..*/
05a0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 56  .#ifdef SQLITE_V
05b0: 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 20  ERSION_NUMBER.# 
05c0: 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52  undef SQLITE_VER
05d0: 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 65 6e 64  SION_NUMBER.#end
05e0: 69 66 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  if.#define SQLIT
05f0: 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52  E_VERSION_NUMBER
0600: 20 2d 2d 56 45 52 53 49 4f 4e 2d 4e 55 4d 42 45   --VERSION-NUMBE
0610: 52 2d 2d 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 76  R--../*.** The v
0620: 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 20 69 73  ersion string is
0630: 20 61 6c 73 6f 20 63 6f 6d 70 69 6c 65 64 20 69   also compiled i
0640: 6e 74 6f 20 74 68 65 20 6c 69 62 72 61 72 79 20  nto the library 
0650: 73 6f 20 74 68 61 74 20 61 20 70 72 6f 67 72 61  so that a progra
0660: 6d 0a 2a 2a 20 63 61 6e 20 63 68 65 63 6b 20 74  m.** can check t
0670: 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  o make sure that
0680: 20 74 68 65 20 6c 69 62 2a 2e 61 20 66 69 6c 65   the lib*.a file
0690: 20 61 6e 64 20 74 68 65 20 2a 2e 68 20 66 69 6c   and the *.h fil
06a0: 65 20 61 72 65 20 66 72 6f 6d 0a 2a 2a 20 74 68  e are from.** th
06b0: 65 20 73 61 6d 65 20 76 65 72 73 69 6f 6e 2e 20  e same version. 
06c0: 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62   The sqlite3_lib
06d0: 76 65 72 73 69 6f 6e 28 29 20 66 75 6e 63 74 69  version() functi
06e0: 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69  on returns a poi
06f0: 6e 74 65 72 0a 2a 2a 20 74 6f 20 74 68 65 20 73  nter.** to the s
0700: 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 20 76  qlite3_version v
0710: 61 72 69 61 62 6c 65 20 2d 20 75 73 65 66 75 6c  ariable - useful
0720: 20 69 6e 20 44 4c 4c 73 20 77 68 69 63 68 20 63   in DLLs which c
0730: 61 6e 6e 6f 74 20 61 63 63 65 73 73 0a 2a 2a 20  annot access.** 
0740: 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73  global variables
0750: 2e 0a 2a 2f 0a 65 78 74 65 72 6e 20 63 6f 6e 73  ..*/.extern cons
0760: 74 20 63 68 61 72 20 73 71 6c 69 74 65 33 5f 76  t char sqlite3_v
0770: 65 72 73 69 6f 6e 5b 5d 3b 0a 63 6f 6e 73 74 20  ersion[];.const 
0780: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 6c 69  char *sqlite3_li
0790: 62 76 65 72 73 69 6f 6e 28 76 6f 69 64 29 3b 0a  bversion(void);.
07a0: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74 68  ./*.** Return th
07b0: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53  e value of the S
07c0: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55  QLITE_VERSION_NU
07d0: 4d 42 45 52 20 6d 61 63 72 6f 20 77 68 65 6e 20  MBER macro when 
07e0: 74 68 65 0a 2a 2a 20 6c 69 62 72 61 72 79 20 77  the.** library w
07f0: 61 73 20 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2f 0a  as compiled..*/.
0800: 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  int sqlite3_libv
0810: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 76 6f  ersion_number(vo
0820: 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 45 61 63 68  id);../*.** Each
0830: 20 6f 70 65 6e 20 73 71 6c 69 74 65 20 64 61 74   open sqlite dat
0840: 61 62 61 73 65 20 69 73 20 72 65 70 72 65 73 65  abase is represe
0850: 6e 74 65 64 20 62 79 20 61 6e 20 69 6e 73 74 61  nted by an insta
0860: 6e 63 65 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f  nce of the.** fo
0870: 6c 6c 6f 77 69 6e 67 20 6f 70 61 71 75 65 20 73  llowing opaque s
0880: 74 72 75 63 74 75 72 65 2e 0a 2a 2f 0a 74 79 70  tructure..*/.typ
0890: 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69  edef struct sqli
08a0: 74 65 33 20 73 71 6c 69 74 65 33 3b 0a 0a 0a 2f  te3 sqlite3;.../
08b0: 2a 0a 2a 2a 20 53 6f 6d 65 20 63 6f 6d 70 69 6c  *.** Some compil
08c0: 65 72 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f  ers do not suppo
08d0: 72 74 20 74 68 65 20 22 6c 6f 6e 67 20 6c 6f 6e  rt the "long lon
08e0: 67 22 20 64 61 74 61 74 79 70 65 2e 20 20 53 6f  g" datatype.  So
08f0: 20 77 65 20 68 61 76 65 0a 2a 2a 20 74 6f 20 64   we have.** to d
0900: 6f 20 61 20 74 79 70 65 64 65 66 20 74 68 61 74  o a typedef that
0910: 20 66 6f 72 20 36 34 2d 62 69 74 20 69 6e 74 65   for 64-bit inte
0920: 67 65 72 73 20 74 68 61 74 20 64 65 70 65 6e 64  gers that depend
0930: 73 20 6f 6e 20 77 68 61 74 20 63 6f 6d 70 69 6c  s on what compil
0940: 65 72 0a 2a 2a 20 69 73 20 62 65 69 6e 67 20 75  er.** is being u
0950: 73 65 64 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53  sed..*/.#ifdef S
0960: 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45  QLITE_INT64_TYPE
0970: 0a 20 20 74 79 70 65 64 65 66 20 53 51 4c 49 54  .  typedef SQLIT
0980: 45 5f 49 4e 54 36 34 5f 54 59 50 45 20 73 71 6c  E_INT64_TYPE sql
0990: 69 74 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79 70  ite_int64;.  typ
09a0: 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20 53 51  edef unsigned SQ
09b0: 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20  LITE_INT64_TYPE 
09c0: 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23  sqlite_uint64;.#
09d0: 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53  elif defined(_MS
09e0: 43 5f 56 45 52 29 20 7c 7c 20 64 65 66 69 6e 65  C_VER) || define
09f0: 64 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f 29 0a  d(__BORLANDC__).
0a00: 20 20 74 79 70 65 64 65 66 20 5f 5f 69 6e 74 36    typedef __int6
0a10: 34 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a  4 sqlite_int64;.
0a20: 20 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e    typedef unsign
0a30: 65 64 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74  ed __int64 sqlit
0a40: 65 5f 75 69 6e 74 36 34 3b 0a 23 65 6c 73 65 0a  e_uint64;.#else.
0a50: 20 20 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c    typedef long l
0a60: 6f 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 69  ong int sqlite_i
0a70: 6e 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20  nt64;.  typedef 
0a80: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f  unsigned long lo
0a90: 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 75 69  ng int sqlite_ui
0aa0: 6e 74 36 34 3b 0a 23 65 6e 64 69 66 0a 0a 2f 2a  nt64;.#endif../*
0ab0: 0a 2a 2a 20 49 66 20 63 6f 6d 70 69 6c 69 6e 67  .** If compiling
0ac0: 20 66 6f 72 20 61 20 70 72 6f 63 65 73 73 6f 72   for a processor
0ad0: 20 74 68 61 74 20 6c 61 63 6b 73 20 66 6c 6f 61   that lacks floa
0ae0: 74 69 6e 67 20 70 6f 69 6e 74 20 73 75 70 70 6f  ting point suppo
0af0: 72 74 2c 0a 2a 2a 20 73 75 62 73 74 69 74 75 74  rt,.** substitut
0b00: 65 20 69 6e 74 65 67 65 72 20 66 6f 72 20 66 6c  e integer for fl
0b10: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 0a 2a 2f 0a  oating-point.*/.
0b20: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d  #ifdef SQLITE_OM
0b30: 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
0b40: 54 0a 23 20 64 65 66 69 6e 65 20 64 6f 75 62 6c  T.# define doubl
0b50: 65 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 0a 23  e sqlite_int64.#
0b60: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 41 20 66  endif../*.** A f
0b70: 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6c 6f 73 65  unction to close
0b80: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 2a   the database..*
0b90: 2a 0a 2a 2a 20 43 61 6c 6c 20 74 68 69 73 20 66  *.** Call this f
0ba0: 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 61 20 70  unction with a p
0bb0: 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 75  ointer to a stru
0bc0: 63 74 75 72 65 20 74 68 61 74 20 77 61 73 20 70  cture that was p
0bd0: 72 65 76 69 6f 75 73 6c 79 0a 2a 2a 20 72 65 74  reviously.** ret
0be0: 75 72 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  urned from sqlit
0bf0: 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 74 68  e3_open() and th
0c00: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
0c10: 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 79  database will by
0c20: 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 41   closed..**.** A
0c30: 6c 6c 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ll SQL statement
0c40: 73 20 70 72 65 70 61 72 65 64 20 75 73 69 6e 67  s prepared using
0c50: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
0c60: 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  () or.** sqlite3
0c70: 5f 70 72 65 70 61 72 65 31 36 28 29 20 6d 75 73  _prepare16() mus
0c80: 74 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64  t be deallocated
0c90: 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
0ca0: 69 6e 61 6c 69 7a 65 28 29 20 62 65 66 6f 72 65  inalize() before
0cb0: 0a 2a 2a 20 74 68 69 73 20 72 6f 75 74 69 6e 65  .** this routine
0cc0: 20 69 73 20 63 61 6c 6c 65 64 2e 20 4f 74 68 65   is called. Othe
0cd0: 72 77 69 73 65 2c 20 53 51 4c 49 54 45 5f 42 55  rwise, SQLITE_BU
0ce0: 53 59 20 69 73 20 72 65 74 75 72 6e 65 64 20 61  SY is returned a
0cf0: 6e 64 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61  nd the.** databa
0d00: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 72 65  se connection re
0d10: 6d 61 69 6e 73 20 6f 70 65 6e 2e 0a 2a 2f 0a 69  mains open..*/.i
0d20: 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  nt sqlite3_close
0d30: 28 73 71 6c 69 74 65 33 20 2a 29 3b 0a 0a 2f 2a  (sqlite3 *);../*
0d40: 0a 2a 2a 20 54 68 65 20 74 79 70 65 20 66 6f 72  .** The type for
0d50: 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63   a callback func
0d60: 74 69 6f 6e 2e 0a 2a 2f 0a 74 79 70 65 64 65 66  tion..*/.typedef
0d70: 20 69 6e 74 20 28 2a 73 71 6c 69 74 65 33 5f 63   int (*sqlite3_c
0d80: 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c 69  allback)(void*,i
0d90: 6e 74 2c 63 68 61 72 2a 2a 2c 20 63 68 61 72 2a  nt,char**, char*
0da0: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 41 20 66 75 6e  *);../*.** A fun
0db0: 63 74 69 6f 6e 20 74 6f 20 65 78 65 63 75 74 65  ction to execute
0dc0: 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 73 74  s one or more st
0dd0: 61 74 65 6d 65 6e 74 73 20 6f 66 20 53 51 4c 2e  atements of SQL.
0de0: 0a 2a 2a 0a 2a 2a 20 49 66 20 6f 6e 65 20 6f 72  .**.** If one or
0df0: 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 53 51 4c   more of the SQL
0e00: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
0e10: 71 75 65 72 69 65 73 2c 20 74 68 65 6e 0a 2a 2a  queries, then.**
0e20: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75   the callback fu
0e30: 6e 63 74 69 6f 6e 20 73 70 65 63 69 66 69 65 64  nction specified
0e40: 20 62 79 20 74 68 65 20 33 72 64 20 70 61 72 61   by the 3rd para
0e50: 6d 65 74 65 72 20 69 73 0a 2a 2a 20 69 6e 76 6f  meter is.** invo
0e60: 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 61 63  ked once for eac
0e70: 68 20 72 6f 77 20 6f 66 20 74 68 65 20 71 75 65  h row of the que
0e80: 72 79 20 72 65 73 75 6c 74 2e 20 20 54 68 69 73  ry result.  This
0e90: 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 73 68 6f   callback.** sho
0ea0: 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 72 65 74  uld normally ret
0eb0: 75 72 6e 20 30 2e 20 20 49 66 20 74 68 65 20 63  urn 0.  If the c
0ec0: 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20  allback returns 
0ed0: 61 20 6e 6f 6e 2d 7a 65 72 6f 0a 2a 2a 20 76 61  a non-zero.** va
0ee0: 6c 75 65 20 74 68 65 6e 20 74 68 65 20 71 75 65  lue then the que
0ef0: 72 79 20 69 73 20 61 62 6f 72 74 65 64 2c 20 61  ry is aborted, a
0f00: 6c 6c 20 73 75 62 73 65 71 75 65 6e 74 20 53 51  ll subsequent SQ
0f10: 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20  L statements.** 
0f20: 61 72 65 20 73 6b 69 70 70 65 64 20 61 6e 64 20  are skipped and 
0f30: 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  the sqlite3_exec
0f40: 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
0f50: 72 6e 73 20 74 68 65 20 53 51 4c 49 54 45 5f 41  rns the SQLITE_A
0f60: 42 4f 52 54 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  BORT..**.** The 
0f70: 31 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 73  1st parameter is
0f80: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 70 6f   an arbitrary po
0f90: 69 6e 74 65 72 20 74 68 61 74 20 69 73 20 70 61  inter that is pa
0fa0: 73 73 65 64 0a 2a 2a 20 74 6f 20 74 68 65 20 63  ssed.** to the c
0fb0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
0fc0: 20 61 73 20 69 74 73 20 66 69 72 73 74 20 70 61   as its first pa
0fd0: 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54  rameter..**.** T
0fe0: 68 65 20 32 6e 64 20 70 61 72 61 6d 65 74 65 72  he 2nd parameter
0ff0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
1000: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 74 68 65   function is the
1010: 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 63 6f   number of.** co
1020: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 71 75 65  lumns in the que
1030: 72 79 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20  ry result.  The 
1040: 33 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  3rd parameter to
1050: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a   the callback.**
1060: 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20   is an array of 
1070: 73 74 72 69 6e 67 73 20 68 6f 6c 64 69 6e 67 20  strings holding 
1080: 74 68 65 20 76 61 6c 75 65 73 20 66 6f 72 20 65  the values for e
1090: 61 63 68 20 63 6f 6c 75 6d 6e 2e 0a 2a 2a 20 54  ach column..** T
10a0: 68 65 20 34 74 68 20 70 61 72 61 6d 65 74 65 72  he 4th parameter
10b0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
10c0: 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20   is an array of 
10d0: 73 74 72 69 6e 67 73 20 68 6f 6c 64 69 6e 67 0a  strings holding.
10e0: 2a 2a 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  ** the names of 
10f0: 65 61 63 68 20 63 6f 6c 75 6d 6e 2e 0a 2a 2a 0a  each column..**.
1100: 2a 2a 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20  ** The callback 
1110: 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65 20  function may be 
1120: 4e 55 4c 4c 2c 20 65 76 65 6e 20 66 6f 72 20 71  NULL, even for q
1130: 75 65 72 69 65 73 2e 20 20 41 20 4e 55 4c 4c 0a  ueries.  A NULL.
1140: 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e  ** callback is n
1150: 6f 74 20 61 6e 20 65 72 72 6f 72 2e 20 20 49 74  ot an error.  It
1160: 20 6a 75 73 74 20 6d 65 61 6e 73 20 74 68 61 74   just means that
1170: 20 6e 6f 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20   no callback.** 
1180: 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 2e  will be invoked.
1190: 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20 65 72 72  .**.** If an err
11a0: 6f 72 20 6f 63 63 75 72 73 20 77 68 69 6c 65 20  or occurs while 
11b0: 70 61 72 73 69 6e 67 20 6f 72 20 65 76 61 6c 75  parsing or evalu
11c0: 61 74 69 6e 67 20 74 68 65 20 53 51 4c 20 28 62  ating the SQL (b
11d0: 75 74 0a 2a 2a 20 6e 6f 74 20 77 68 69 6c 65 20  ut.** not while 
11e0: 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 63 61  executing the ca
11f0: 6c 6c 62 61 63 6b 29 20 74 68 65 6e 20 61 6e 20  llback) then an 
1200: 61 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f  appropriate erro
1210: 72 0a 2a 2a 20 6d 65 73 73 61 67 65 20 69 73 20  r.** message is 
1220: 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d  written into mem
1230: 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ory obtained fro
1240: 6d 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 0a 2a  m malloc() and.*
1250: 2a 20 2a 65 72 72 6d 73 67 20 69 73 20 6d 61 64  * *errmsg is mad
1260: 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68  e to point to th
1270: 61 74 20 6d 65 73 73 61 67 65 2e 20 20 54 68 65  at message.  The
1280: 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74 69 6f   calling functio
1290: 6e 0a 2a 2a 20 69 73 20 72 65 73 70 6f 6e 73 69  n.** is responsi
12a0: 62 6c 65 20 66 6f 72 20 66 72 65 65 69 6e 67 20  ble for freeing 
12b0: 74 68 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20  the memory that 
12c0: 68 6f 6c 64 73 20 74 68 65 20 65 72 72 6f 72 0a  holds the error.
12d0: 2a 2a 20 6d 65 73 73 61 67 65 2e 20 20 20 55 73  ** message.   Us
12e0: 65 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29  e sqlite3_free()
12f0: 20 66 6f 72 20 74 68 69 73 2e 20 20 49 66 20 65   for this.  If e
1300: 72 72 6d 73 67 3d 3d 4e 55 4c 4c 2c 0a 2a 2a 20  rrmsg==NULL,.** 
1310: 74 68 65 6e 20 6e 6f 20 65 72 72 6f 72 20 6d 65  then no error me
1320: 73 73 61 67 65 20 69 73 20 65 76 65 72 20 77 72  ssage is ever wr
1330: 69 74 74 65 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  itten..**.** The
1340: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73   return value is
1350: 20 69 73 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66   is SQLITE_OK if
1360: 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 65 72   there are no er
1370: 72 6f 72 73 20 61 6e 64 0a 2a 2a 20 73 6f 6d 65  rors and.** some
1380: 20 6f 74 68 65 72 20 72 65 74 75 72 6e 20 63 6f   other return co
1390: 64 65 20 69 66 20 74 68 65 72 65 20 69 73 20 61  de if there is a
13a0: 6e 20 65 72 72 6f 72 2e 20 20 54 68 65 20 70 61  n error.  The pa
13b0: 72 74 69 63 75 6c 61 72 0a 2a 2a 20 72 65 74 75  rticular.** retu
13c0: 72 6e 20 76 61 6c 75 65 20 64 65 70 65 6e 64 73  rn value depends
13d0: 20 6f 6e 20 74 68 65 20 74 79 70 65 20 6f 66 20   on the type of 
13e0: 65 72 72 6f 72 2e 20 0a 2a 2a 0a 2a 2a 20 49 66  error. .**.** If
13f0: 20 74 68 65 20 71 75 65 72 79 20 63 6f 75 6c 64   the query could
1400: 20 6e 6f 74 20 62 65 20 65 78 65 63 75 74 65 64   not be executed
1410: 20 62 65 63 61 75 73 65 20 61 20 64 61 74 61 62   because a datab
1420: 61 73 65 20 66 69 6c 65 20 69 73 0a 2a 2a 20 6c  ase file is.** l
1430: 6f 63 6b 65 64 20 6f 72 20 62 75 73 79 2c 20 74  ocked or busy, t
1440: 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74 69 6f  hen this functio
1450: 6e 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45  n returns SQLITE
1460: 5f 42 55 53 59 2e 20 20 28 54 68 69 73 0a 2a 2a  _BUSY.  (This.**
1470: 20 62 65 68 61 76 69 6f 72 20 63 61 6e 20 62 65   behavior can be
1480: 20 6d 6f 64 69 66 69 65 64 20 73 6f 6d 65 77 68   modified somewh
1490: 61 74 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c  at using the sql
14a0: 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
14b0: 72 28 29 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74  r().** and sqlit
14c0: 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28  e3_busy_timeout(
14d0: 29 20 66 75 6e 63 74 69 6f 6e 73 20 62 65 6c 6f  ) functions belo
14e0: 77 2e 29 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  w.).*/.int sqlit
14f0: 65 33 5f 65 78 65 63 28 0a 20 20 73 71 6c 69 74  e3_exec(.  sqlit
1500: 65 33 2a 2c 20 20 20 20 20 20 20 20 20 20 20 20  e3*,            
1510: 20 20 20 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f           /* An o
1520: 70 65 6e 20 64 61 74 61 62 61 73 65 20 2a 2f 0a  pen database */.
1530: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71    const char *sq
1540: 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  l,              
1550: 2f 2a 20 53 51 4c 20 74 6f 20 62 65 20 65 78 65  /* SQL to be exe
1560: 63 75 74 65 64 20 2a 2f 0a 20 20 73 71 6c 69 74  cuted */.  sqlit
1570: 65 33 5f 63 61 6c 6c 62 61 63 6b 2c 20 20 20 20  e3_callback,    
1580: 20 20 20 20 20 20 20 20 20 2f 2a 20 43 61 6c 6c           /* Call
1590: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2a 2f  back function */
15a0: 0a 20 20 76 6f 69 64 20 2a 2c 20 20 20 20 20 20  .  void *,      
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c0: 20 2f 2a 20 31 73 74 20 61 72 67 75 6d 65 6e 74   /* 1st argument
15d0: 20 74 6f 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e   to callback fun
15e0: 63 74 69 6f 6e 20 2a 2f 0a 20 20 63 68 61 72 20  ction */.  char 
15f0: 2a 2a 65 72 72 6d 73 67 20 20 20 20 20 20 20 20  **errmsg        
1600: 20 20 20 20 20 20 20 20 20 2f 2a 20 45 72 72 6f           /* Erro
1610: 72 20 6d 73 67 20 77 72 69 74 74 65 6e 20 68 65  r msg written he
1620: 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  re */.);../*.** 
1630: 52 65 74 75 72 6e 20 76 61 6c 75 65 73 20 66 6f  Return values fo
1640: 72 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  r sqlite3_exec()
1650: 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 73 74 65   and sqlite3_ste
1660: 70 28 29 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  p().*/.#define S
1670: 51 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20  QLITE_OK        
1680: 20 20 20 30 20 20 20 2f 2a 20 53 75 63 63 65 73     0   /* Succes
1690: 73 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 2f  sful result */./
16a0: 2a 20 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 65  * beginning-of-e
16b0: 72 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 23 64  rror-codes */.#d
16c0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52  efine SQLITE_ERR
16d0: 4f 52 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a  OR        1   /*
16e0: 20 53 51 4c 20 65 72 72 6f 72 20 6f 72 20 6d 69   SQL error or mi
16f0: 73 73 69 6e 67 20 64 61 74 61 62 61 73 65 20 2a  ssing database *
1700: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1710: 5f 49 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20  _INTERNAL     2 
1720: 20 20 2f 2a 20 4e 4f 54 20 55 53 45 44 2e 20 49    /* NOT USED. I
1730: 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20 65 72  nternal logic er
1740: 72 6f 72 20 69 6e 20 53 51 4c 69 74 65 20 2a 2f  ror in SQLite */
1750: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1760: 50 45 52 4d 20 20 20 20 20 20 20 20 20 33 20 20  PERM         3  
1770: 20 2f 2a 20 41 63 63 65 73 73 20 70 65 72 6d 69   /* Access permi
1780: 73 73 69 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a  ssion denied */.
1790: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41  #define SQLITE_A
17a0: 42 4f 52 54 20 20 20 20 20 20 20 20 34 20 20 20  BORT        4   
17b0: 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 72 6f 75 74  /* Callback rout
17c0: 69 6e 65 20 72 65 71 75 65 73 74 65 64 20 61 6e  ine requested an
17d0: 20 61 62 6f 72 74 20 2a 2f 0a 23 64 65 66 69 6e   abort */.#defin
17e0: 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20  e SQLITE_BUSY   
17f0: 20 20 20 20 20 20 35 20 20 20 2f 2a 20 54 68 65        5   /* The
1800: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69   database file i
1810: 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66  s locked */.#def
1820: 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  ine SQLITE_LOCKE
1830: 44 20 20 20 20 20 20 20 36 20 20 20 2f 2a 20 41  D       6   /* A
1840: 20 74 61 62 6c 65 20 69 6e 20 74 68 65 20 64 61   table in the da
1850: 74 61 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64  tabase is locked
1860: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1870: 54 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 20  TE_NOMEM        
1880: 37 20 20 20 2f 2a 20 41 20 6d 61 6c 6c 6f 63 28  7   /* A malloc(
1890: 29 20 66 61 69 6c 65 64 20 2a 2f 0a 23 64 65 66  ) failed */.#def
18a0: 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f  ine SQLITE_READO
18b0: 4e 4c 59 20 20 20 20 20 38 20 20 20 2f 2a 20 41  NLY     8   /* A
18c0: 74 74 65 6d 70 74 20 74 6f 20 77 72 69 74 65 20  ttempt to write 
18d0: 61 20 72 65 61 64 6f 6e 6c 79 20 64 61 74 61 62  a readonly datab
18e0: 61 73 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ase */.#define S
18f0: 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 20  QLITE_INTERRUPT 
1900: 20 20 20 39 20 20 20 2f 2a 20 4f 70 65 72 61 74     9   /* Operat
1910: 69 6f 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 62  ion terminated b
1920: 79 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  y sqlite3_interr
1930: 75 70 74 28 29 2a 2f 0a 23 64 65 66 69 6e 65 20  upt()*/.#define 
1940: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 20 20 20  SQLITE_IOERR    
1950: 20 20 20 31 30 20 20 20 2f 2a 20 53 6f 6d 65 20     10   /* Some 
1960: 6b 69 6e 64 20 6f 66 20 64 69 73 6b 20 49 2f 4f  kind of disk I/O
1970: 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20   error occurred 
1980: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1990: 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20 31 31  E_CORRUPT     11
19a0: 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61     /* The databa
19b0: 73 65 20 64 69 73 6b 20 69 6d 61 67 65 20 69 73  se disk image is
19c0: 20 6d 61 6c 66 6f 72 6d 65 64 20 2a 2f 0a 23 64   malformed */.#d
19d0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54  efine SQLITE_NOT
19e0: 46 4f 55 4e 44 20 20 20 20 31 32 20 20 20 2f 2a  FOUND    12   /*
19f0: 20 4e 4f 54 20 55 53 45 44 2e 20 54 61 62 6c 65   NOT USED. Table
1a00: 20 6f 72 20 72 65 63 6f 72 64 20 6e 6f 74 20 66   or record not f
1a10: 6f 75 6e 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ound */.#define 
1a20: 53 51 4c 49 54 45 5f 46 55 4c 4c 20 20 20 20 20  SQLITE_FULL     
1a30: 20 20 20 31 33 20 20 20 2f 2a 20 49 6e 73 65 72     13   /* Inser
1a40: 74 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 61  tion failed beca
1a50: 75 73 65 20 64 61 74 61 62 61 73 65 20 69 73 20  use database is 
1a60: 66 75 6c 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20  full */.#define 
1a70: 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20  SQLITE_CANTOPEN 
1a80: 20 20 20 31 34 20 20 20 2f 2a 20 55 6e 61 62 6c     14   /* Unabl
1a90: 65 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 64 61  e to open the da
1aa0: 74 61 62 61 73 65 20 66 69 6c 65 20 2a 2f 0a 23  tabase file */.#
1ab0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52  define SQLITE_PR
1ac0: 4f 54 4f 43 4f 4c 20 20 20 20 31 35 20 20 20 2f  OTOCOL    15   /
1ad0: 2a 20 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 20  * Database lock 
1ae0: 70 72 6f 74 6f 63 6f 6c 20 65 72 72 6f 72 20 2a  protocol error *
1af0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1b00: 5f 45 4d 50 54 59 20 20 20 20 20 20 20 31 36 20  _EMPTY       16 
1b10: 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 69 73    /* Database is
1b20: 20 65 6d 70 74 79 20 2a 2f 0a 23 64 65 66 69 6e   empty */.#defin
1b30: 65 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 20  e SQLITE_SCHEMA 
1b40: 20 20 20 20 20 31 37 20 20 20 2f 2a 20 54 68 65       17   /* The
1b50: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
1b60: 20 63 68 61 6e 67 65 64 20 2a 2f 0a 23 64 65 66   changed */.#def
1b70: 69 6e 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49  ine SQLITE_TOOBI
1b80: 47 20 20 20 20 20 20 31 38 20 20 20 2f 2a 20 4e  G      18   /* N
1b90: 4f 54 20 55 53 45 44 2e 20 54 6f 6f 20 6d 75 63  OT USED. Too muc
1ba0: 68 20 64 61 74 61 20 66 6f 72 20 6f 6e 65 20 72  h data for one r
1bb0: 6f 77 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ow */.#define SQ
1bc0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
1bd0: 20 31 39 20 20 20 2f 2a 20 41 62 6f 72 74 20 64   19   /* Abort d
1be0: 75 65 20 74 6f 20 63 6f 6e 74 72 61 69 6e 74 20  ue to contraint 
1bf0: 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f 0a 23 64 65  violation */.#de
1c00: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53 4d  fine SQLITE_MISM
1c10: 41 54 43 48 20 20 20 20 32 30 20 20 20 2f 2a 20  ATCH    20   /* 
1c20: 44 61 74 61 20 74 79 70 65 20 6d 69 73 6d 61 74  Data type mismat
1c30: 63 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ch */.#define SQ
1c40: 4c 49 54 45 5f 4d 49 53 55 53 45 20 20 20 20 20  LITE_MISUSE     
1c50: 20 32 31 20 20 20 2f 2a 20 4c 69 62 72 61 72 79   21   /* Library
1c60: 20 75 73 65 64 20 69 6e 63 6f 72 72 65 63 74 6c   used incorrectl
1c70: 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
1c80: 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20 20  ITE_NOLFS       
1c90: 32 32 20 20 20 2f 2a 20 55 73 65 73 20 4f 53 20  22   /* Uses OS 
1ca0: 66 65 61 74 75 72 65 73 20 6e 6f 74 20 73 75 70  features not sup
1cb0: 70 6f 72 74 65 64 20 6f 6e 20 68 6f 73 74 20 2a  ported on host *
1cc0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1cd0: 5f 41 55 54 48 20 20 20 20 20 20 20 20 32 33 20  _AUTH        23 
1ce0: 20 20 2f 2a 20 41 75 74 68 6f 72 69 7a 61 74 69    /* Authorizati
1cf0: 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65  on denied */.#de
1d00: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 4f 52 4d  fine SQLITE_FORM
1d10: 41 54 20 20 20 20 20 20 32 34 20 20 20 2f 2a 20  AT      24   /* 
1d20: 41 75 78 69 6c 69 61 72 79 20 64 61 74 61 62 61  Auxiliary databa
1d30: 73 65 20 66 6f 72 6d 61 74 20 65 72 72 6f 72 20  se format error 
1d40: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1d50: 45 5f 52 41 4e 47 45 20 20 20 20 20 20 20 32 35  E_RANGE       25
1d60: 20 20 20 2f 2a 20 32 6e 64 20 70 61 72 61 6d 65     /* 2nd parame
1d70: 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62  ter to sqlite3_b
1d80: 69 6e 64 20 6f 75 74 20 6f 66 20 72 61 6e 67 65  ind out of range
1d90: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1da0: 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20 20 32  TE_NOTADB      2
1db0: 36 20 20 20 2f 2a 20 46 69 6c 65 20 6f 70 65 6e  6   /* File open
1dc0: 65 64 20 74 68 61 74 20 69 73 20 6e 6f 74 20 61  ed that is not a
1dd0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 2a   database file *
1de0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1df0: 5f 52 4f 57 20 20 20 20 20 20 20 20 20 31 30 30  _ROW         100
1e00: 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74 65    /* sqlite3_ste
1e10: 70 28 29 20 68 61 73 20 61 6e 6f 74 68 65 72 20  p() has another 
1e20: 72 6f 77 20 72 65 61 64 79 20 2a 2f 0a 23 64 65  row ready */.#de
1e30: 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 4f 4e 45  fine SQLITE_DONE
1e40: 20 20 20 20 20 20 20 20 31 30 31 20 20 2f 2a 20          101  /* 
1e50: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68  sqlite3_step() h
1e60: 61 73 20 66 69 6e 69 73 68 65 64 20 65 78 65 63  as finished exec
1e70: 75 74 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e 64 2d  uting */./* end-
1e80: 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73 20 2a  of-error-codes *
1e90: 2f 0a 0a 2f 2a 0a 2a 2a 20 55 73 69 6e 67 20 74  /../*.** Using t
1ea0: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  he sqlite3_exten
1eb0: 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
1ec0: 28 29 20 41 50 49 2c 20 79 6f 75 20 63 61 6e 20  () API, you can 
1ed0: 63 61 75 73 65 0a 2a 2a 20 53 51 4c 69 74 65 20  cause.** SQLite 
1ee0: 74 6f 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74  to return result
1ef0: 20 63 6f 64 65 73 20 77 69 74 68 20 61 64 64 69   codes with addi
1f00: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
1f10: 6f 6e 20 69 6e 0a 2a 2a 20 74 68 65 69 72 20 75  on in.** their u
1f20: 70 70 65 72 20 62 69 74 73 2e 20 20 54 68 65 20  pper bits.  The 
1f30: 6c 6f 77 65 72 20 38 20 62 69 74 73 20 77 69 6c  lower 8 bits wil
1f40: 6c 20 62 65 20 74 68 65 20 73 61 6d 65 20 61 73  l be the same as
1f50: 20 74 68 65 0a 2a 2a 20 70 72 69 6d 61 72 79 20   the.** primary 
1f60: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61 62 6f  result codes abo
1f70: 76 65 2e 20 20 42 75 74 20 74 68 65 20 75 70 70  ve.  But the upp
1f80: 65 72 20 62 69 74 73 20 6d 69 67 68 74 20 63 6f  er bits might co
1f90: 6e 74 61 69 6e 0a 2a 2a 20 6d 6f 72 65 20 73 70  ntain.** more sp
1fa0: 65 63 69 66 69 63 20 65 72 72 6f 72 20 69 6e 66  ecific error inf
1fb0: 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  ormation..**.** 
1fc0: 54 6f 20 65 78 74 72 61 63 74 20 74 68 65 20 70  To extract the p
1fd0: 72 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f  rimary result co
1fe0: 64 65 20 66 72 6f 6d 20 61 6e 20 65 78 74 65 6e  de from an exten
1ff0: 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 2c  ded result code,
2000: 0a 2a 2a 20 73 69 6d 70 6c 79 20 6d 61 73 6b 20  .** simply mask 
2010: 6f 66 66 20 74 68 65 20 6c 6f 77 65 72 20 38 20  off the lower 8 
2020: 62 69 74 73 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 20  bits..**.**     
2030: 20 20 20 70 72 69 6d 61 72 79 20 3d 20 65 78 74     primary = ext
2040: 65 6e 64 65 64 20 26 20 30 78 66 66 3b 0a 2a 2a  ended & 0xff;.**
2050: 0a 2a 2a 20 4e 65 77 20 72 65 73 75 6c 74 20 65  .** New result e
2060: 72 72 6f 72 20 63 6f 64 65 73 20 6d 61 79 20 62  rror codes may b
2070: 65 20 61 64 64 65 64 20 66 72 6f 6d 20 74 69 6d  e added from tim
2080: 65 20 74 6f 20 74 69 6d 65 2e 20 20 53 6f 66 74  e to time.  Soft
2090: 77 61 72 65 0a 2a 2a 20 74 68 61 74 20 75 73 65  ware.** that use
20a0: 73 20 74 68 65 20 65 78 74 65 6e 64 65 64 20 72  s the extended r
20b0: 65 73 75 6c 74 20 63 6f 64 65 73 20 73 68 6f 75  esult codes shou
20c0: 6c 64 20 70 6c 61 6e 20 61 63 63 6f 72 64 69 6e  ld plan accordin
20d0: 67 6c 79 20 61 6e 64 20 62 65 0a 2a 2a 20 73 75  gly and be.** su
20e0: 72 65 20 74 6f 20 61 6c 77 61 79 73 20 68 61 6e  re to always han
20f0: 64 6c 65 20 6e 65 77 20 75 6e 6b 6e 6f 77 6e 20  dle new unknown 
2100: 63 6f 64 65 73 20 67 72 61 63 65 66 75 6c 6c 79  codes gracefully
2110: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ..**.** The SQLI
2120: 54 45 5f 4f 4b 20 72 65 73 75 6c 74 20 63 6f 64  TE_OK result cod
2130: 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 62 65 20  e will never be 
2140: 65 78 74 65 6e 64 65 64 2e 20 20 49 74 20 77 69  extended.  It wi
2150: 6c 6c 20 61 6c 77 61 79 73 0a 2a 2a 20 62 65 20  ll always.** be 
2160: 65 78 61 63 74 6c 79 20 7a 65 72 6f 2e 0a 2a 2a  exactly zero..**
2170: 0a 2a 2a 20 54 68 65 20 65 78 74 65 6e 64 65 64  .** The extended
2180: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61 6c   result codes al
2190: 77 61 79 73 20 68 61 76 65 20 74 68 65 20 70 72  ways have the pr
21a0: 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f 64  imary result cod
21b0: 65 0a 2a 2a 20 61 73 20 61 20 70 72 65 66 69 78  e.** as a prefix
21c0: 2e 20 20 50 72 69 6d 61 72 79 20 72 65 73 75 6c  .  Primary resul
21d0: 74 20 63 6f 64 65 73 20 6f 6e 6c 79 20 63 6f 6e  t codes only con
21e0: 74 61 69 6e 20 61 20 73 69 6e 67 6c 65 20 22 5f  tain a single "_
21f0: 22 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 2e 20  ".** character. 
2200: 20 45 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74   Extended result
2210: 20 63 6f 64 65 73 20 63 6f 6e 74 61 69 6e 20 74   codes contain t
2220: 77 6f 20 6f 72 20 6d 6f 72 65 20 22 5f 22 20 63  wo or more "_" c
2230: 68 61 72 61 63 74 65 72 73 2e 0a 2a 2f 0a 23 64  haracters..*/.#d
2240: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
2250: 52 52 5f 52 45 41 44 20 20 20 20 20 20 20 20 20  RR_READ         
2260: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
2270: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
2280: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48   SQLITE_IOERR_SH
2290: 4f 52 54 5f 52 45 41 44 20 20 20 20 28 53 51 4c  ORT_READ    (SQL
22a0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 3c 3c  ITE_IOERR | (2<<
22b0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
22c0: 54 45 5f 49 4f 45 52 52 5f 57 52 49 54 45 20 20  TE_IOERR_WRITE  
22d0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
22e0: 4f 45 52 52 20 7c 20 28 33 3c 3c 38 29 29 0a 23  OERR | (3<<8)).#
22f0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
2300: 45 52 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20  ERR_FSYNC       
2310: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
2320: 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (4<<8)).#defin
2330: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44  e SQLITE_IOERR_D
2340: 49 52 5f 46 53 59 4e 43 20 20 20 20 20 28 53 51  IR_FSYNC     (SQ
2350: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 35 3c  LITE_IOERR | (5<
2360: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
2370: 49 54 45 5f 49 4f 45 52 52 5f 54 52 55 4e 43 41  ITE_IOERR_TRUNCA
2380: 54 45 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  TE      (SQLITE_
2390: 49 4f 45 52 52 20 7c 20 28 36 3c 3c 38 29 29 0a  IOERR | (6<<8)).
23a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
23b0: 4f 45 52 52 5f 46 53 54 41 54 20 20 20 20 20 20  OERR_FSTAT      
23c0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
23d0: 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64 65 66 69   | (7<<8)).#defi
23e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
23f0: 55 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20 28 53  UNLOCK        (S
2400: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 38  QLITE_IOERR | (8
2410: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
2420: 4c 49 54 45 5f 49 4f 45 52 52 5f 52 44 4c 4f 43  LITE_IOERR_RDLOC
2430: 4b 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  K        (SQLITE
2440: 5f 49 4f 45 52 52 20 7c 20 28 39 3c 3c 38 29 29  _IOERR | (9<<8))
2450: 0a 0a 2f 2a 0a 2a 2a 20 45 6e 61 62 6c 65 20 6f  ../*.** Enable o
2460: 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 65 78  r disable the ex
2470: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
2480: 64 65 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  des..*/.int sqli
2490: 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73  te3_extended_res
24a0: 75 6c 74 5f 63 6f 64 65 73 28 73 71 6c 69 74 65  ult_codes(sqlite
24b0: 33 2a 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a  3*, int onoff);.
24c0: 0a 2f 2a 0a 2a 2a 20 45 61 63 68 20 65 6e 74 72  ./*.** Each entr
24d0: 79 20 69 6e 20 61 6e 20 53 51 4c 69 74 65 20 74  y in an SQLite t
24e0: 61 62 6c 65 20 68 61 73 20 61 20 75 6e 69 71 75  able has a uniqu
24f0: 65 20 69 6e 74 65 67 65 72 20 6b 65 79 2e 20 20  e integer key.  
2500: 28 54 68 65 20 6b 65 79 20 69 73 0a 2a 2a 20 74  (The key is.** t
2510: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
2520: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
2530: 4b 45 59 20 63 6f 6c 75 6d 6e 20 69 66 20 74 68  KEY column if th
2540: 65 72 65 20 69 73 20 73 75 63 68 20 61 20 63 6f  ere is such a co
2550: 6c 75 6d 6e 2c 0a 2a 2a 20 6f 74 68 65 72 77 69  lumn,.** otherwi
2560: 73 65 20 74 68 65 20 6b 65 79 20 69 73 20 67 65  se the key is ge
2570: 6e 65 72 61 74 65 64 20 61 74 20 72 61 6e 64 6f  nerated at rando
2580: 6d 2e 20 20 54 68 65 20 75 6e 69 71 75 65 20 6b  m.  The unique k
2590: 65 79 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20  ey is always.** 
25a0: 61 76 61 69 6c 61 62 6c 65 20 61 73 20 74 68 65  available as the
25b0: 20 52 4f 57 49 44 2c 20 4f 49 44 2c 20 6f 72 20   ROWID, OID, or 
25c0: 5f 52 4f 57 49 44 5f 20 63 6f 6c 75 6d 6e 2e 29  _ROWID_ column.)
25d0: 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20    The following 
25e0: 72 6f 75 74 69 6e 65 0a 2a 2a 20 72 65 74 75 72  routine.** retur
25f0: 6e 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 6b  ns the integer k
2600: 65 79 20 6f 66 20 74 68 65 20 6d 6f 73 74 20 72  ey of the most r
2610: 65 63 65 6e 74 20 69 6e 73 65 72 74 20 69 6e 20  ecent insert in 
2620: 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 2a 2a  the database..**
2630: 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f  .** This functio
2640: 6e 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20  n is similar to 
2650: 74 68 65 20 6d 79 73 71 6c 5f 69 6e 73 65 72 74  the mysql_insert
2660: 5f 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 66  _id() function f
2670: 72 6f 6d 20 4d 79 53 51 4c 2e 0a 2a 2f 0a 73 71  rom MySQL..*/.sq
2680: 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c 69 74  lite_int64 sqlit
2690: 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
26a0: 6f 77 69 64 28 73 71 6c 69 74 65 33 2a 29 3b 0a  owid(sqlite3*);.
26b0: 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63  ./*.** This func
26c0: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
26d0: 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62   number of datab
26e0: 61 73 65 20 72 6f 77 73 20 74 68 61 74 20 77 65  ase rows that we
26f0: 72 65 20 63 68 61 6e 67 65 64 0a 2a 2a 20 28 6f  re changed.** (o
2700: 72 20 69 6e 73 65 72 74 65 64 20 6f 72 20 64 65  r inserted or de
2710: 6c 65 74 65 64 29 20 62 79 20 74 68 65 20 6d 6f  leted) by the mo
2720: 73 74 20 72 65 63 65 6e 74 20 63 61 6c 6c 65 64  st recent called
2730: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 2e   sqlite3_exec().
2740: 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20 63 68 61 6e 67  .**.** All chang
2750: 65 73 20 61 72 65 20 63 6f 75 6e 74 65 64 2c 20  es are counted, 
2760: 65 76 65 6e 20 69 66 20 74 68 65 79 20 77 65 72  even if they wer
2770: 65 20 6c 61 74 65 72 20 75 6e 64 6f 6e 65 20 62  e later undone b
2780: 79 20 61 0a 2a 2a 20 52 4f 4c 4c 42 41 43 4b 20  y a.** ROLLBACK 
2790: 6f 72 20 41 42 4f 52 54 2e 20 20 45 78 63 65 70  or ABORT.  Excep
27a0: 74 2c 20 63 68 61 6e 67 65 73 20 61 73 73 6f 63  t, changes assoc
27b0: 69 61 74 65 64 20 77 69 74 68 20 63 72 65 61 74  iated with creat
27c0: 69 6e 67 20 61 6e 64 0a 2a 2a 20 64 72 6f 70 70  ing and.** dropp
27d0: 69 6e 67 20 74 61 62 6c 65 73 20 61 72 65 20 6e  ing tables are n
27e0: 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a 2a  ot counted..**.*
27f0: 2a 20 49 66 20 61 20 63 61 6c 6c 62 61 63 6b 20  * If a callback 
2800: 69 6e 76 6f 6b 65 73 20 73 71 6c 69 74 65 33 5f  invokes sqlite3_
2810: 65 78 65 63 28 29 20 72 65 63 75 72 73 69 76 65  exec() recursive
2820: 6c 79 2c 20 74 68 65 6e 20 74 68 65 20 63 68 61  ly, then the cha
2830: 6e 67 65 73 0a 2a 2a 20 69 6e 20 74 68 65 20 69  nges.** in the i
2840: 6e 6e 65 72 2c 20 72 65 63 75 72 73 69 76 65 20  nner, recursive 
2850: 63 61 6c 6c 20 61 72 65 20 63 6f 75 6e 74 65 64  call are counted
2860: 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 74   together with t
2870: 68 65 20 63 68 61 6e 67 65 73 0a 2a 2a 20 69 6e  he changes.** in
2880: 20 74 68 65 20 6f 75 74 65 72 20 63 61 6c 6c 2e   the outer call.
2890: 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 69 6d  .**.** SQLite im
28a0: 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 63 6f 6d  plements the com
28b0: 6d 61 6e 64 20 22 44 45 4c 45 54 45 20 46 52 4f  mand "DELETE FRO
28c0: 4d 20 74 61 62 6c 65 22 20 77 69 74 68 6f 75 74  M table" without
28d0: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 0a   a WHERE clause.
28e0: 2a 2a 20 62 79 20 64 72 6f 70 70 69 6e 67 20 61  ** by dropping a
28f0: 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 74 68  nd recreating th
2900: 65 20 74 61 62 6c 65 2e 20 20 28 54 68 69 73 20  e table.  (This 
2910: 69 73 20 6d 75 63 68 20 66 61 73 74 65 72 20 74  is much faster t
2920: 68 61 6e 20 67 6f 69 6e 67 0a 2a 2a 20 74 68 72  han going.** thr
2930: 6f 75 67 68 20 61 6e 64 20 64 65 6c 65 74 69 6e  ough and deletin
2940: 67 20 69 6e 64 69 76 69 64 75 61 6c 20 65 6c 65  g individual ele
2950: 6d 65 6e 74 73 20 66 6f 72 6d 20 74 68 65 20 74  ments form the t
2960: 61 62 6c 65 2e 29 20 20 42 65 63 61 75 73 65 20  able.)  Because 
2970: 6f 66 0a 2a 2a 20 74 68 69 73 20 6f 70 74 69 6d  of.** this optim
2980: 69 7a 61 74 69 6f 6e 2c 20 74 68 65 20 63 68 61  ization, the cha
2990: 6e 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 22 44  nge count for "D
29a0: 45 4c 45 54 45 20 46 52 4f 4d 20 74 61 62 6c 65  ELETE FROM table
29b0: 22 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 7a 65 72  " will be.** zer
29c0: 6f 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  o regardless of 
29d0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c  the number of el
29e0: 65 6d 65 6e 74 73 20 74 68 61 74 20 77 65 72 65  ements that were
29f0: 20 6f 72 69 67 69 6e 61 6c 6c 79 20 69 6e 20 74   originally in t
2a00: 68 65 0a 2a 2a 20 74 61 62 6c 65 2e 20 54 6f 20  he.** table. To 
2a10: 67 65 74 20 61 6e 20 61 63 63 75 72 61 74 65 20  get an accurate 
2a20: 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75 6d  count of the num
2a30: 62 65 72 20 6f 66 20 72 6f 77 73 20 64 65 6c 65  ber of rows dele
2a40: 74 65 64 2c 20 75 73 65 0a 2a 2a 20 22 44 45 4c  ted, use.** "DEL
2a50: 45 54 45 20 46 52 4f 4d 20 74 61 62 6c 65 20 57  ETE FROM table W
2a60: 48 45 52 45 20 31 22 20 69 6e 73 74 65 61 64 2e  HERE 1" instead.
2a70: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
2a80: 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33 2a  changes(sqlite3*
2a90: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66  );../*.** This f
2aa0: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
2ab0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61  the number of da
2ac0: 74 61 62 61 73 65 20 72 6f 77 73 20 74 68 61 74  tabase rows that
2ad0: 20 68 61 76 65 20 62 65 65 6e 0a 2a 2a 20 6d 6f   have been.** mo
2ae0: 64 69 66 69 65 64 20 62 79 20 49 4e 53 45 52 54  dified by INSERT
2af0: 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45  , UPDATE or DELE
2b00: 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20 73 69  TE statements si
2b10: 6e 63 65 20 74 68 65 20 64 61 74 61 62 61 73 65  nce the database
2b20: 20 68 61 6e 64 6c 65 0a 2a 2a 20 77 61 73 20 6f   handle.** was o
2b30: 70 65 6e 65 64 2e 20 54 68 69 73 20 69 6e 63 6c  pened. This incl
2b40: 75 64 65 73 20 55 50 44 41 54 45 2c 20 49 4e 53  udes UPDATE, INS
2b50: 45 52 54 20 61 6e 64 20 44 45 4c 45 54 45 20 73  ERT and DELETE s
2b60: 74 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74  tatements execut
2b70: 65 64 0a 2a 2a 20 61 73 20 70 61 72 74 20 6f 66  ed.** as part of
2b80: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
2b90: 73 2e 20 41 6c 6c 20 63 68 61 6e 67 65 73 20 61  s. All changes a
2ba0: 72 65 20 63 6f 75 6e 74 65 64 20 61 73 20 73 6f  re counted as so
2bb0: 6f 6e 20 61 73 20 74 68 65 0a 2a 2a 20 73 74 61  on as the.** sta
2bc0: 74 65 6d 65 6e 74 20 74 68 61 74 20 6d 61 6b 65  tement that make
2bd0: 73 20 74 68 65 6d 20 69 73 20 63 6f 6d 70 6c 65  s them is comple
2be0: 74 65 64 20 28 77 68 65 6e 20 74 68 65 20 73 74  ted (when the st
2bf0: 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 69  atement handle i
2c00: 73 0a 2a 2a 20 70 61 73 73 65 64 20 74 6f 20 73  s.** passed to s
2c10: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20 6f  qlite3_reset() o
2c20: 72 20 73 71 6c 69 74 65 5f 66 69 6e 61 6c 69 73  r sqlite_finalis
2c30: 65 28 29 29 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  e())..**.** SQLi
2c40: 74 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  te implements th
2c50: 65 20 63 6f 6d 6d 61 6e 64 20 22 44 45 4c 45 54  e command "DELET
2c60: 45 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 77 69  E FROM table" wi
2c70: 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63 6c  thout a WHERE cl
2c80: 61 75 73 65 0a 2a 2a 20 62 79 20 64 72 6f 70 70  ause.** by dropp
2c90: 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74 69  ing and recreati
2ca0: 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20 28  ng the table.  (
2cb0: 54 68 69 73 20 69 73 20 6d 75 63 68 20 66 61 73  This is much fas
2cc0: 74 65 72 20 74 68 61 6e 20 67 6f 69 6e 67 0a 2a  ter than going.*
2cd0: 2a 20 74 68 72 6f 75 67 68 20 61 6e 64 20 64 65  * through and de
2ce0: 6c 65 74 69 6e 67 20 69 6e 64 69 76 69 64 75 61  leting individua
2cf0: 6c 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72 6d 20  l elements form 
2d00: 74 68 65 20 74 61 62 6c 65 2e 29 20 20 42 65 63  the table.)  Bec
2d10: 61 75 73 65 20 6f 66 0a 2a 2a 20 74 68 69 73 20  ause of.** this 
2d20: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2c 20 74 68  optimization, th
2d30: 65 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 20 66  e change count f
2d40: 6f 72 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20  or "DELETE FROM 
2d50: 74 61 62 6c 65 22 20 77 69 6c 6c 20 62 65 0a 2a  table" will be.*
2d60: 2a 20 7a 65 72 6f 20 72 65 67 61 72 64 6c 65 73  * zero regardles
2d70: 73 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20  s of the number 
2d80: 6f 66 20 65 6c 65 6d 65 6e 74 73 20 74 68 61 74  of elements that
2d90: 20 77 65 72 65 20 6f 72 69 67 69 6e 61 6c 6c 79   were originally
2da0: 20 69 6e 20 74 68 65 0a 2a 2a 20 74 61 62 6c 65   in the.** table
2db0: 2e 20 54 6f 20 67 65 74 20 61 6e 20 61 63 63 75  . To get an accu
2dc0: 72 61 74 65 20 63 6f 75 6e 74 20 6f 66 20 74 68  rate count of th
2dd0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
2de0: 20 64 65 6c 65 74 65 64 2c 20 75 73 65 0a 2a 2a   deleted, use.**
2df0: 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 61   "DELETE FROM ta
2e00: 62 6c 65 20 57 48 45 52 45 20 31 22 20 69 6e 73  ble WHERE 1" ins
2e10: 74 65 61 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  tead..*/.int sql
2e20: 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67  ite3_total_chang
2e30: 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f  es(sqlite3*);../
2e40: 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
2e50: 63 61 75 73 65 73 20 61 6e 79 20 70 65 6e 64 69  causes any pendi
2e60: 6e 67 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  ng database oper
2e70: 61 74 69 6f 6e 20 74 6f 20 61 62 6f 72 74 20 61  ation to abort a
2e80: 6e 64 0a 2a 2a 20 72 65 74 75 72 6e 20 61 74 20  nd.** return at 
2e90: 69 74 73 20 65 61 72 6c 69 65 73 74 20 6f 70 70  its earliest opp
2ea0: 6f 72 74 75 6e 69 74 79 2e 20 20 54 68 69 73 20  ortunity.  This 
2eb0: 72 6f 75 74 69 6e 65 20 69 73 20 74 79 70 69 63  routine is typic
2ec0: 61 6c 6c 79 0a 2a 2a 20 63 61 6c 6c 65 64 20 69  ally.** called i
2ed0: 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20  n response to a 
2ee0: 75 73 65 72 20 61 63 74 69 6f 6e 20 73 75 63 68  user action such
2ef0: 20 61 73 20 70 72 65 73 73 69 6e 67 20 22 43 61   as pressing "Ca
2f00: 6e 63 65 6c 22 0a 2a 2a 20 6f 72 20 43 74 72 6c  ncel".** or Ctrl
2f10: 2d 43 20 77 68 65 72 65 20 74 68 65 20 75 73 65  -C where the use
2f20: 72 20 77 61 6e 74 73 20 61 20 6c 6f 6e 67 20 71  r wants a long q
2f30: 75 65 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 74  uery operation t
2f40: 6f 20 68 61 6c 74 0a 2a 2a 20 69 6d 6d 65 64 69  o halt.** immedi
2f50: 61 74 65 6c 79 2e 0a 2a 2f 0a 76 6f 69 64 20 73  ately..*/.void s
2f60: 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
2f70: 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 0a 2f 2a  (sqlite3*);.../*
2f80: 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
2f90: 20 72 65 74 75 72 6e 20 74 72 75 65 20 69 66 20   return true if 
2fa0: 74 68 65 20 67 69 76 65 6e 20 69 6e 70 75 74 20  the given input 
2fb0: 73 74 72 69 6e 67 20 63 6f 6d 70 72 69 73 65 73  string comprises
2fc0: 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  .** one or more 
2fd0: 63 6f 6d 70 6c 65 74 65 20 53 51 4c 20 73 74 61  complete SQL sta
2fe0: 74 65 6d 65 6e 74 73 2e 20 46 6f 72 20 74 68 65  tements. For the
2ff0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
3000: 65 28 29 20 63 61 6c 6c 2c 0a 2a 2a 20 74 68 65  e() call,.** the
3010: 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
3020: 62 65 20 61 20 6e 75 6c 2d 74 65 72 6d 69 6e 61  be a nul-termina
3030: 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
3040: 2e 20 46 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  . For.** sqlite3
3050: 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 2c 20 61  _complete16(), a
3060: 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20   nul-terminated 
3070: 6d 61 63 68 69 6e 65 20 62 79 74 65 20 6f 72 64  machine byte ord
3080: 65 72 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67  er UTF-16 string
3090: 0a 2a 2a 20 69 73 20 72 65 71 75 69 72 65 64 2e  .** is required.
30a0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 6c 67 6f 72  .**.** The algor
30b0: 69 74 68 6d 20 69 73 20 73 69 6d 70 6c 65 2e 20  ithm is simple. 
30c0: 20 49 66 20 74 68 65 20 6c 61 73 74 20 74 6f 6b   If the last tok
30d0: 65 6e 20 6f 74 68 65 72 20 74 68 61 6e 20 73 70  en other than sp
30e0: 61 63 65 73 0a 2a 2a 20 61 6e 64 20 63 6f 6d 6d  aces.** and comm
30f0: 65 6e 74 73 20 69 73 20 61 20 73 65 6d 69 63 6f  ents is a semico
3100: 6c 6f 6e 2c 20 74 68 65 6e 20 72 65 74 75 72 6e  lon, then return
3110: 20 74 72 75 65 2e 20 20 6f 74 68 65 72 77 69 73   true.  otherwis
3120: 65 20 72 65 74 75 72 6e 0a 2a 2a 20 66 61 6c 73  e return.** fals
3130: 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  e..*/.int sqlite
3140: 33 5f 63 6f 6d 70 6c 65 74 65 28 63 6f 6e 73 74  3_complete(const
3150: 20 63 68 61 72 20 2a 73 71 6c 29 3b 0a 69 6e 74   char *sql);.int
3160: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
3170: 65 31 36 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a  e16(const void *
3180: 73 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69  sql);../*.** Thi
3190: 73 20 72 6f 75 74 69 6e 65 20 69 64 65 6e 74 69  s routine identi
31a0: 66 69 65 73 20 61 20 63 61 6c 6c 62 61 63 6b 20  fies a callback 
31b0: 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 73  function that is
31c0: 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 77 68 65 6e   invoked.** when
31d0: 65 76 65 72 20 61 6e 20 61 74 74 65 6d 70 74 20  ever an attempt 
31e0: 69 73 20 6d 61 64 65 20 74 6f 20 6f 70 65 6e 20  is made to open 
31f0: 61 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65  a database table
3200: 20 74 68 61 74 20 69 73 0a 2a 2a 20 63 75 72 72   that is.** curr
3210: 65 6e 74 6c 79 20 6c 6f 63 6b 65 64 20 62 79 20  ently locked by 
3220: 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 73 20  another process 
3230: 6f 72 20 74 68 72 65 61 64 2e 20 20 49 66 20 74  or thread.  If t
3240: 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  he busy callback
3250: 0a 2a 2a 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65  .** is NULL, the
3260: 6e 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  n sqlite3_exec()
3270: 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f   returns SQLITE_
3280: 42 55 53 59 20 69 6d 6d 65 64 69 61 74 65 6c 79  BUSY immediately
3290: 20 69 66 0a 2a 2a 20 69 74 20 66 69 6e 64 73 20   if.** it finds 
32a0: 61 20 6c 6f 63 6b 65 64 20 74 61 62 6c 65 2e 20  a locked table. 
32b0: 20 49 66 20 74 68 65 20 62 75 73 79 20 63 61 6c   If the busy cal
32c0: 6c 62 61 63 6b 20 69 73 20 6e 6f 74 20 4e 55 4c  lback is not NUL
32d0: 4c 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74  L, then.** sqlit
32e0: 65 33 5f 65 78 65 63 28 29 20 69 6e 76 6f 6b 65  e3_exec() invoke
32f0: 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77  s the callback w
3300: 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74  ith two argument
3310: 73 2e 20 20 54 68 65 0a 2a 2a 20 66 69 72 73 74  s.  The.** first
3320: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
3330: 20 68 61 6e 64 6c 65 72 20 69 73 20 61 20 63 6f   handler is a co
3340: 70 79 20 6f 66 20 74 68 65 20 76 6f 69 64 2a 20  py of the void* 
3350: 70 6f 69 6e 74 65 72 20 77 68 69 63 68 0a 2a 2a  pointer which.**
3360: 20 69 73 20 74 68 65 20 74 68 69 72 64 20 61 72   is the third ar
3370: 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 72  gument to this r
3380: 6f 75 74 69 6e 65 2e 20 20 54 68 65 20 73 65 63  outine.  The sec
3390: 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a  ond argument to.
33a0: 2a 2a 20 74 68 65 20 68 61 6e 64 6c 65 72 20 69  ** the handler i
33b0: 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
33c0: 74 69 6d 65 73 20 74 68 61 74 20 74 68 65 20 62  times that the b
33d0: 75 73 79 20 68 61 6e 64 6c 65 72 20 68 61 73 0a  usy handler has.
33e0: 2a 2a 20 62 65 65 6e 20 69 6e 76 6f 6b 65 64 20  ** been invoked 
33f0: 66 6f 72 20 74 68 69 73 20 6c 6f 63 6b 69 6e 67  for this locking
3400: 20 65 76 65 6e 74 2e 20 20 49 66 20 74 68 65 0a   event.  If the.
3410: 2a 2a 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  ** busy callback
3420: 20 72 65 74 75 72 6e 73 20 30 2c 20 74 68 65 6e   returns 0, then
3430: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
3440: 69 6d 6d 65 64 69 61 74 65 6c 79 20 72 65 74 75  immediately retu
3450: 72 6e 73 0a 2a 2a 20 53 51 4c 49 54 45 5f 42 55  rns.** SQLITE_BU
3460: 53 59 2e 20 20 49 66 20 74 68 65 20 63 61 6c 6c  SY.  If the call
3470: 62 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e  back returns non
3480: 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 73 71 6c 69  -zero, then sqli
3490: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 74 72  te3_exec().** tr
34a0: 69 65 73 20 74 6f 20 6f 70 65 6e 20 74 68 65 20  ies to open the 
34b0: 74 61 62 6c 65 20 61 67 61 69 6e 20 61 6e 64 20  table again and 
34c0: 74 68 65 20 63 79 63 6c 65 20 72 65 70 65 61 74  the cycle repeat
34d0: 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65  s..**.** The pre
34e0: 73 65 6e 63 65 20 6f 66 20 61 20 62 75 73 79 20  sence of a busy 
34f0: 68 61 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f 74  handler does not
3500: 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 0a   guarantee that.
3510: 2a 2a 20 69 74 20 77 69 6c 6c 20 62 65 20 69 6e  ** it will be in
3520: 76 6f 6b 65 64 20 77 68 65 6e 20 74 68 65 72 65  voked when there
3530: 20 69 73 20 6c 6f 63 6b 20 63 6f 6e 74 65 6e 74   is lock content
3540: 69 6f 6e 2e 0a 2a 2a 20 49 66 20 53 51 4c 69 74  ion..** If SQLit
3550: 65 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 61  e determines tha
3560: 74 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 62  t invoking the b
3570: 75 73 79 20 68 61 6e 64 6c 65 72 20 63 6f 75 6c  usy handler coul
3580: 64 20 72 65 73 75 6c 74 20 69 6e 0a 2a 2a 20 61  d result in.** a
3590: 20 64 65 61 64 6c 6f 63 6b 2c 20 69 74 20 77 69   deadlock, it wi
35a0: 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  ll return SQLITE
35b0: 5f 42 55 53 59 20 69 6e 73 74 65 61 64 2e 0a 2a  _BUSY instead..*
35c0: 2a 20 43 6f 6e 73 69 64 65 72 20 61 20 73 63 65  * Consider a sce
35d0: 6e 61 72 69 6f 20 77 68 65 72 65 20 6f 6e 65 20  nario where one 
35e0: 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c 64 69  process is holdi
35f0: 6e 67 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 74  ng a read lock t
3600: 68 61 74 0a 2a 2a 20 69 74 20 69 73 20 74 72 79  hat.** it is try
3610: 69 6e 67 20 74 6f 20 70 72 6f 6d 6f 74 65 20 74  ing to promote t
3620: 6f 20 61 20 72 65 73 65 72 76 65 64 20 6c 6f 63  o a reserved loc
3630: 6b 20 61 6e 64 0a 2a 2a 20 61 20 73 65 63 6f 6e  k and.** a secon
3640: 64 20 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c  d process is hol
3650: 64 69 6e 67 20 61 20 72 65 73 65 72 76 65 64 20  ding a reserved 
3660: 6c 6f 63 6b 20 74 68 61 74 20 69 74 20 69 73 20  lock that it is 
3670: 74 72 79 69 6e 67 0a 2a 2a 20 74 6f 20 70 72 6f  trying.** to pro
3680: 6d 6f 74 65 20 74 6f 20 61 6e 20 65 78 63 6c 75  mote to an exclu
3690: 73 69 76 65 20 6c 6f 63 6b 2e 20 20 54 68 65 20  sive lock.  The 
36a0: 66 69 72 73 74 20 70 72 6f 63 65 73 73 20 63 61  first process ca
36b0: 6e 6e 6f 74 20 70 72 6f 63 65 65 64 0a 2a 2a 20  nnot proceed.** 
36c0: 62 65 63 61 75 73 65 20 69 74 20 69 73 20 62 6c  because it is bl
36d0: 6f 63 6b 65 64 20 62 79 20 74 68 65 20 73 65 63  ocked by the sec
36e0: 6f 6e 64 20 61 6e 64 20 74 68 65 20 73 65 63 6f  ond and the seco
36f0: 6e 64 20 70 72 6f 63 65 73 73 20 63 61 6e 6e 6f  nd process canno
3700: 74 0a 2a 2a 20 70 72 6f 63 65 65 64 20 62 65 63  t.** proceed bec
3710: 61 75 73 65 20 69 74 20 69 73 20 62 6c 6f 63 6b  ause it is block
3720: 65 64 20 62 79 20 74 68 65 20 66 69 72 73 74 2e  ed by the first.
3730: 20 20 49 66 20 62 6f 74 68 20 70 72 6f 63 65 73    If both proces
3740: 73 65 73 0a 2a 2a 20 69 6e 76 6f 6b 65 20 74 68  ses.** invoke th
3750: 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2c  e busy handlers,
3760: 20 6e 65 69 74 68 65 72 20 77 69 6c 6c 20 6d 61   neither will ma
3770: 6b 65 20 61 6e 79 20 70 72 6f 67 72 65 73 73 2e  ke any progress.
3780: 20 20 54 68 65 72 65 66 6f 72 65 2c 0a 2a 2a 20    Therefore,.** 
3790: 53 51 4c 69 74 65 20 72 65 74 75 72 6e 73 20 53  SQLite returns S
37a0: 51 4c 49 54 45 5f 42 55 53 59 20 66 6f 72 20 74  QLITE_BUSY for t
37b0: 68 65 20 66 69 72 73 74 20 70 72 6f 63 65 73 73  he first process
37c0: 2c 20 68 6f 70 69 6e 67 20 74 68 61 74 20 74 68  , hoping that th
37d0: 69 73 0a 2a 2a 20 77 69 6c 6c 20 69 6e 64 75 63  is.** will induc
37e0: 65 20 74 68 65 20 66 69 72 73 74 20 70 72 6f 63  e the first proc
37f0: 65 73 73 20 74 6f 20 72 65 6c 65 61 73 65 20 69  ess to release i
3800: 74 73 20 72 65 61 64 20 6c 6f 63 6b 20 61 6e 64  ts read lock and
3810: 20 61 6c 6c 6f 77 0a 2a 2a 20 74 68 65 20 73 65   allow.** the se
3820: 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 74 6f 20  cond process to 
3830: 70 72 6f 63 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  proceed..**.** T
3840: 68 65 20 64 65 66 61 75 6c 74 20 62 75 73 79 20  he default busy 
3850: 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 55 4c 4c  callback is NULL
3860: 2e 0a 2a 2a 0a 2a 2a 20 53 71 6c 69 74 65 20 69  ..**.** Sqlite i
3870: 73 20 72 65 2d 65 6e 74 72 61 6e 74 2c 20 73 6f  s re-entrant, so
3880: 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65   the busy handle
3890: 72 20 6d 61 79 20 73 74 61 72 74 20 61 20 6e 65  r may start a ne
38a0: 77 20 71 75 65 72 79 2e 20 0a 2a 2a 20 28 49 74  w query. .** (It
38b0: 20 69 73 20 6e 6f 74 20 63 6c 65 61 72 20 77 68   is not clear wh
38c0: 79 20 61 6e 79 6f 6e 65 20 77 6f 75 6c 64 20 65  y anyone would e
38d0: 76 65 72 79 20 77 61 6e 74 20 74 6f 20 64 6f 20  very want to do 
38e0: 74 68 69 73 2c 20 62 75 74 20 69 74 0a 2a 2a 20  this, but it.** 
38f0: 69 73 20 61 6c 6c 6f 77 65 64 2c 20 69 6e 20 74  is allowed, in t
3900: 68 65 6f 72 79 2e 29 20 20 42 75 74 20 74 68 65  heory.)  But the
3910: 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 6d 61   busy handler ma
3920: 79 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68 65 0a  y not close the.
3930: 2a 2a 20 64 61 74 61 62 61 73 65 2e 20 20 43 6c  ** database.  Cl
3940: 6f 73 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  osing the databa
3950: 73 65 20 66 72 6f 6d 20 61 20 62 75 73 79 20 68  se from a busy h
3960: 61 6e 64 6c 65 72 20 77 69 6c 6c 20 64 65 6c 65  andler will dele
3970: 74 65 20 0a 2a 2a 20 64 61 74 61 20 73 74 72 75  te .** data stru
3980: 63 74 75 72 65 73 20 6f 75 74 20 66 72 6f 6d 20  ctures out from 
3990: 75 6e 64 65 72 20 74 68 65 20 65 78 65 63 75 74  under the execut
39a0: 69 6e 67 20 71 75 65 72 79 20 61 6e 64 20 77 69  ing query and wi
39b0: 6c 6c 20 0a 2a 2a 20 70 72 6f 62 61 62 6c 79 20  ll .** probably 
39c0: 72 65 73 75 6c 74 20 69 6e 20 61 20 63 6f 72 65  result in a core
39d0: 64 75 6d 70 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  dump..*/.int sql
39e0: 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
39f0: 72 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 28  r(sqlite3*, int(
3a00: 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 29 2c 20 76  *)(void*,int), v
3a10: 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  oid*);../*.** Th
3a20: 69 73 20 72 6f 75 74 69 6e 65 20 73 65 74 73 20  is routine sets 
3a30: 61 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 74  a busy handler t
3a40: 68 61 74 20 73 6c 65 65 70 73 20 66 6f 72 20 61  hat sleeps for a
3a50: 20 77 68 69 6c 65 20 77 68 65 6e 20 61 0a 2a 2a   while when a.**
3a60: 20 74 61 62 6c 65 20 69 73 20 6c 6f 63 6b 65 64   table is locked
3a70: 2e 20 20 54 68 65 20 68 61 6e 64 6c 65 72 20 77  .  The handler w
3a80: 69 6c 6c 20 73 6c 65 65 70 20 6d 75 6c 74 69 70  ill sleep multip
3a90: 6c 65 20 74 69 6d 65 73 20 75 6e 74 69 6c 20 0a  le times until .
3aa0: 2a 2a 20 61 74 20 6c 65 61 73 74 20 22 6d 73 22  ** at least "ms"
3ab0: 20 6d 69 6c 6c 65 73 65 63 6f 6e 64 73 20 6f 66   milleseconds of
3ac0: 20 73 6c 65 65 70 69 6e 67 20 68 61 76 65 20 62   sleeping have b
3ad0: 65 65 6e 20 64 6f 6e 65 2e 20 20 41 66 74 65 72  een done.  After
3ae0: 0a 2a 2a 20 22 6d 73 22 20 6d 69 6c 6c 65 73 65  .** "ms" millese
3af0: 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70 69 6e  conds of sleepin
3b00: 67 2c 20 74 68 65 20 68 61 6e 64 6c 65 72 20 72  g, the handler r
3b10: 65 74 75 72 6e 73 20 30 20 77 68 69 63 68 0a 2a  eturns 0 which.*
3b20: 2a 20 63 61 75 73 65 73 20 73 71 6c 69 74 65 33  * causes sqlite3
3b30: 5f 65 78 65 63 28 29 20 74 6f 20 72 65 74 75 72  _exec() to retur
3b40: 6e 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 0a 2a  n SQLITE_BUSY..*
3b50: 2a 0a 2a 2a 20 43 61 6c 6c 69 6e 67 20 74 68 69  *.** Calling thi
3b60: 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68 20 61  s routine with a
3b70: 6e 20 61 72 67 75 6d 65 6e 74 20 6c 65 73 73 20  n argument less 
3b80: 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
3b90: 20 7a 65 72 6f 0a 2a 2a 20 74 75 72 6e 73 20 6f   zero.** turns o
3ba0: 66 66 20 61 6c 6c 20 62 75 73 79 20 68 61 6e 64  ff all busy hand
3bb0: 6c 65 72 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  lers..*/.int sql
3bc0: 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
3bd0: 74 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20  t(sqlite3*, int 
3be0: 6d 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73  ms);../*.** This
3bf0: 20 6e 65 78 74 20 72 6f 75 74 69 6e 65 20 69 73   next routine is
3c00: 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 61 20 77   really just a w
3c10: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 73 71  rapper around sq
3c20: 6c 69 74 65 33 5f 65 78 65 63 28 29 2e 0a 2a 2a  lite3_exec()..**
3c30: 20 49 6e 73 74 65 61 64 20 6f 66 20 69 6e 76 6f   Instead of invo
3c40: 6b 69 6e 67 20 61 20 75 73 65 72 2d 73 75 70 70  king a user-supp
3c50: 6c 69 65 64 20 63 61 6c 6c 62 61 63 6b 20 66 6f  lied callback fo
3c60: 72 20 65 61 63 68 20 72 6f 77 20 6f 66 20 74 68  r each row of th
3c70: 65 0a 2a 2a 20 72 65 73 75 6c 74 2c 20 74 68 69  e.** result, thi
3c80: 73 20 72 6f 75 74 69 6e 65 20 72 65 6d 65 6d 62  s routine rememb
3c90: 65 72 73 20 65 61 63 68 20 72 6f 77 20 6f 66 20  ers each row of 
3ca0: 74 68 65 20 72 65 73 75 6c 74 20 69 6e 20 6d 65  the result in me
3cb0: 6d 6f 72 79 0a 2a 2a 20 6f 62 74 61 69 6e 65 64  mory.** obtained
3cc0: 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2c 20   from malloc(), 
3cd0: 74 68 65 6e 20 72 65 74 75 72 6e 73 20 61 6c 6c  then returns all
3ce0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 61   of the result a
3cf0: 66 74 65 72 20 74 68 65 0a 2a 2a 20 71 75 65 72  fter the.** quer
3d00: 79 20 68 61 73 20 66 69 6e 69 73 68 65 64 2e 20  y has finished. 
3d10: 0a 2a 2a 0a 2a 2a 20 41 73 20 61 6e 20 65 78 61  .**.** As an exa
3d20: 6d 70 6c 65 2c 20 73 75 70 70 6f 73 65 20 74 68  mple, suppose th
3d30: 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 20 77  e query result w
3d40: 68 65 72 65 20 74 68 69 73 20 74 61 62 6c 65 3a  here this table:
3d50: 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20 4e 61  .**.**        Na
3d60: 6d 65 20 20 20 20 20 20 20 20 7c 20 41 67 65 0a  me        | Age.
3d70: 2a 2a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d  **        ------
3d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d90: 2d 0a 2a 2a 20 20 20 20 20 20 20 20 41 6c 69 63  -.**        Alic
3da0: 65 20 20 20 20 20 20 20 7c 20 34 33 0a 2a 2a 20  e       | 43.** 
3db0: 20 20 20 20 20 20 20 42 6f 62 20 20 20 20 20 20         Bob      
3dc0: 20 20 20 7c 20 32 38 0a 2a 2a 20 20 20 20 20 20     | 28.**      
3dd0: 20 20 43 69 6e 64 79 20 20 20 20 20 20 20 7c 20    Cindy       | 
3de0: 32 31 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20  21.**.** If the 
3df0: 33 72 64 20 61 72 67 75 6d 65 6e 74 20 77 65 72  3rd argument wer
3e00: 65 20 26 61 7a 52 65 73 75 6c 74 20 74 68 65 6e  e &azResult then
3e10: 20 61 66 74 65 72 20 74 68 65 20 66 75 6e 63 74   after the funct
3e20: 69 6f 6e 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61  ion returns.** a
3e30: 7a 52 65 73 75 6c 74 20 77 69 6c 6c 20 63 6f 6e  zResult will con
3e40: 74 61 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69  tain the followi
3e50: 6e 67 20 64 61 74 61 3a 0a 2a 2a 0a 2a 2a 20 20  ng data:.**.**  
3e60: 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 5b 30        azResult[0
3e70: 5d 20 3d 20 22 4e 61 6d 65 22 3b 0a 2a 2a 20 20  ] = "Name";.**  
3e80: 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 5b 31        azResult[1
3e90: 5d 20 3d 20 22 41 67 65 22 3b 0a 2a 2a 20 20 20  ] = "Age";.**   
3ea0: 20 20 20 20 20 61 7a 52 65 73 75 6c 74 5b 32 5d       azResult[2]
3eb0: 20 3d 20 22 41 6c 69 63 65 22 3b 0a 2a 2a 20 20   = "Alice";.**  
3ec0: 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 5b 33        azResult[3
3ed0: 5d 20 3d 20 22 34 33 22 3b 0a 2a 2a 20 20 20 20  ] = "43";.**    
3ee0: 20 20 20 20 61 7a 52 65 73 75 6c 74 5b 34 5d 20      azResult[4] 
3ef0: 3d 20 22 42 6f 62 22 3b 0a 2a 2a 20 20 20 20 20  = "Bob";.**     
3f00: 20 20 20 61 7a 52 65 73 75 6c 74 5b 35 5d 20 3d     azResult[5] =
3f10: 20 22 32 38 22 3b 0a 2a 2a 20 20 20 20 20 20 20   "28";.**       
3f20: 20 61 7a 52 65 73 75 6c 74 5b 36 5d 20 3d 20 22   azResult[6] = "
3f30: 43 69 6e 64 79 22 3b 0a 2a 2a 20 20 20 20 20 20  Cindy";.**      
3f40: 20 20 61 7a 52 65 73 75 6c 74 5b 37 5d 20 3d 20    azResult[7] = 
3f50: 22 32 31 22 3b 0a 2a 2a 0a 2a 2a 20 4e 6f 74 69  "21";.**.** Noti
3f60: 63 65 20 74 68 61 74 20 74 68 65 72 65 20 69 73  ce that there is
3f70: 20 61 6e 20 65 78 74 72 61 20 72 6f 77 20 6f 66   an extra row of
3f80: 20 64 61 74 61 20 63 6f 6e 74 61 69 6e 69 6e 67   data containing
3f90: 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 68   the column.** h
3fa0: 65 61 64 65 72 73 2e 20 20 42 75 74 20 74 68 65  eaders.  But the
3fb0: 20 2a 6e 72 6f 77 20 72 65 74 75 72 6e 20 76 61   *nrow return va
3fc0: 6c 75 65 20 69 73 20 73 74 69 6c 6c 20 33 2e 20  lue is still 3. 
3fd0: 20 2a 6e 63 6f 6c 75 6d 6e 20 69 73 0a 2a 2a 20   *ncolumn is.** 
3fe0: 73 65 74 20 74 6f 20 32 2e 20 20 49 6e 20 67 65  set to 2.  In ge
3ff0: 6e 65 72 61 6c 2c 20 74 68 65 20 6e 75 6d 62 65  neral, the numbe
4000: 72 20 6f 66 20 76 61 6c 75 65 73 20 69 6e 73 65  r of values inse
4010: 72 74 65 64 20 69 6e 74 6f 20 61 7a 52 65 73 75  rted into azResu
4020: 6c 74 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 28 28  lt.** will be ((
4030: 2a 6e 72 6f 77 29 20 2b 20 31 29 2a 28 2a 6e 63  *nrow) + 1)*(*nc
4040: 6f 6c 75 6d 6e 29 2e 0a 2a 2a 0a 2a 2a 20 41 66  olumn)..**.** Af
4050: 74 65 72 20 74 68 65 20 63 61 6c 6c 69 6e 67 20  ter the calling 
4060: 66 75 6e 63 74 69 6f 6e 20 68 61 73 20 66 69 6e  function has fin
4070: 69 73 68 65 64 20 75 73 69 6e 67 20 74 68 65 20  ished using the 
4080: 72 65 73 75 6c 74 2c 20 69 74 20 73 68 6f 75 6c  result, it shoul
4090: 64 20 0a 2a 2a 20 70 61 73 73 20 74 68 65 20 72  d .** pass the r
40a0: 65 73 75 6c 74 20 64 61 74 61 20 70 6f 69 6e 74  esult data point
40b0: 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 66 72  er to sqlite3_fr
40c0: 65 65 5f 74 61 62 6c 65 28 29 20 69 6e 20 6f 72  ee_table() in or
40d0: 64 65 72 20 74 6f 20 0a 2a 2a 20 72 65 6c 65 61  der to .** relea
40e0: 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 74 68  se the memory th
40f0: 61 74 20 77 61 73 20 6d 61 6c 6c 6f 63 2d 65 64  at was malloc-ed
4100: 2e 20 20 42 65 63 61 75 73 65 20 6f 66 20 74 68  .  Because of th
4110: 65 20 77 61 79 20 74 68 65 20 0a 2a 2a 20 6d 61  e way the .** ma
4120: 6c 6c 6f 63 28 29 20 68 61 70 70 65 6e 73 2c 20  lloc() happens, 
4130: 74 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63  the calling func
4140: 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 74 72  tion must not tr
4150: 79 20 74 6f 20 63 61 6c 6c 20 0a 2a 2a 20 66 72  y to call .** fr
4160: 65 65 28 29 20 64 69 72 65 63 74 6c 79 2e 20 20  ee() directly.  
4170: 4f 6e 6c 79 20 73 71 6c 69 74 65 33 5f 66 72 65  Only sqlite3_fre
4180: 65 5f 74 61 62 6c 65 28 29 20 69 73 20 61 62 6c  e_table() is abl
4190: 65 20 74 6f 20 72 65 6c 65 61 73 65 20 0a 2a 2a  e to release .**
41a0: 20 74 68 65 20 6d 65 6d 6f 72 79 20 70 72 6f 70   the memory prop
41b0: 65 72 6c 79 20 61 6e 64 20 73 61 66 65 6c 79 2e  erly and safely.
41c0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 74 75 72  .**.** The retur
41d0: 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20  n value of this 
41e0: 72 6f 75 74 69 6e 65 20 69 73 20 74 68 65 20 73  routine is the s
41f0: 61 6d 65 20 61 73 20 66 72 6f 6d 20 73 71 6c 69  ame as from sqli
4200: 74 65 33 5f 65 78 65 63 28 29 2e 0a 2a 2f 0a 69  te3_exec()..*/.i
4210: 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  nt sqlite3_get_t
4220: 61 62 6c 65 28 0a 20 20 73 71 6c 69 74 65 33 2a  able(.  sqlite3*
4230: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
4240: 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62  /* An open datab
4250: 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ase */.  const c
4260: 68 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20  har *sql,       
4270: 2f 2a 20 53 51 4c 20 74 6f 20 62 65 20 65 78 65  /* SQL to be exe
4280: 63 75 74 65 64 20 2a 2f 0a 20 20 63 68 61 72 20  cuted */.  char 
4290: 2a 2a 2a 72 65 73 75 6c 74 70 2c 20 20 20 20 20  ***resultp,     
42a0: 20 20 2f 2a 20 52 65 73 75 6c 74 20 77 72 69 74    /* Result writ
42b0: 74 65 6e 20 74 6f 20 61 20 63 68 61 72 20 2a 5b  ten to a char *[
42c0: 5d 20 20 74 68 61 74 20 74 68 69 73 20 70 6f 69  ]  that this poi
42d0: 6e 74 73 20 74 6f 20 2a 2f 0a 20 20 69 6e 74 20  nts to */.  int 
42e0: 2a 6e 72 6f 77 2c 20 20 20 20 20 20 20 20 20 20  *nrow,          
42f0: 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20     /* Number of 
4300: 72 65 73 75 6c 74 20 72 6f 77 73 20 77 72 69 74  result rows writ
4310: 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20 69 6e  ten here */.  in
4320: 74 20 2a 6e 63 6f 6c 75 6d 6e 2c 20 20 20 20 20  t *ncolumn,     
4330: 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f       /* Number o
4340: 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  f result columns
4350: 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f   written here */
4360: 0a 20 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67  .  char **errmsg
4370: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45 72 72            /* Err
4380: 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e 20 68  or msg written h
4390: 65 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a  ere */.);../*.**
43a0: 20 43 61 6c 6c 20 74 68 69 73 20 72 6f 75 74 69   Call this routi
43b0: 6e 65 20 74 6f 20 66 72 65 65 20 74 68 65 20 6d  ne to free the m
43c0: 65 6d 6f 72 79 20 74 68 61 74 20 73 71 6c 69 74  emory that sqlit
43d0: 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20 61  e3_get_table() a
43e0: 6c 6c 6f 63 61 74 65 64 2e 0a 2a 2f 0a 76 6f 69  llocated..*/.voi
43f0: 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74  d sqlite3_free_t
4400: 61 62 6c 65 28 63 68 61 72 20 2a 2a 72 65 73 75  able(char **resu
4410: 6c 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  lt);../*.** The 
4420: 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69 6e  following routin
4430: 65 73 20 61 72 65 20 76 61 72 69 61 6e 74 73 20  es are variants 
4440: 6f 66 20 74 68 65 20 22 73 70 72 69 6e 74 66 28  of the "sprintf(
4450: 29 22 20 66 72 6f 6d 20 74 68 65 0a 2a 2a 20 73  )" from the.** s
4460: 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72  tandard C librar
4470: 79 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69 6e  y.  The resultin
4480: 67 20 73 74 72 69 6e 67 20 69 73 20 77 72 69 74  g string is writ
4490: 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 0a  ten into memory.
44a0: 2a 2a 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ** obtained from
44b0: 20 6d 61 6c 6c 6f 63 28 29 20 73 6f 20 74 68 61   malloc() so tha
44c0: 74 20 74 68 65 72 65 20 69 73 20 6e 65 76 65 72  t there is never
44d0: 20 61 20 70 6f 73 73 69 62 6c 69 74 79 20 6f 66   a possiblity of
44e0: 20 62 75 66 66 65 72 0a 2a 2a 20 6f 76 65 72 66   buffer.** overf
44f0: 6c 6f 77 2e 20 20 54 68 65 73 65 20 72 6f 75 74  low.  These rout
4500: 69 6e 65 73 20 61 6c 73 6f 20 69 6d 70 6c 65 6d  ines also implem
4510: 65 6e 74 20 73 6f 6d 65 20 61 64 64 69 74 69 6f  ent some additio
4520: 6e 61 6c 20 66 6f 72 6d 61 74 74 69 6e 67 0a 2a  nal formatting.*
4530: 2a 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 61  * options that a
4540: 72 65 20 75 73 65 66 75 6c 20 66 6f 72 20 63 6f  re useful for co
4550: 6e 73 74 72 75 63 74 69 6e 67 20 53 51 4c 20 73  nstructing SQL s
4560: 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a  tatements..**.**
4570: 20 54 68 65 20 73 74 72 69 6e 67 73 20 72 65 74   The strings ret
4580: 75 72 6e 65 64 20 62 79 20 74 68 65 73 65 20 72  urned by these r
4590: 6f 75 74 69 6e 65 73 20 73 68 6f 75 6c 64 20 62  outines should b
45a0: 65 20 66 72 65 65 64 20 62 79 20 63 61 6c 6c 69  e freed by calli
45b0: 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 66 72  ng.** sqlite3_fr
45c0: 65 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20  ee()..**.** All 
45d0: 6f 66 20 74 68 65 20 75 73 75 61 6c 20 70 72 69  of the usual pri
45e0: 6e 74 66 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f  ntf formatting o
45f0: 70 74 69 6f 6e 73 20 61 70 70 6c 79 2e 20 20 49  ptions apply.  I
4600: 6e 20 61 64 64 69 74 69 6f 6e 2c 20 74 68 65 72  n addition, ther
4610: 65 0a 2a 2a 20 69 73 20 61 20 22 25 71 22 20 6f  e.** is a "%q" o
4620: 70 74 69 6f 6e 2e 20 20 25 71 20 77 6f 72 6b 73  ption.  %q works
4630: 20 6c 69 6b 65 20 25 73 20 69 6e 20 74 68 61 74   like %s in that
4640: 20 69 74 20 73 75 62 73 74 69 74 75 74 65 73 20   it substitutes 
4650: 61 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65  a null-terminate
4660: 64 0a 2a 2a 20 73 74 72 69 6e 67 20 66 72 6f 6d  d.** string from
4670: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69   the argument li
4680: 73 74 2e 20 20 42 75 74 20 25 71 20 61 6c 73 6f  st.  But %q also
4690: 20 64 6f 75 62 6c 65 73 20 65 76 65 72 79 20 27   doubles every '
46a0: 5c 27 27 20 63 68 61 72 61 63 74 65 72 2e 0a 2a  \'' character..*
46b0: 2a 20 25 71 20 69 73 20 64 65 73 69 67 6e 65 64  * %q is designed
46c0: 20 66 6f 72 20 75 73 65 20 69 6e 73 69 64 65 20   for use inside 
46d0: 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c  a string literal
46e0: 2e 20 20 42 79 20 64 6f 75 62 6c 69 6e 67 20 65  .  By doubling e
46f0: 61 63 68 20 27 5c 27 27 0a 2a 2a 20 63 68 61 72  ach '\''.** char
4700: 61 63 74 65 72 20 69 74 20 65 73 63 61 70 65 73  acter it escapes
4710: 20 74 68 61 74 20 63 68 61 72 61 63 74 65 72 20   that character 
4720: 61 6e 64 20 61 6c 6c 6f 77 73 20 69 74 20 74 6f  and allows it to
4730: 20 62 65 20 69 6e 73 65 72 74 65 64 20 69 6e 74   be inserted int
4740: 6f 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 2e  o.** the string.
4750: 0a 2a 2a 0a 2a 2a 20 46 6f 72 20 65 78 61 6d 70  .**.** For examp
4760: 6c 65 2c 20 73 6f 20 73 6f 6d 65 20 73 74 72 69  le, so some stri
4770: 6e 67 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74  ng variable cont
4780: 61 69 6e 73 20 74 65 78 74 20 61 73 20 66 6f 6c  ains text as fol
4790: 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20  lows:.**.**     
47a0: 20 63 68 61 72 20 2a 7a 54 65 78 74 20 3d 20 22   char *zText = "
47b0: 49 74 27 73 20 61 20 68 61 70 70 79 20 64 61 79  It's a happy day
47c0: 21 22 3b 0a 2a 2a 0a 2a 2a 20 57 65 20 63 61 6e  !";.**.** We can
47d0: 20 75 73 65 20 74 68 69 73 20 74 65 78 74 20 69   use this text i
47e0: 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  n an SQL stateme
47f0: 6e 74 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a  nt as follows:.*
4800: 2a 0a 2a 2a 20 20 20 20 20 20 63 68 61 72 20 2a  *.**      char *
4810: 7a 20 3d 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  z = sqlite3_mpri
4820: 6e 74 66 28 22 49 4e 53 45 52 54 20 49 4e 54 4f  ntf("INSERT INTO
4830: 20 54 41 42 4c 45 53 28 27 25 71 27 29 22 2c 20   TABLES('%q')", 
4840: 7a 54 65 78 74 29 3b 0a 2a 2a 20 20 20 20 20 20  zText);.**      
4850: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 64 62 2c  sqlite3_exec(db,
4860: 20 7a 2c 20 63 61 6c 6c 62 61 63 6b 31 2c 20 30   z, callback1, 0
4870: 2c 20 30 29 3b 0a 2a 2a 20 20 20 20 20 20 73 71  , 0);.**      sq
4880: 6c 69 74 65 33 5f 66 72 65 65 28 7a 29 3b 0a 2a  lite3_free(z);.*
4890: 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65  *.** Because the
48a0: 20 25 71 20 66 6f 72 6d 61 74 20 73 74 72 69 6e   %q format strin
48b0: 67 20 69 73 20 75 73 65 64 2c 20 74 68 65 20 27  g is used, the '
48c0: 5c 27 27 20 63 68 61 72 61 63 74 65 72 20 69 6e  \'' character in
48d0: 20 7a 54 65 78 74 0a 2a 2a 20 69 73 20 65 73 63   zText.** is esc
48e0: 61 70 65 64 20 61 6e 64 20 74 68 65 20 53 51 4c  aped and the SQL
48f0: 20 67 65 6e 65 72 61 74 65 64 20 69 73 20 61 73   generated is as
4900: 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20   follows:.**.** 
4910: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
4920: 20 74 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27   table1 VALUES('
4930: 49 74 27 27 73 20 61 20 68 61 70 70 79 20 64 61  It''s a happy da
4940: 79 21 27 29 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  y!').**.** This 
4950: 69 73 20 63 6f 72 72 65 63 74 2e 20 20 48 61 64  is correct.  Had
4960: 20 77 65 20 75 73 65 64 20 25 73 20 69 6e 73 74   we used %s inst
4970: 65 61 64 20 6f 66 20 25 71 2c 20 74 68 65 20 67  ead of %q, the g
4980: 65 6e 65 72 61 74 65 64 20 53 51 4c 0a 2a 2a 20  enerated SQL.** 
4990: 77 6f 75 6c 64 20 68 61 76 65 20 6c 6f 6f 6b 65  would have looke
49a0: 64 20 6c 69 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a  d like this:.**.
49b0: 2a 2a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  **      INSERT I
49c0: 4e 54 4f 20 74 61 62 6c 65 31 20 56 41 4c 55 45  NTO table1 VALUE
49d0: 53 28 27 49 74 27 73 20 61 20 68 61 70 70 79 20  S('It's a happy 
49e0: 64 61 79 21 27 29 3b 0a 2a 2a 0a 2a 2a 20 54 68  day!');.**.** Th
49f0: 69 73 20 73 65 63 6f 6e 64 20 65 78 61 6d 70 6c  is second exampl
4a00: 65 20 69 73 20 61 6e 20 53 51 4c 20 73 79 6e 74  e is an SQL synt
4a10: 61 78 20 65 72 72 6f 72 2e 20 20 41 73 20 61 20  ax error.  As a 
4a20: 67 65 6e 65 72 61 6c 20 72 75 6c 65 20 79 6f 75  general rule you
4a30: 0a 2a 2a 20 73 68 6f 75 6c 64 20 61 6c 77 61 79  .** should alway
4a40: 73 20 75 73 65 20 25 71 20 69 6e 73 74 65 61 64  s use %q instead
4a50: 20 6f 66 20 25 73 20 77 68 65 6e 20 69 6e 73 65   of %s when inse
4a60: 72 74 69 6e 67 20 74 65 78 74 20 69 6e 74 6f 20  rting text into 
4a70: 61 20 73 74 72 69 6e 67 20 0a 2a 2a 20 6c 69 74  a string .** lit
4a80: 65 72 61 6c 2e 0a 2a 2f 0a 63 68 61 72 20 2a 73  eral..*/.char *s
4a90: 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 63  qlite3_mprintf(c
4aa0: 6f 6e 73 74 20 63 68 61 72 2a 2c 2e 2e 2e 29 3b  onst char*,...);
4ab0: 0a 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 76  .char *sqlite3_v
4ac0: 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20 63 68  mprintf(const ch
4ad0: 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 63  ar*, va_list);.c
4ae0: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 6e 70  har *sqlite3_snp
4af0: 72 69 6e 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c  rintf(int,char*,
4b00: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 2e 2e 2e  const char*, ...
4b10: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 51 4c 69 74 65  );../*.** SQLite
4b20: 20 75 73 65 73 20 69 74 73 20 6f 77 6e 20 6d 65   uses its own me
4b30: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20  mory allocator. 
4b40: 20 4f 6e 20 6d 61 6e 79 20 69 6e 73 74 61 6c 6c   On many install
4b50: 61 74 69 6f 6e 73 2c 20 74 68 69 73 0a 2a 2a 20  ations, this.** 
4b60: 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
4b70: 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74 6f   is identical to
4b80: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6d 61   the standard ma
4b90: 6c 6c 6f 63 28 29 2f 72 65 61 6c 6c 6f 63 28 29  lloc()/realloc()
4ba0: 2f 66 72 65 65 28 29 0a 2a 2a 20 61 6e 64 20 63  /free().** and c
4bb0: 61 6e 20 62 65 20 75 73 65 64 20 69 6e 74 65 72  an be used inter
4bc0: 63 68 61 6e 67 61 62 6c 65 2e 20 20 4f 6e 20 6f  changable.  On o
4bd0: 74 68 65 72 73 2c 20 74 68 65 20 69 6d 70 6c 65  thers, the imple
4be0: 6d 65 6e 74 61 74 69 6f 6e 73 20 61 72 65 0a 2a  mentations are.*
4bf0: 2a 20 64 69 66 66 65 72 65 6e 74 2e 20 20 46 6f  * different.  Fo
4c00: 72 20 6d 61 78 69 6d 75 6d 20 70 6f 72 74 61 62  r maximum portab
4c10: 69 6c 69 74 79 2c 20 69 74 20 69 73 20 62 65 73  ility, it is bes
4c20: 74 20 6e 6f 74 20 74 6f 20 6d 69 78 20 63 61 6c  t not to mix cal
4c30: 6c 73 0a 2a 2a 20 74 6f 20 74 68 65 20 73 74 61  ls.** to the sta
4c40: 6e 64 61 72 64 20 6d 61 6c 6c 6f 63 2f 72 65 61  ndard malloc/rea
4c50: 6c 6c 6f 63 2f 66 72 65 65 20 77 69 74 68 20 74  lloc/free with t
4c60: 68 65 20 73 71 6c 69 74 65 20 76 65 72 73 69 6f  he sqlite versio
4c70: 6e 73 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  ns..*/.void *sql
4c80: 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 29  ite3_malloc(int)
4c90: 3b 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  ;.void *sqlite3_
4ca0: 72 65 61 6c 6c 6f 63 28 76 6f 69 64 2a 2c 20 69  realloc(void*, i
4cb0: 6e 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65  nt);.void sqlite
4cc0: 33 5f 66 72 65 65 28 76 6f 69 64 2a 29 3b 0a 0a  3_free(void*);..
4cd0: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f  #ifndef SQLITE_O
4ce0: 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f  MIT_AUTHORIZATIO
4cf0: 4e 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75  N./*.** This rou
4d00: 74 69 6e 65 20 72 65 67 69 73 74 65 72 73 20 61  tine registers a
4d10: 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 74   callback with t
4d20: 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
4d30: 79 2e 20 20 54 68 65 0a 2a 2a 20 63 61 6c 6c 62  y.  The.** callb
4d40: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 28  ack is invoked (
4d50: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c  at compile-time,
4d60: 20 6e 6f 74 20 61 74 20 72 75 6e 2d 74 69 6d 65   not at run-time
4d70: 29 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 61 74  ) for each.** at
4d80: 74 65 6d 70 74 20 74 6f 20 61 63 63 65 73 73 20  tempt to access 
4d90: 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 61 20 74 61  a column of a ta
4da0: 62 6c 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ble in the datab
4db0: 61 73 65 2e 20 20 54 68 65 20 63 61 6c 6c 62 61  ase.  The callba
4dc0: 63 6b 0a 2a 2a 20 72 65 74 75 72 6e 73 20 53 51  ck.** returns SQ
4dd0: 4c 49 54 45 5f 4f 4b 20 69 66 20 61 63 63 65 73  LITE_OK if acces
4de0: 73 20 69 73 20 61 6c 6c 6f 77 65 64 2c 20 53 51  s is allowed, SQ
4df0: 4c 49 54 45 5f 44 45 4e 59 20 69 66 20 74 68 65  LITE_DENY if the
4e00: 20 65 6e 74 69 72 65 0a 2a 2a 20 53 51 4c 20 73   entire.** SQL s
4e10: 74 61 74 65 6d 65 6e 74 20 73 68 6f 75 6c 64 20  tatement should 
4e20: 62 65 20 61 62 6f 72 74 65 64 20 77 69 74 68 20  be aborted with 
4e30: 61 6e 20 65 72 72 6f 72 20 61 6e 64 20 53 51 4c  an error and SQL
4e40: 49 54 45 5f 49 47 4e 4f 52 45 0a 2a 2a 20 69 66  ITE_IGNORE.** if
4e50: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 73 68 6f 75   the column shou
4e60: 6c 64 20 62 65 20 74 72 65 61 74 65 64 20 61 73  ld be treated as
4e70: 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 2e 0a 2a   a NULL value..*
4e80: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 65  /.int sqlite3_se
4e90: 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 0a 20 20  t_authorizer(.  
4ea0: 73 71 6c 69 74 65 33 2a 2c 0a 20 20 69 6e 74 20  sqlite3*,.  int 
4eb0: 28 2a 78 41 75 74 68 29 28 76 6f 69 64 2a 2c 69  (*xAuth)(void*,i
4ec0: 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63  nt,const char*,c
4ed0: 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74  onst char*,const
4ee0: 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61   char*,const cha
4ef0: 72 2a 29 2c 0a 20 20 76 6f 69 64 20 2a 70 55 73  r*),.  void *pUs
4f00: 65 72 44 61 74 61 0a 29 3b 0a 23 65 6e 64 69 66  erData.);.#endif
4f10: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f  ../*.** The seco
4f20: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  nd parameter to 
4f30: 74 68 65 20 61 63 63 65 73 73 20 61 75 74 68 6f  the access autho
4f40: 72 69 7a 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  rization functio
4f50: 6e 20 61 62 6f 76 65 20 77 69 6c 6c 0a 2a 2a 20  n above will.** 
4f60: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 61  be one of the va
4f70: 6c 75 65 73 20 62 65 6c 6f 77 2e 20 20 54 68 65  lues below.  The
4f80: 73 65 20 76 61 6c 75 65 73 20 73 69 67 6e 69 66  se values signif
4f90: 79 20 77 68 61 74 20 6b 69 6e 64 20 6f 66 20 6f  y what kind of o
4fa0: 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 69 73 20 74  peration.** is t
4fb0: 6f 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e  o be authorized.
4fc0: 20 20 54 68 65 20 33 72 64 20 61 6e 64 20 34 74    The 3rd and 4t
4fd0: 68 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20  h parameters to 
4fe0: 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f  the authorizatio
4ff0: 6e 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77 69  n.** function wi
5000: 6c 6c 20 62 65 20 70 61 72 61 6d 65 74 65 72 73  ll be parameters
5010: 20 6f 72 20 4e 55 4c 4c 20 64 65 70 65 6e 64 69   or NULL dependi
5020: 6e 67 20 6f 6e 20 77 68 69 63 68 20 6f 66 20 74  ng on which of t
5030: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 2a 2a 20  he following.** 
5040: 63 6f 64 65 73 20 69 73 20 75 73 65 64 20 61 73  codes is used as
5050: 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   the second para
5060: 6d 65 74 65 72 2e 20 20 54 68 65 20 35 74 68 20  meter.  The 5th 
5070: 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65  parameter is the
5080: 20 6e 61 6d 65 0a 2a 2a 20 6f 66 20 74 68 65 20   name.** of the 
5090: 64 61 74 61 62 61 73 65 20 28 22 6d 61 69 6e 22  database ("main"
50a0: 2c 20 22 74 65 6d 70 22 2c 20 65 74 63 2e 29 20  , "temp", etc.) 
50b0: 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 20 20  if applicable.  
50c0: 54 68 65 20 36 74 68 20 70 61 72 61 6d 65 74 65  The 6th paramete
50d0: 72 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65  r.** is the name
50e0: 20 6f 66 20 74 68 65 20 69 6e 6e 65 72 2d 6d 6f   of the inner-mo
50f0: 73 74 20 74 72 69 67 67 65 72 20 6f 72 20 76 69  st trigger or vi
5100: 65 77 20 74 68 61 74 20 69 73 20 72 65 73 70 6f  ew that is respo
5110: 6e 73 69 62 6c 65 20 66 6f 72 0a 2a 2a 20 74 68  nsible for.** th
5120: 65 20 61 63 63 65 73 73 20 61 74 74 65 6d 70 74  e access attempt
5130: 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 69 73   or NULL if this
5140: 20 61 63 63 65 73 73 20 61 74 74 65 6d 70 74 20   access attempt 
5150: 69 73 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d  is directly from
5160: 20 0a 2a 2a 20 69 6e 70 75 74 20 53 51 4c 20 63   .** input SQL c
5170: 6f 64 65 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20  ode..**.**      
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 20 20 20 20 20 20                  
51a0: 20 20 20 20 41 72 67 2d 33 20 20 20 20 20 20 20      Arg-3       
51b0: 20 20 20 20 41 72 67 2d 34 0a 2a 2f 0a 23 64 65      Arg-4.*/.#de
51c0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 50 59  fine SQLITE_COPY
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51e0: 20 20 30 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e    0   /* Table N
51f0: 61 6d 65 20 20 20 20 20 20 46 69 6c 65 20 4e 61  ame      File Na
5200: 6d 65 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  me       */.#def
5210: 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
5220: 45 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20  E_INDEX         
5230: 20 31 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61   1   /* Index Na
5240: 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61  me      Table Na
5250: 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
5260: 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
5270: 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20  _TABLE          
5280: 32 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  2   /* Table Nam
5290: 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
52a0: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
52b0: 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
52c0: 54 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 33  TEMP_INDEX     3
52d0: 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65     /* Index Name
52e0: 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65        Table Name
52f0: 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
5300: 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
5310: 45 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 34 20  EMP_TABLE     4 
5320: 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
5330: 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
5340: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
5350: 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45  SQLITE_CREATE_TE
5360: 4d 50 5f 54 52 49 47 47 45 52 20 20 20 35 20 20  MP_TRIGGER   5  
5370: 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65   /* Trigger Name
5380: 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20      Table Name  
5390: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
53a0: 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d  QLITE_CREATE_TEM
53b0: 50 5f 56 49 45 57 20 20 20 20 20 20 36 20 20 20  P_VIEW      6   
53c0: 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20  /* View Name    
53d0: 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
53e0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
53f0: 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 52 49 47  LITE_CREATE_TRIG
5400: 47 45 52 20 20 20 20 20 20 20 20 37 20 20 20 2f  GER        7   /
5410: 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20  * Trigger Name  
5420: 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
5430: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
5440: 49 54 45 5f 43 52 45 41 54 45 5f 56 49 45 57 20  ITE_CREATE_VIEW 
5450: 20 20 20 20 20 20 20 20 20 20 38 20 20 20 2f 2a            8   /*
5460: 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20   View Name      
5470: 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
5480: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
5490: 54 45 5f 44 45 4c 45 54 45 20 20 20 20 20 20 20  TE_DELETE       
54a0: 20 20 20 20 20 20 20 20 20 39 20 20 20 2f 2a 20           9   /* 
54b0: 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
54c0: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
54d0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
54e0: 45 5f 44 52 4f 50 5f 49 4e 44 45 58 20 20 20 20  E_DROP_INDEX    
54f0: 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 49         10   /* I
5500: 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54  ndex Name      T
5510: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
5520: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
5530: 5f 44 52 4f 50 5f 54 41 42 4c 45 20 20 20 20 20  _DROP_TABLE     
5540: 20 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 61        11   /* Ta
5550: 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  ble Name      NU
5560: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
5570: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5580: 44 52 4f 50 5f 54 45 4d 50 5f 49 4e 44 45 58 20  DROP_TEMP_INDEX 
5590: 20 20 20 20 20 31 32 20 20 20 2f 2a 20 49 6e 64       12   /* Ind
55a0: 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62  ex Name      Tab
55b0: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a  le Name      */.
55c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
55d0: 52 4f 50 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20  ROP_TEMP_TABLE  
55e0: 20 20 20 20 31 33 20 20 20 2f 2a 20 54 61 62 6c      13   /* Tabl
55f0: 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
5600: 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
5610: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
5620: 4f 50 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20  OP_TEMP_TRIGGER 
5630: 20 20 20 31 34 20 20 20 2f 2a 20 54 72 69 67 67     14   /* Trigg
5640: 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65  er Name    Table
5650: 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
5660: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
5670: 50 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20  P_TEMP_VIEW     
5680: 20 20 31 35 20 20 20 2f 2a 20 56 69 65 77 20 4e    15   /* View N
5690: 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  ame       NULL  
56a0: 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
56b0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
56c0: 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20  _TRIGGER        
56d0: 20 31 36 20 20 20 2f 2a 20 54 72 69 67 67 65 72   16   /* Trigger
56e0: 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e   Name    Table N
56f0: 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
5700: 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
5710: 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20 20  VIEW            
5720: 31 37 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d  17   /* View Nam
5730: 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  e       NULL    
5740: 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
5750: 6e 65 20 53 51 4c 49 54 45 5f 49 4e 53 45 52 54  ne SQLITE_INSERT
5760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31                 1
5770: 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  8   /* Table Nam
5780: 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
5790: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
57a0: 65 20 53 51 4c 49 54 45 5f 50 52 41 47 4d 41 20  e SQLITE_PRAGMA 
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 39                19
57c0: 20 20 20 2f 2a 20 50 72 61 67 6d 61 20 4e 61 6d     /* Pragma Nam
57d0: 65 20 20 20 20 20 31 73 74 20 61 72 67 20 6f 72  e     1st arg or
57e0: 20 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66 69 6e 65   NULL */.#define
57f0: 20 53 51 4c 49 54 45 5f 52 45 41 44 20 20 20 20   SQLITE_READ    
5800: 20 20 20 20 20 20 20 20 20 20 20 20 20 32 30 20               20 
5810: 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
5820: 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65       Column Name
5830: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
5840: 53 51 4c 49 54 45 5f 53 45 4c 45 43 54 20 20 20  SQLITE_SELECT   
5850: 20 20 20 20 20 20 20 20 20 20 20 20 32 31 20 20              21  
5860: 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20   /* NULL        
5870: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
5880: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
5890: 51 4c 49 54 45 5f 54 52 41 4e 53 41 43 54 49 4f  QLITE_TRANSACTIO
58a0: 4e 20 20 20 20 20 20 20 20 20 20 32 32 20 20 20  N          22   
58b0: 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20  /* NULL         
58c0: 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
58d0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
58e0: 4c 49 54 45 5f 55 50 44 41 54 45 20 20 20 20 20  LITE_UPDATE     
58f0: 20 20 20 20 20 20 20 20 20 20 32 33 20 20 20 2f            23   /
5900: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
5910: 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20    Column Name   
5920: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
5930: 49 54 45 5f 41 54 54 41 43 48 20 20 20 20 20 20  ITE_ATTACH      
5940: 20 20 20 20 20 20 20 20 20 32 34 20 20 20 2f 2a           24   /*
5950: 20 46 69 6c 65 6e 61 6d 65 20 20 20 20 20 20 20   Filename       
5960: 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
5970: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
5980: 54 45 5f 44 45 54 41 43 48 20 20 20 20 20 20 20  TE_DETACH       
5990: 20 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20          25   /* 
59a0: 44 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20  Database Name   
59b0: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
59c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
59d0: 45 5f 41 4c 54 45 52 5f 54 41 42 4c 45 20 20 20  E_ALTER_TABLE   
59e0: 20 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20 44         26   /* D
59f0: 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 54  atabase Name   T
5a00: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
5a10: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
5a20: 5f 52 45 49 4e 44 45 58 20 20 20 20 20 20 20 20  _REINDEX        
5a30: 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 49 6e        27   /* In
5a40: 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  dex Name      NU
5a50: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
5a60: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5a70: 41 4e 41 4c 59 5a 45 20 20 20 20 20 20 20 20 20  ANALYZE         
5a80: 20 20 20 20 20 32 38 20 20 20 2f 2a 20 54 61 62       28   /* Tab
5a90: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
5aa0: 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
5ab0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
5ac0: 52 45 41 54 45 5f 56 54 41 42 4c 45 20 20 20 20  REATE_VTABLE    
5ad0: 20 20 20 20 32 39 20 20 20 2f 2a 20 54 61 62 6c      29   /* Tabl
5ae0: 65 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75  e Name      Modu
5af0: 6c 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23  le Name     */.#
5b00: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
5b10: 4f 50 5f 56 54 41 42 4c 45 20 20 20 20 20 20 20  OP_VTABLE       
5b20: 20 20 20 33 30 20 20 20 2f 2a 20 54 61 62 6c 65     30   /* Table
5b30: 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c   Name      Modul
5b40: 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64  e Name     */.#d
5b50: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4e  efine SQLITE_FUN
5b60: 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20 20  CTION           
5b70: 20 20 33 31 20 20 20 2f 2a 20 46 75 6e 63 74 69    31   /* Functi
5b80: 6f 6e 20 4e 61 6d 65 20 20 20 4e 55 4c 4c 20 20  on Name   NULL  
5b90: 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 0a 2f 2a            */../*
5ba0: 0a 2a 2a 20 54 68 65 20 72 65 74 75 72 6e 20 76  .** The return v
5bb0: 61 6c 75 65 20 6f 66 20 74 68 65 20 61 75 74 68  alue of the auth
5bc0: 6f 72 69 7a 61 74 69 6f 6e 20 66 75 6e 63 74 69  orization functi
5bd0: 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 6f 6e 65  on should be one
5be0: 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f 6c 6c 6f   of the.** follo
5bf0: 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 3a 0a  wing constants:.
5c00: 2a 2f 0a 2f 2a 20 23 64 65 66 69 6e 65 20 53 51  */./* #define SQ
5c10: 4c 49 54 45 5f 4f 4b 20 20 30 20 20 20 2f 2f 20  LITE_OK  0   // 
5c20: 41 6c 6c 6f 77 20 61 63 63 65 73 73 20 28 54 68  Allow access (Th
5c30: 69 73 20 69 73 20 61 63 74 75 61 6c 6c 79 20 64  is is actually d
5c40: 65 66 69 6e 65 64 20 61 62 6f 76 65 29 20 2a 2f  efined above) */
5c50: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5c60: 44 45 4e 59 20 20 20 31 20 20 20 2f 2a 20 41 62  DENY   1   /* Ab
5c70: 6f 72 74 20 74 68 65 20 53 51 4c 20 73 74 61 74  ort the SQL stat
5c80: 65 6d 65 6e 74 20 77 69 74 68 20 61 6e 20 65 72  ement with an er
5c90: 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ror */.#define S
5ca0: 51 4c 49 54 45 5f 49 47 4e 4f 52 45 20 32 20 20  QLITE_IGNORE 2  
5cb0: 20 2f 2a 20 44 6f 6e 27 74 20 61 6c 6c 6f 77 20   /* Don't allow 
5cc0: 61 63 63 65 73 73 2c 20 62 75 74 20 64 6f 6e 27  access, but don'
5cd0: 74 20 67 65 6e 65 72 61 74 65 20 61 6e 20 65 72  t generate an er
5ce0: 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 52 65  ror */../*.** Re
5cf0: 67 69 73 74 65 72 20 61 20 66 75 6e 63 74 69 6f  gister a functio
5d00: 6e 20 66 6f 72 20 74 72 61 63 69 6e 67 20 53 51  n for tracing SQ
5d10: 4c 20 63 6f 6d 6d 61 6e 64 20 65 76 61 6c 75 61  L command evalua
5d20: 74 69 6f 6e 2e 20 20 54 68 65 20 66 75 6e 63 74  tion.  The funct
5d30: 69 6f 6e 0a 2a 2a 20 72 65 67 69 73 74 65 72 65  ion.** registere
5d40: 64 20 62 79 20 73 71 6c 69 74 65 33 5f 74 72 61  d by sqlite3_tra
5d50: 63 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 20  ce() is invoked 
5d60: 61 74 20 74 68 65 20 66 69 72 73 74 20 73 71 6c  at the first sql
5d70: 69 74 65 33 5f 73 74 65 70 28 29 0a 2a 2a 20 66  ite3_step().** f
5d80: 6f 72 20 74 68 65 20 65 76 61 6c 75 61 74 69 6f  or the evaluatio
5d90: 6e 20 6f 66 20 61 6e 20 53 51 4c 20 73 74 61 74  n of an SQL stat
5da0: 65 6d 65 6e 74 2e 20 20 54 68 65 20 66 75 6e 63  ement.  The func
5db0: 74 69 6f 6e 20 72 65 67 69 73 74 65 72 65 64 20  tion registered 
5dc0: 62 79 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72  by.** sqlite3_pr
5dd0: 6f 66 69 6c 65 28 29 20 72 75 6e 73 20 61 74 20  ofile() runs at 
5de0: 74 68 65 20 65 6e 64 20 6f 66 20 65 61 63 68 20  the end of each 
5df0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  SQL statement an
5e00: 64 20 69 6e 63 6c 75 64 65 73 0a 2a 2a 20 69 6e  d includes.** in
5e10: 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 68 6f 77  formation on how
5e20: 20 6c 6f 6e 67 20 74 68 61 74 20 73 74 61 74 65   long that state
5e30: 6d 65 6e 74 20 72 61 6e 2e 0a 2a 2a 0a 2a 2a 20  ment ran..**.** 
5e40: 54 68 65 20 73 71 6c 69 74 65 33 5f 70 72 6f 66  The sqlite3_prof
5e50: 69 6c 65 28 29 20 41 50 49 20 69 73 20 63 75 72  ile() API is cur
5e60: 72 65 6e 74 6c 79 20 63 6f 6e 73 69 64 65 72 65  rently considere
5e70: 64 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61  d experimental a
5e80: 6e 64 0a 2a 2a 20 69 73 20 73 75 62 6a 65 63 74  nd.** is subject
5e90: 20 74 6f 20 63 68 61 6e 67 65 2e 0a 2a 2f 0a 76   to change..*/.v
5ea0: 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 74 72 61  oid *sqlite3_tra
5eb0: 63 65 28 73 71 6c 69 74 65 33 2a 2c 20 76 6f 69  ce(sqlite3*, voi
5ec0: 64 28 2a 78 54 72 61 63 65 29 28 76 6f 69 64 2a  d(*xTrace)(void*
5ed0: 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 20 76  ,const char*), v
5ee0: 6f 69 64 2a 29 3b 0a 76 6f 69 64 20 2a 73 71 6c  oid*);.void *sql
5ef0: 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 73 71 6c  ite3_profile(sql
5f00: 69 74 65 33 2a 2c 0a 20 20 20 76 6f 69 64 28 2a  ite3*,.   void(*
5f10: 78 50 72 6f 66 69 6c 65 29 28 76 6f 69 64 2a 2c  xProfile)(void*,
5f20: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 73 71 6c 69  const char*,sqli
5f30: 74 65 5f 75 69 6e 74 36 34 29 2c 20 76 6f 69 64  te_uint64), void
5f40: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20  *);../*.** This 
5f50: 72 6f 75 74 69 6e 65 20 63 6f 6e 66 69 67 75 72  routine configur
5f60: 65 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75  es a callback fu
5f70: 6e 63 74 69 6f 6e 20 2d 20 74 68 65 20 70 72 6f  nction - the pro
5f80: 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 2d  gress callback -
5f90: 20 74 68 61 74 0a 2a 2a 20 69 73 20 69 6e 76 6f   that.** is invo
5fa0: 6b 65 64 20 70 65 72 69 6f 64 69 63 61 6c 6c 79  ked periodically
5fb0: 20 64 75 72 69 6e 67 20 6c 6f 6e 67 20 72 75 6e   during long run
5fc0: 6e 69 6e 67 20 63 61 6c 6c 73 20 74 6f 20 73 71  ning calls to sq
5fd0: 6c 69 74 65 33 5f 65 78 65 63 28 29 2c 0a 2a 2a  lite3_exec(),.**
5fe0: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
5ff0: 61 6e 64 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  and sqlite3_get_
6000: 74 61 62 6c 65 28 29 2e 20 41 6e 20 65 78 61 6d  table(). An exam
6010: 70 6c 65 20 75 73 65 20 66 6f 72 20 74 68 69 73  ple use for this
6020: 20 41 50 49 20 69 73 20 74 6f 20 0a 2a 2a 20 6b   API is to .** k
6030: 65 65 70 20 61 20 47 55 49 20 75 70 64 61 74 65  eep a GUI update
6040: 64 20 64 75 72 69 6e 67 20 61 20 6c 61 72 67 65  d during a large
6050: 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a 2a 20 54 68   query..**.** Th
6060: 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62  e progress callb
6070: 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f  ack is invoked o
6080: 6e 63 65 20 66 6f 72 20 65 76 65 72 79 20 4e 20  nce for every N 
6090: 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20  virtual machine 
60a0: 6f 70 63 6f 64 65 73 2c 0a 2a 2a 20 77 68 65 72  opcodes,.** wher
60b0: 65 20 4e 20 69 73 20 74 68 65 20 73 65 63 6f 6e  e N is the secon
60c0: 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  d argument to th
60d0: 69 73 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65  is function. The
60e0: 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61   progress callba
60f0: 63 6b 0a 2a 2a 20 69 74 73 65 6c 66 20 69 73 20  ck.** itself is 
6100: 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68  identified by th
6110: 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74  e third argument
6120: 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f   to this functio
6130: 6e 2e 20 54 68 65 20 66 6f 75 72 74 68 0a 2a 2a  n. The fourth.**
6140: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69   argument to thi
6150: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20  s function is a 
6160: 76 6f 69 64 20 70 6f 69 6e 74 65 72 20 70 61 73  void pointer pas
6170: 73 65 64 20 74 6f 20 74 68 65 20 70 72 6f 67 72  sed to the progr
6180: 65 73 73 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  ess callback.** 
6190: 66 75 6e 63 74 69 6f 6e 20 65 61 63 68 20 74 69  function each ti
61a0: 6d 65 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 64  me it is invoked
61b0: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 63 61 6c  ..**.** If a cal
61c0: 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65  l to sqlite3_exe
61d0: 63 28 29 2c 20 73 71 6c 69 74 65 33 5f 73 74 65  c(), sqlite3_ste
61e0: 70 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 67  p() or sqlite3_g
61f0: 65 74 5f 74 61 62 6c 65 28 29 20 72 65 73 75 6c  et_table() resul
6200: 74 73 20 0a 2a 2a 20 69 6e 20 6c 65 73 73 20 74  ts .** in less t
6210: 68 61 6e 20 4e 20 6f 70 63 6f 64 65 73 20 62 65  han N opcodes be
6220: 69 6e 67 20 65 78 65 63 75 74 65 64 2c 20 74 68  ing executed, th
6230: 65 6e 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  en the progress 
6240: 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74 0a  callback is not.
6250: 2a 2a 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 20 0a  ** invoked..** .
6260: 2a 2a 20 54 6f 20 72 65 6d 6f 76 65 20 74 68 65  ** To remove the
6270: 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61   progress callba
6280: 63 6b 20 61 6c 74 6f 67 65 74 68 65 72 2c 20 70  ck altogether, p
6290: 61 73 73 20 4e 55 4c 4c 20 61 73 20 74 68 65 20  ass NULL as the 
62a0: 74 68 69 72 64 0a 2a 2a 20 61 72 67 75 6d 65 6e  third.** argumen
62b0: 74 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69  t to this functi
62c0: 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65  on..**.** If the
62d0: 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61   progress callba
62e0: 63 6b 20 72 65 74 75 72 6e 73 20 61 20 72 65 73  ck returns a res
62f0: 75 6c 74 20 6f 74 68 65 72 20 74 68 61 6e 20 30  ult other than 0
6300: 2c 20 74 68 65 6e 20 74 68 65 20 63 75 72 72 65  , then the curre
6310: 6e 74 20 0a 2a 2a 20 71 75 65 72 79 20 69 73 20  nt .** query is 
6320: 69 6d 6d 65 64 69 61 74 65 6c 79 20 74 65 72 6d  immediately term
6330: 69 6e 61 74 65 64 20 61 6e 64 20 61 6e 79 20 64  inated and any d
6340: 61 74 61 62 61 73 65 20 63 68 61 6e 67 65 73 20  atabase changes 
6350: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 49 66 20  rolled back. If 
6360: 74 68 65 0a 2a 2a 20 71 75 65 72 79 20 77 61 73  the.** query was
6370: 20 70 61 72 74 20 6f 66 20 61 20 6c 61 72 67 65   part of a large
6380: 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74  r transaction, t
6390: 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74  hen the transact
63a0: 69 6f 6e 20 69 73 20 6e 6f 74 20 72 6f 6c 6c 65  ion is not rolle
63b0: 64 0a 2a 2a 20 62 61 63 6b 20 61 6e 64 20 72 65  d.** back and re
63c0: 6d 61 69 6e 73 20 61 63 74 69 76 65 2e 20 54 68  mains active. Th
63d0: 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  e sqlite3_exec()
63e0: 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 53 51   call returns SQ
63f0: 4c 49 54 45 5f 41 42 4f 52 54 2e 20 0a 2a 2a 0a  LITE_ABORT. .**.
6400: 2a 2a 2a 2a 2a 2a 2a 20 54 48 49 53 20 49 53 20  ******* THIS IS 
6410: 41 4e 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20  AN EXPERIMENTAL 
6420: 41 50 49 20 41 4e 44 20 49 53 20 53 55 42 4a 45  API AND IS SUBJE
6430: 43 54 20 54 4f 20 43 48 41 4e 47 45 20 2a 2a 2a  CT TO CHANGE ***
6440: 2a 2a 2a 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69  ***.*/.void sqli
6450: 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e  te3_progress_han
6460: 64 6c 65 72 28 73 71 6c 69 74 65 33 2a 2c 20 69  dler(sqlite3*, i
6470: 6e 74 2c 20 69 6e 74 28 2a 29 28 76 6f 69 64 2a  nt, int(*)(void*
6480: 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a  ), void*);../*.*
6490: 2a 20 52 65 67 69 73 74 65 72 20 61 20 63 61 6c  * Register a cal
64a0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 74  lback function t
64b0: 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 68 65  o be invoked whe
64c0: 6e 65 76 65 72 20 61 20 6e 65 77 20 74 72 61 6e  never a new tran
64d0: 73 61 63 74 69 6f 6e 0a 2a 2a 20 69 73 20 63 6f  saction.** is co
64e0: 6d 6d 69 74 74 65 64 2e 20 20 54 68 65 20 70 41  mmitted.  The pA
64f0: 72 67 20 61 72 67 75 6d 65 6e 74 20 69 73 20 70  rg argument is p
6500: 61 73 73 65 64 20 74 68 72 6f 75 67 68 20 74 6f  assed through to
6510: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a   the callback..*
6520: 2a 20 63 61 6c 6c 62 61 63 6b 2e 20 20 49 66 20  * callback.  If 
6530: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  the callback fun
6540: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 6e 6f  ction returns no
6550: 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 74 68 65  n-zero, then the
6560: 20 63 6f 6d 6d 69 74 0a 2a 2a 20 69 73 20 63 6f   commit.** is co
6570: 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20 72  nverted into a r
6580: 6f 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 49  ollback..**.** I
6590: 66 20 61 6e 6f 74 68 65 72 20 66 75 6e 63 74 69  f another functi
65a0: 6f 6e 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c  on was previousl
65b0: 79 20 72 65 67 69 73 74 65 72 65 64 2c 20 69 74  y registered, it
65c0: 73 20 70 41 72 67 20 76 61 6c 75 65 20 69 73 20  s pArg value is 
65d0: 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 20 4f 74 68  returned..** Oth
65e0: 65 72 77 69 73 65 20 4e 55 4c 4c 20 69 73 20 72  erwise NULL is r
65f0: 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 52  eturned..**.** R
6600: 65 67 69 73 74 65 72 69 6e 67 20 61 20 4e 55 4c  egistering a NUL
6610: 4c 20 66 75 6e 63 74 69 6f 6e 20 64 69 73 61 62  L function disab
6620: 6c 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  les the callback
6630: 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 20 54 48 49  ..**.******* THI
6640: 53 20 49 53 20 41 4e 20 45 58 50 45 52 49 4d 45  S IS AN EXPERIME
6650: 4e 54 41 4c 20 41 50 49 20 41 4e 44 20 49 53 20  NTAL API AND IS 
6660: 53 55 42 4a 45 43 54 20 54 4f 20 43 48 41 4e 47  SUBJECT TO CHANG
6670: 45 20 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 76 6f 69 64  E ******.*/.void
6680: 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74   *sqlite3_commit
6690: 5f 68 6f 6f 6b 28 73 71 6c 69 74 65 33 2a 2c 20  _hook(sqlite3*, 
66a0: 69 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76  int(*)(void*), v
66b0: 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 4f 70  oid*);../*.** Op
66c0: 65 6e 20 74 68 65 20 73 71 6c 69 74 65 20 64 61  en the sqlite da
66d0: 74 61 62 61 73 65 20 66 69 6c 65 20 22 66 69 6c  tabase file "fil
66e0: 65 6e 61 6d 65 22 2e 20 20 54 68 65 20 22 66 69  ename".  The "fi
66f0: 6c 65 6e 61 6d 65 22 20 69 73 20 55 54 46 2d 38  lename" is UTF-8
6700: 0a 2a 2a 20 65 6e 63 6f 64 65 64 20 66 6f 72 20  .** encoded for 
6710: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61  sqlite3_open() a
6720: 6e 64 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  nd UTF-16 encode
6730: 64 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20  d in the native 
6740: 62 79 74 65 20 6f 72 64 65 72 0a 2a 2a 20 66 6f  byte order.** fo
6750: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  r sqlite3_open16
6760: 28 29 2e 20 20 41 6e 20 73 71 6c 69 74 65 33 2a  ().  An sqlite3*
6770: 20 68 61 6e 64 6c 65 20 69 73 20 72 65 74 75 72   handle is retur
6780: 6e 65 64 20 69 6e 20 2a 70 70 44 62 2c 20 65 76  ned in *ppDb, ev
6790: 65 6e 0a 2a 2a 20 69 66 20 61 6e 20 65 72 72 6f  en.** if an erro
67a0: 72 20 6f 63 63 75 72 73 2e 20 49 66 20 74 68 65  r occurs. If the
67b0: 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
67c0: 6e 65 64 20 28 6f 72 20 63 72 65 61 74 65 64 29  ned (or created)
67d0: 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2c 0a 2a   successfully,.*
67e0: 2a 20 74 68 65 6e 20 53 51 4c 49 54 45 5f 4f 4b  * then SQLITE_OK
67f0: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 4f 74   is returned. Ot
6800: 68 65 72 77 69 73 65 20 61 6e 20 65 72 72 6f 72  herwise an error
6810: 20 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65   code is returne
6820: 64 2e 20 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65  d. The.** sqlite
6830: 33 5f 65 72 72 6d 73 67 28 29 20 6f 72 20 73 71  3_errmsg() or sq
6840: 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29  lite3_errmsg16()
6850: 20 20 72 6f 75 74 69 6e 65 73 20 63 61 6e 20 62    routines can b
6860: 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e  e used to obtain
6870: 0a 2a 2a 20 61 6e 20 45 6e 67 6c 69 73 68 20 6c  .** an English l
6880: 61 6e 67 75 61 67 65 20 64 65 73 63 72 69 70 74  anguage descript
6890: 69 6f 6e 20 6f 66 20 74 68 65 20 65 72 72 6f 72  ion of the error
68a0: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 64  ..**.** If the d
68b0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 64 6f 65  atabase file doe
68c0: 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 74 68 65  s not exist, the
68d0: 6e 20 61 20 6e 65 77 20 64 61 74 61 62 61 73 65  n a new database
68e0: 20 69 73 20 63 72 65 61 74 65 64 2e 0a 2a 2a 20   is created..** 
68f0: 54 68 65 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72  The encoding for
6900: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
6910: 20 55 54 46 2d 38 20 69 66 20 73 71 6c 69 74 65   UTF-8 if sqlite
6920: 33 5f 6f 70 65 6e 28 29 20 69 73 20 63 61 6c 6c  3_open() is call
6930: 65 64 20 61 6e 64 0a 2a 2a 20 55 54 46 2d 31 36  ed and.** UTF-16
6940: 20 69 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   if sqlite3_open
6950: 31 36 20 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a  16 is used..**.*
6960: 2a 20 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  * Whether or not
6970: 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73   an error occurs
6980: 20 77 68 65 6e 20 69 74 20 69 73 20 6f 70 65 6e   when it is open
6990: 65 64 2c 20 72 65 73 6f 75 72 63 65 73 20 61 73  ed, resources as
69a0: 73 6f 63 69 61 74 65 64 0a 2a 2a 20 77 69 74 68  sociated.** with
69b0: 20 74 68 65 20 73 71 6c 69 74 65 33 2a 20 68 61   the sqlite3* ha
69c0: 6e 64 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 72  ndle should be r
69d0: 65 6c 65 61 73 65 64 20 62 79 20 70 61 73 73 69  eleased by passi
69e0: 6e 67 20 69 74 20 74 6f 0a 2a 2a 20 73 71 6c 69  ng it to.** sqli
69f0: 74 65 33 5f 63 6c 6f 73 65 28 29 20 77 68 65 6e  te3_close() when
6a00: 20 69 74 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72   it is no longer
6a10: 20 72 65 71 75 69 72 65 64 2e 0a 2a 2f 0a 69 6e   required..*/.in
6a20: 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 0a  t sqlite3_open(.
6a30: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69    const char *fi
6a40: 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74  lename,   /* Dat
6a50: 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28  abase filename (
6a60: 55 54 46 2d 38 29 20 2a 2f 0a 20 20 73 71 6c 69  UTF-8) */.  sqli
6a70: 74 65 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20  te3 **ppDb      
6a80: 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69      /* OUT: SQLi
6a90: 74 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a  te db handle */.
6aa0: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  );.int sqlite3_o
6ab0: 70 65 6e 31 36 28 0a 20 20 63 6f 6e 73 74 20 76  pen16(.  const v
6ac0: 6f 69 64 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20  oid *filename,  
6ad0: 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c   /* Database fil
6ae0: 65 6e 61 6d 65 20 28 55 54 46 2d 31 36 29 20 2a  ename (UTF-16) *
6af0: 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70  /.  sqlite3 **pp
6b00: 44 62 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f  Db          /* O
6b10: 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61  UT: SQLite db ha
6b20: 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a  ndle */.);../*.*
6b30: 2a 20 52 65 74 75 72 6e 20 74 68 65 20 65 72 72  * Return the err
6b40: 6f 72 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20  or code for the 
6b50: 6d 6f 73 74 20 72 65 63 65 6e 74 20 73 71 6c 69  most recent sqli
6b60: 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c 20 61  te3_* API call a
6b70: 73 73 6f 63 69 61 74 65 64 0a 2a 2a 20 77 69 74  ssociated.** wit
6b80: 68 20 73 71 6c 69 74 65 33 20 68 61 6e 64 6c 65  h sqlite3 handle
6b90: 20 27 64 62 27 2e 20 53 51 4c 49 54 45 5f 4f 4b   'db'. SQLITE_OK
6ba0: 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20   is returned if 
6bb0: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
6bc0: 0a 2a 2a 20 41 50 49 20 63 61 6c 6c 20 77 61 73  .** API call was
6bd0: 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2a 0a   successful..**.
6be0: 2a 2a 20 43 61 6c 6c 73 20 74 6f 20 6d 61 6e 79  ** Calls to many
6bf0: 20 73 71 6c 69 74 65 33 5f 2a 20 66 75 6e 63 74   sqlite3_* funct
6c00: 69 6f 6e 73 20 73 65 74 20 74 68 65 20 65 72 72  ions set the err
6c10: 6f 72 20 63 6f 64 65 20 61 6e 64 20 73 74 72 69  or code and stri
6c20: 6e 67 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62  ng returned.** b
6c30: 79 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  y sqlite3_errcod
6c40: 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 65 72 72  e(), sqlite3_err
6c50: 6d 73 67 28 29 20 61 6e 64 20 73 71 6c 69 74 65  msg() and sqlite
6c60: 33 5f 65 72 72 6d 73 67 31 36 28 29 0a 2a 2a 20  3_errmsg16().** 
6c70: 28 6f 76 65 72 77 72 69 74 69 6e 67 20 74 68 65  (overwriting the
6c80: 20 70 72 65 76 69 6f 75 73 20 76 61 6c 75 65 73   previous values
6c90: 29 2e 20 4e 6f 74 65 20 74 68 61 74 20 63 61 6c  ). Note that cal
6ca0: 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 72  ls to sqlite3_er
6cb0: 72 63 6f 64 65 28 29 2c 0a 2a 2a 20 73 71 6c 69  rcode(),.** sqli
6cc0: 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64  te3_errmsg() and
6cd0: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31   sqlite3_errmsg1
6ce0: 36 28 29 20 74 68 65 6d 73 65 6c 76 65 73 20 64  6() themselves d
6cf0: 6f 20 6e 6f 74 20 61 66 66 65 63 74 20 74 68 65  o not affect the
6d00: 0a 2a 2a 20 72 65 73 75 6c 74 73 20 6f 66 20 66  .** results of f
6d10: 75 74 75 72 65 20 69 6e 76 6f 63 61 74 69 6f 6e  uture invocation
6d20: 73 2e 0a 2a 2a 0a 2a 2a 20 41 73 73 75 6d 69 6e  s..**.** Assumin
6d30: 67 20 6e 6f 20 6f 74 68 65 72 20 69 6e 74 65 72  g no other inter
6d40: 76 65 6e 69 6e 67 20 73 71 6c 69 74 65 33 5f 2a  vening sqlite3_*
6d50: 20 41 50 49 20 63 61 6c 6c 73 20 61 72 65 20 6d   API calls are m
6d60: 61 64 65 2c 20 74 68 65 20 65 72 72 6f 72 0a 2a  ade, the error.*
6d70: 2a 20 63 6f 64 65 20 72 65 74 75 72 6e 65 64 20  * code returned 
6d80: 62 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  by this function
6d90: 20 69 73 20 61 73 73 6f 63 69 61 74 65 64 20 77   is associated w
6da0: 69 74 68 20 74 68 65 20 73 61 6d 65 20 65 72 72  ith the same err
6db0: 6f 72 20 61 73 0a 2a 2a 20 74 68 65 20 73 74 72  or as.** the str
6dc0: 69 6e 67 73 20 20 72 65 74 75 72 6e 65 64 20 62  ings  returned b
6dd0: 79 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  y sqlite3_errmsg
6de0: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65  () and sqlite3_e
6df0: 72 72 6d 73 67 31 36 28 29 2e 0a 2a 2f 0a 69 6e  rrmsg16()..*/.in
6e00: 74 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  t sqlite3_errcod
6e10: 65 28 73 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a  e(sqlite3 *db);.
6e20: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 61 20  ./*.** Return a 
6e30: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54 46  pointer to a UTF
6e40: 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e  -8 encoded strin
6e50: 67 20 64 65 73 63 72 69 62 69 6e 67 20 69 6e 20  g describing in 
6e60: 65 6e 67 6c 69 73 68 20 74 68 65 0a 2a 2a 20 65  english the.** e
6e70: 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 20 66  rror condition f
6e80: 6f 72 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  or the most rece
6e90: 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49  nt sqlite3_* API
6ea0: 20 63 61 6c 6c 2e 20 54 68 65 20 72 65 74 75 72   call. The retur
6eb0: 6e 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 69 73  ned.** string is
6ec0: 20 61 6c 77 61 79 73 20 74 65 72 6d 69 6e 61 74   always terminat
6ed0: 65 64 20 62 79 20 61 6e 20 30 78 30 30 20 62 79  ed by an 0x00 by
6ee0: 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 74  te..**.** The st
6ef0: 72 69 6e 67 20 22 6e 6f 74 20 61 6e 20 65 72 72  ring "not an err
6f00: 6f 72 22 20 69 73 20 72 65 74 75 72 6e 65 64 20  or" is returned 
6f10: 77 68 65 6e 20 74 68 65 20 6d 6f 73 74 20 72 65  when the most re
6f20: 63 65 6e 74 20 41 50 49 20 63 61 6c 6c 20 77 61  cent API call wa
6f30: 73 0a 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 2e  s.** successful.
6f40: 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a  .*/.const char *
6f50: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 73  sqlite3_errmsg(s
6f60: 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
6f70: 20 52 65 74 75 72 6e 20 61 20 70 6f 69 6e 74 65   Return a pointe
6f80: 72 20 74 6f 20 61 20 55 54 46 2d 31 36 20 6e 61  r to a UTF-16 na
6f90: 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 20  tive byte order 
6fa0: 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 20 64  encoded string d
6fb0: 65 73 63 72 69 62 69 6e 67 0a 2a 2a 20 69 6e 20  escribing.** in 
6fc0: 65 6e 67 6c 69 73 68 20 74 68 65 20 65 72 72 6f  english the erro
6fd0: 72 20 63 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20  r condition for 
6fe0: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
6ff0: 73 71 6c 69 74 65 33 5f 2a 20 41 50 49 20 63 61  sqlite3_* API ca
7000: 6c 6c 2e 0a 2a 2a 20 54 68 65 20 72 65 74 75 72  ll..** The retur
7010: 6e 65 64 20 73 74 72 69 6e 67 20 69 73 20 61 6c  ned string is al
7020: 77 61 79 73 20 74 65 72 6d 69 6e 61 74 65 64 20  ways terminated 
7030: 62 79 20 61 20 70 61 69 72 20 6f 66 20 30 78 30  by a pair of 0x0
7040: 30 20 62 79 74 65 73 2e 0a 2a 2a 0a 2a 2a 20 54  0 bytes..**.** T
7050: 68 65 20 73 74 72 69 6e 67 20 22 6e 6f 74 20 61  he string "not a
7060: 6e 20 65 72 72 6f 72 22 20 69 73 20 72 65 74 75  n error" is retu
7070: 72 6e 65 64 20 77 68 65 6e 20 74 68 65 20 6d 6f  rned when the mo
7080: 73 74 20 72 65 63 65 6e 74 20 41 50 49 20 63 61  st recent API ca
7090: 6c 6c 20 77 61 73 0a 2a 2a 20 73 75 63 63 65 73  ll was.** succes
70a0: 73 66 75 6c 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76  sful..*/.const v
70b0: 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 65 72 72  oid *sqlite3_err
70c0: 6d 73 67 31 36 28 73 71 6c 69 74 65 33 2a 29 3b  msg16(sqlite3*);
70d0: 0a 0a 2f 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61  ../*.** An insta
70e0: 6e 63 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  nce of the follo
70f0: 77 69 6e 67 20 6f 70 61 71 75 65 20 73 74 72 75  wing opaque stru
7100: 63 74 75 72 65 20 69 73 20 75 73 65 64 20 74 6f  cture is used to
7110: 20 72 65 70 72 65 73 65 6e 74 0a 2a 2a 20 61 20   represent.** a 
7120: 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61  compiled SQL sta
7130: 74 6d 65 6e 74 2e 0a 2a 2f 0a 74 79 70 65 64 65  tment..*/.typede
7140: 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  f struct sqlite3
7150: 5f 73 74 6d 74 20 73 71 6c 69 74 65 33 5f 73 74  _stmt sqlite3_st
7160: 6d 74 3b 0a 0a 2f 2a 0a 2a 2a 20 54 6f 20 65 78  mt;../*.** To ex
7170: 65 63 75 74 65 20 61 6e 20 53 51 4c 20 71 75 65  ecute an SQL que
7180: 72 79 2c 20 69 74 20 6d 75 73 74 20 66 69 72 73  ry, it must firs
7190: 74 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 69 6e  t be compiled in
71a0: 74 6f 20 61 20 62 79 74 65 2d 63 6f 64 65 0a 2a  to a byte-code.*
71b0: 2a 20 70 72 6f 67 72 61 6d 20 75 73 69 6e 67 20  * program using 
71c0: 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  one of the follo
71d0: 77 69 6e 67 20 72 6f 75 74 69 6e 65 73 2e 20 54  wing routines. T
71e0: 68 65 20 6f 6e 6c 79 20 64 69 66 66 65 72 65 6e  he only differen
71f0: 63 65 20 62 65 74 77 65 65 6e 0a 2a 2a 20 74 68  ce between.** th
7200: 65 6d 20 69 73 20 74 68 61 74 20 74 68 65 20 73  em is that the s
7210: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 2c 20  econd argument, 
7220: 73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 53  specifying the S
7230: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 0a  QL statement to.
7240: 2a 2a 20 63 6f 6d 70 69 6c 65 2c 20 69 73 20 61  ** compile, is a
7250: 73 73 75 6d 65 64 20 74 6f 20 62 65 20 65 6e 63  ssumed to be enc
7260: 6f 64 65 64 20 69 6e 20 55 54 46 2d 38 20 66 6f  oded in UTF-8 fo
7270: 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 70 72  r the sqlite3_pr
7280: 65 70 61 72 65 28 29 0a 2a 2a 20 66 75 6e 63 74  epare().** funct
7290: 69 6f 6e 20 61 6e 64 20 55 54 46 2d 31 36 20 66  ion and UTF-16 f
72a0: 6f 72 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  or sqlite3_prepa
72b0: 72 65 31 36 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68  re16()..**.** Th
72c0: 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
72d0: 72 20 22 64 62 22 20 69 73 20 61 6e 20 53 51 4c  r "db" is an SQL
72e0: 69 74 65 20 64 61 74 61 62 61 73 65 20 68 61 6e  ite database han
72f0: 64 6c 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 0a  dle. The second.
7300: 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 22 7a 53  ** parameter "zS
7310: 71 6c 22 20 69 73 20 74 68 65 20 73 74 61 74 65  ql" is the state
7320: 6d 65 6e 74 20 74 6f 20 62 65 20 63 6f 6d 70 69  ment to be compi
7330: 6c 65 64 2c 20 65 6e 63 6f 64 65 64 20 61 73 20  led, encoded as 
7340: 65 69 74 68 65 72 0a 2a 2a 20 55 54 46 2d 38 20  either.** UTF-8 
7350: 6f 72 20 55 54 46 2d 31 36 20 28 73 65 65 20 61  or UTF-16 (see a
7360: 62 6f 76 65 29 2e 20 49 66 20 74 68 65 20 6e 65  bove). If the ne
7370: 78 74 20 70 61 72 61 6d 65 74 65 72 2c 20 22 6e  xt parameter, "n
7380: 42 79 74 65 73 22 2c 20 69 73 20 6c 65 73 73 0a  Bytes", is less.
7390: 2a 2a 20 74 68 61 6e 20 7a 65 72 6f 2c 20 74 68  ** than zero, th
73a0: 65 6e 20 7a 53 71 6c 20 69 73 20 72 65 61 64 20  en zSql is read 
73b0: 75 70 20 74 6f 20 74 68 65 20 66 69 72 73 74 20  up to the first 
73c0: 6e 75 6c 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20  nul terminator. 
73d0: 20 49 66 0a 2a 2a 20 22 6e 42 79 74 65 73 22 20   If.** "nBytes" 
73e0: 69 73 20 6e 6f 74 20 6c 65 73 73 20 74 68 61 6e  is not less than
73f0: 20 7a 65 72 6f 2c 20 74 68 65 6e 20 69 74 20 69   zero, then it i
7400: 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20  s the length of 
7410: 74 68 65 20 73 74 72 69 6e 67 20 7a 53 71 6c 0a  the string zSql.
7420: 2a 2a 20 69 6e 20 62 79 74 65 73 20 28 6e 6f 74  ** in bytes (not
7430: 20 63 68 61 72 61 63 74 65 72 73 29 2e 0a 2a 2a   characters)..**
7440: 0a 2a 2a 20 2a 70 7a 54 61 69 6c 20 69 73 20 6d  .** *pzTail is m
7450: 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20  ade to point to 
7460: 74 68 65 20 66 69 72 73 74 20 62 79 74 65 20 70  the first byte p
7470: 61 73 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74  ast the end of t
7480: 68 65 20 66 69 72 73 74 0a 2a 2a 20 53 51 4c 20  he first.** SQL 
7490: 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53 71  statement in zSq
74a0: 6c 2e 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65  l.  This routine
74b0: 20 6f 6e 6c 79 20 63 6f 6d 70 69 6c 65 73 20 74   only compiles t
74c0: 68 65 20 66 69 72 73 74 20 73 74 61 74 65 6d 65  he first stateme
74d0: 6e 74 0a 2a 2a 20 69 6e 20 7a 53 71 6c 2c 20 73  nt.** in zSql, s
74e0: 6f 20 2a 70 7a 54 61 69 6c 20 69 73 20 6c 65 66  o *pzTail is lef
74f0: 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 77 68  t pointing to wh
7500: 61 74 20 72 65 6d 61 69 6e 73 20 75 6e 63 6f 6d  at remains uncom
7510: 70 69 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 2a 70 70  piled..**.** *pp
7520: 53 74 6d 74 20 69 73 20 6c 65 66 74 20 70 6f 69  Stmt is left poi
7530: 6e 74 69 6e 67 20 74 6f 20 61 20 63 6f 6d 70 69  nting to a compi
7540: 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  led SQL statemen
7550: 74 20 74 68 61 74 20 63 61 6e 20 62 65 0a 2a 2a  t that can be.**
7560: 20 65 78 65 63 75 74 65 64 20 75 73 69 6e 67 20   executed using 
7570: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 2e 20  sqlite3_step(). 
7580: 20 4f 72 20 69 66 20 74 68 65 72 65 20 69 73 20   Or if there is 
7590: 61 6e 20 65 72 72 6f 72 2c 20 2a 70 70 53 74 6d  an error, *ppStm
75a0: 74 20 6d 61 79 20 62 65 0a 2a 2a 20 73 65 74 20  t may be.** set 
75b0: 74 6f 20 4e 55 4c 4c 2e 20 20 49 66 20 74 68 65  to NULL.  If the
75c0: 20 69 6e 70 75 74 20 74 65 78 74 20 63 6f 6e 74   input text cont
75d0: 61 69 6e 65 64 20 6e 6f 20 53 51 4c 20 28 69 66  ained no SQL (if
75e0: 20 74 68 65 20 69 6e 70 75 74 20 69 73 20 61 6e   the input is an
75f0: 64 0a 2a 2a 20 65 6d 70 74 79 20 73 74 72 69 6e  d.** empty strin
7600: 67 20 6f 72 20 61 20 63 6f 6d 6d 65 6e 74 29 20  g or a comment) 
7610: 74 68 65 6e 20 2a 70 70 53 74 6d 74 20 69 73 20  then *ppStmt is 
7620: 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a  set to NULL..**.
7630: 2a 2a 20 4f 6e 20 73 75 63 63 65 73 73 2c 20 53  ** On success, S
7640: 51 4c 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75  QLITE_OK is retu
7650: 72 6e 65 64 2e 20 20 4f 74 68 65 72 77 69 73 65  rned.  Otherwise
7660: 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 69   an error code i
7670: 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2f 0a 69  s returned..*/.i
7680: 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
7690: 72 65 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  re(.  sqlite3 *d
76a0: 62 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  b,            /*
76b0: 20 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   Database handle
76c0: 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
76d0: 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a   *zSql,       /*
76e0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20   SQL statement, 
76f0: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f  UTF-8 encoded */
7700: 0a 20 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 20  .  int nBytes,  
7710: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4c 65             /* Le
7720: 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20  ngth of zSql in 
7730: 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69  bytes. */.  sqli
7740: 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d  te3_stmt **ppStm
7750: 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74  t,  /* OUT: Stat
7760: 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a  ement handle */.
7770: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70    const char **p
7780: 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54  zTail     /* OUT
7790: 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75  : Pointer to unu
77a0: 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a  sed portion of z
77b0: 53 71 6c 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71  Sql */.);.int sq
77c0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
77d0: 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
77e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
77f0: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
7800: 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a  .  const void *z
7810: 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
7820: 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
7830: 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  -16 encoded */. 
7840: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 20 20 20   int nBytes,    
7850: 20 20 20 20 20 20 20 20 20 2f 2a 20 4c 65 6e 67           /* Leng
7860: 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79  th of zSql in by
7870: 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65  tes. */.  sqlite
7880: 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
7890: 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
78a0: 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
78b0: 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54  const void **pzT
78c0: 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
78d0: 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
78e0: 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
78f0: 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 4e  l */.);../*.** N
7900: 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66  ewer versions of
7910: 20 74 68 65 20 70 72 65 70 61 72 65 20 41 50 49   the prepare API
7920: 20 77 6f 72 6b 20 6a 75 73 74 20 6c 69 6b 65 20   work just like 
7930: 74 68 65 20 6c 65 67 61 63 79 20 76 65 72 73 69  the legacy versi
7940: 6f 6e 73 0a 2a 2a 20 62 75 74 20 77 69 74 68 20  ons.** but with 
7950: 6f 6e 65 20 65 78 63 65 70 74 69 6f 6e 3a 20 20  one exception:  
7960: 54 68 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68  The a copy of th
7970: 65 20 53 51 4c 20 74 65 78 74 20 69 73 20 73 61  e SQL text is sa
7980: 76 65 64 20 69 6e 20 74 68 65 0a 2a 2a 20 73 71  ved in the.** sq
7990: 6c 69 74 65 33 5f 73 74 6d 74 20 73 74 72 75 63  lite3_stmt struc
79a0: 74 75 72 65 20 74 68 61 74 20 69 73 20 72 65 74  ture that is ret
79b0: 75 72 6e 65 64 2e 20 20 49 66 20 74 68 69 73 20  urned.  If this 
79c0: 63 6f 70 79 20 65 78 69 73 74 73 2c 20 69 74 0a  copy exists, it.
79d0: 2a 2a 20 6d 6f 64 69 66 69 65 64 73 20 74 68 65  ** modifieds the
79e0: 20 62 65 68 61 76 69 6f 72 20 6f 66 20 73 71 6c   behavior of sql
79f0: 69 74 65 33 5f 73 74 65 70 28 29 20 73 6c 69 67  ite3_step() slig
7a00: 68 74 6c 79 2e 20 20 46 69 72 73 74 2c 20 73 71  htly.  First, sq
7a10: 6c 69 74 65 33 5f 73 74 65 70 28 29 0a 2a 2a 20  lite3_step().** 
7a20: 77 69 6c 6c 20 6e 6f 20 6c 6f 6e 67 65 72 20 72  will no longer r
7a30: 65 74 75 72 6e 20 61 6e 20 53 51 4c 49 54 45 5f  eturn an SQLITE_
7a40: 53 43 48 45 4d 41 20 65 72 72 6f 72 20 62 75 74  SCHEMA error but
7a50: 20 77 69 6c 6c 20 69 6e 73 74 65 61 64 20 61 75   will instead au
7a60: 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 72  tomatically.** r
7a70: 65 72 75 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65  erun the compile
7a80: 72 20 74 6f 20 72 65 62 75 69 6c 64 20 74 68 65  r to rebuild the
7a90: 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
7aa0: 65 6e 74 2e 20 20 53 65 63 6f 6e 64 6c 79 2c 20  ent.  Secondly, 
7ab0: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70  .** sqlite3_step
7ac0: 28 29 20 6e 6f 77 20 74 75 72 6e 73 20 61 20 66  () now turns a f
7ad0: 75 6c 6c 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ull result code 
7ae0: 2d 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 64  - the result cod
7af0: 65 20 74 68 61 74 0a 2a 2a 20 75 73 65 20 75 73  e that.** use us
7b00: 65 64 20 74 6f 20 68 61 76 65 20 74 6f 20 63 61  ed to have to ca
7b10: 6c 6c 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  ll sqlite3_reset
7b20: 28 29 20 74 6f 20 67 65 74 2e 0a 2a 2f 0a 69 6e  () to get..*/.in
7b30: 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  t sqlite3_prepar
7b40: 65 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33 20  e_v2(.  sqlite3 
7b50: 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
7b60: 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
7b70: 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
7b80: 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  ar *zSql,       
7b90: 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
7ba0: 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  , UTF-8 encoded 
7bb0: 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 73 2c  */.  int nBytes,
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
7bd0: 4c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69  Length of zSql i
7be0: 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71  n bytes. */.  sq
7bf0: 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53  lite3_stmt **ppS
7c00: 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74  tmt,  /* OUT: St
7c10: 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a  atement handle *
7c20: 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
7c30: 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f  *pzTail     /* O
7c40: 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75  UT: Pointer to u
7c50: 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66  nused portion of
7c60: 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 69 6e 74 20   zSql */.);.int 
7c70: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
7c80: 36 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33 20  6_v2(.  sqlite3 
7c90: 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
7ca0: 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
7cb0: 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f  le */.  const vo
7cc0: 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  id *zSql,       
7cd0: 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
7ce0: 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64  , UTF-16 encoded
7cf0: 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 73   */.  int nBytes
7d00: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ,             /*
7d10: 20 4c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20   Length of zSql 
7d20: 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73  in bytes. */.  s
7d30: 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70  qlite3_stmt **pp
7d40: 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53  Stmt,  /* OUT: S
7d50: 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20  tatement handle 
7d60: 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  */.  const void 
7d70: 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20  **pzTail     /* 
7d80: 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20  OUT: Pointer to 
7d90: 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f  unused portion o
7da0: 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a  f zSql */.);../*
7db0: 0a 2a 2a 20 50 6f 69 6e 74 65 72 73 20 74 6f 20  .** Pointers to 
7dc0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77  the following tw
7dd0: 6f 20 6f 70 61 71 75 65 20 73 74 72 75 63 74 75  o opaque structu
7de0: 72 65 73 20 61 72 65 20 75 73 65 64 20 74 6f 20  res are used to 
7df0: 63 6f 6d 6d 75 6e 69 63 61 74 65 0a 2a 2a 20 77  communicate.** w
7e00: 69 74 68 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ith the implemen
7e10: 74 61 74 69 6f 6e 73 20 6f 66 20 75 73 65 72 2d  tations of user-
7e20: 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
7e30: 73 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  s..*/.typedef st
7e40: 72 75 63 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e  ruct sqlite3_con
7e50: 74 65 78 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e  text sqlite3_con
7e60: 74 65 78 74 3b 0a 74 79 70 65 64 65 66 20 73 74  text;.typedef st
7e70: 72 75 63 74 20 4d 65 6d 20 73 71 6c 69 74 65 33  ruct Mem sqlite3
7e80: 5f 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a 2a 20 49  _value;../*.** I
7e90: 6e 20 74 68 65 20 53 51 4c 20 73 74 72 69 6e 67  n the SQL string
7ea0: 73 20 69 6e 70 75 74 20 74 6f 20 73 71 6c 69 74  s input to sqlit
7eb0: 65 33 5f 70 72 65 70 61 72 65 28 29 20 61 6e 64  e3_prepare() and
7ec0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
7ed0: 31 36 28 29 2c 0a 2a 2a 20 6f 6e 65 20 6f 72 20  16(),.** one or 
7ee0: 6d 6f 72 65 20 6c 69 74 65 72 61 6c 73 20 63 61  more literals ca
7ef0: 6e 20 62 65 20 72 65 70 6c 61 63 65 20 62 79 20  n be replace by 
7f00: 70 61 72 61 6d 65 74 65 72 73 20 22 3f 22 20 6f  parameters "?" o
7f10: 72 20 22 3a 41 41 41 22 20 6f 72 0a 2a 2a 20 22  r ":AAA" or.** "
7f20: 24 56 56 56 22 20 77 68 65 72 65 20 41 41 41 20  $VVV" where AAA 
7f30: 69 73 20 61 6e 20 69 64 65 6e 74 69 66 65 72 20  is an identifer 
7f40: 61 6e 64 20 56 56 56 20 69 73 20 61 20 76 61 72  and VVV is a var
7f50: 69 61 62 6c 65 20 6e 61 6d 65 20 61 63 63 6f 72  iable name accor
7f60: 64 69 6e 67 0a 2a 2a 20 74 6f 20 74 68 65 20 73  ding.** to the s
7f70: 79 6e 74 61 78 20 72 75 6c 65 73 20 6f 66 20 74  yntax rules of t
7f80: 68 65 20 54 43 4c 20 70 72 6f 67 72 61 6d 6d 69  he TCL programmi
7f90: 6e 67 20 6c 61 6e 67 75 61 67 65 2e 0a 2a 2a 20  ng language..** 
7fa0: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
7fb0: 73 65 20 70 61 72 61 6d 65 74 65 72 73 20 28 61  se parameters (a
7fc0: 6c 73 6f 20 63 61 6c 6c 65 64 20 22 68 6f 73 74  lso called "host
7fd0: 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 73   parameter names
7fe0: 22 29 20 63 61 6e 0a 2a 2a 20 62 65 20 73 65 74  ") can.** be set
7ff0: 20 75 73 69 6e 67 20 74 68 65 20 72 6f 75 74 69   using the routi
8000: 6e 65 73 20 6c 69 73 74 65 64 20 62 65 6c 6f 77  nes listed below
8010: 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 65 76 65 72 79  ..**.** In every
8020: 20 63 61 73 65 2c 20 74 68 65 20 66 69 72 73 74   case, the first
8030: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
8040: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
8050: 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 20 73  qlite3_stmt.** s
8060: 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 65  tructure returne
8070: 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 70  d from sqlite3_p
8080: 72 65 70 61 72 65 28 29 2e 20 20 54 68 65 20 73  repare().  The s
8090: 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
80a0: 69 73 20 74 68 65 0a 2a 2a 20 69 6e 64 65 78 20  is the.** index 
80b0: 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  of the parameter
80c0: 2e 20 20 54 68 65 20 66 69 72 73 74 20 70 61 72  .  The first par
80d0: 61 6d 65 74 65 72 20 61 73 20 61 6e 20 69 6e 64  ameter as an ind
80e0: 65 78 20 6f 66 20 31 2e 20 20 46 6f 72 0a 2a 2a  ex of 1.  For.**
80f0: 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74 65 72   named parameter
8100: 73 20 28 22 3a 41 41 41 22 20 6f 72 20 22 24 56  s (":AAA" or "$V
8110: 56 56 22 29 20 79 6f 75 20 63 61 6e 20 75 73 65  VV") you can use
8120: 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 62 69 6e   .** sqlite3_bin
8130: 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65  d_parameter_inde
8140: 78 28 29 20 74 6f 20 67 65 74 20 74 68 65 20 63  x() to get the c
8150: 6f 72 72 65 63 74 20 69 6e 64 65 78 20 76 61 6c  orrect index val
8160: 75 65 20 67 69 76 65 6e 0a 2a 2a 20 74 68 65 20  ue given.** the 
8170: 70 61 72 61 6d 65 74 65 72 73 20 6e 61 6d 65 2e  parameters name.
8180: 20 20 49 66 20 74 68 65 20 73 61 6d 65 20 6e 61    If the same na
8190: 6d 65 64 20 70 61 72 61 6d 65 74 65 72 20 6f 63  med parameter oc
81a0: 63 75 72 73 20 6d 6f 72 65 20 74 68 61 6e 0a 2a  curs more than.*
81b0: 2a 20 6f 6e 63 65 2c 20 69 74 20 69 73 20 61 73  * once, it is as
81c0: 73 69 67 6e 65 64 20 74 68 65 20 73 61 6d 65 20  signed the same 
81d0: 69 6e 64 65 78 20 65 61 63 68 20 74 69 6d 65 2e  index each time.
81e0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 66 74 68  .**.** The fifth
81f0: 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
8200: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
8210: 29 2c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  ), sqlite3_bind_
8220: 74 65 78 74 28 29 2c 20 61 6e 64 0a 2a 2a 20 73  text(), and.** s
8230: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
8240: 31 36 28 29 20 69 73 20 61 20 64 65 73 74 72 75  16() is a destru
8250: 63 74 6f 72 20 75 73 65 64 20 74 6f 20 64 69 73  ctor used to dis
8260: 70 6f 73 65 20 6f 66 20 74 68 65 20 42 4c 4f 42  pose of the BLOB
8270: 20 6f 72 0a 2a 2a 20 74 65 78 74 20 61 66 74 65   or.** text afte
8280: 72 20 53 51 4c 69 74 65 20 68 61 73 20 66 69 6e  r SQLite has fin
8290: 69 73 68 65 64 20 77 69 74 68 20 69 74 2e 20 20  ished with it.  
82a0: 49 66 20 74 68 65 20 66 69 66 74 68 20 61 72 67  If the fifth arg
82b0: 75 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20  ument is the.** 
82c0: 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20 53 51  special value SQ
82d0: 4c 49 54 45 5f 53 54 41 54 49 43 2c 20 74 68 65  LITE_STATIC, the
82e0: 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 61 73  n the library as
82f0: 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 20 69  sumes that the i
8300: 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 69 73  nformation.** is
8310: 20 69 6e 20 73 74 61 74 69 63 2c 20 75 6e 6d 61   in static, unma
8320: 6e 61 67 65 64 20 73 70 61 63 65 20 61 6e 64 20  naged space and 
8330: 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f  does not need to
8340: 20 62 65 20 66 72 65 65 64 2e 20 20 49 66 20 74   be freed.  If t
8350: 68 65 0a 2a 2a 20 66 69 66 74 68 20 61 72 67 75  he.** fifth argu
8360: 6d 65 6e 74 20 68 61 73 20 74 68 65 20 76 61 6c  ment has the val
8370: 75 65 20 53 51 4c 49 54 45 5f 54 52 41 4e 53 49  ue SQLITE_TRANSI
8380: 45 4e 54 2c 20 74 68 65 6e 20 53 51 4c 69 74 65  ENT, then SQLite
8390: 20 6d 61 6b 65 73 20 69 74 73 0a 2a 2a 20 6f 77   makes its.** ow
83a0: 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20 6f  n private copy o
83b0: 66 20 74 68 65 20 64 61 74 61 2e 0a 2a 2a 0a 2a  f the data..**.*
83c0: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69  * The sqlite3_bi
83d0: 6e 64 5f 2a 20 72 6f 75 74 69 6e 65 20 6d 75 73  nd_* routine mus
83e0: 74 20 62 65 20 63 61 6c 6c 65 64 20 62 65 66 6f  t be called befo
83f0: 72 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  re sqlite3_step(
8400: 29 20 61 66 74 65 72 0a 2a 2a 20 61 6e 20 73 71  ) after.** an sq
8410: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20  lite3_prepare() 
8420: 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  or sqlite3_reset
8430: 28 29 2e 20 20 55 6e 62 6f 75 6e 64 20 70 61 72  ().  Unbound par
8440: 61 6d 65 74 65 72 73 73 20 61 72 65 0a 2a 2a 20  ameterss are.** 
8450: 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 4e  interpreted as N
8460: 55 4c 4c 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ULL..*/.int sqli
8470: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 73 71  te3_bind_blob(sq
8480: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
8490: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69  , const void*, i
84a0: 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f  nt n, void(*)(vo
84b0: 69 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74  id*));.int sqlit
84c0: 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 73  e3_bind_double(s
84d0: 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
84e0: 74 2c 20 64 6f 75 62 6c 65 29 3b 0a 69 6e 74 20  t, double);.int 
84f0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
8500: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
8510: 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e 74 20 73  int, int);.int s
8520: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
8530: 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  4(sqlite3_stmt*,
8540: 20 69 6e 74 2c 20 73 71 6c 69 74 65 5f 69 6e 74   int, sqlite_int
8550: 36 34 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  64);.int sqlite3
8560: 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73 71 6c 69 74  _bind_null(sqlit
8570: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29 3b 0a  e3_stmt*, int);.
8580: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
8590: 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f 73 74  _text(sqlite3_st
85a0: 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20  mt*, int, const 
85b0: 63 68 61 72 2a 2c 20 69 6e 74 20 6e 2c 20 76 6f  char*, int n, vo
85c0: 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 69  id(*)(void*));.i
85d0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
85e0: 74 65 78 74 31 36 28 73 71 6c 69 74 65 33 5f 73  text16(sqlite3_s
85f0: 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74  tmt*, int, const
8600: 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69   void*, int, voi
8610: 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 69 6e  d(*)(void*));.in
8620: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 76  t sqlite3_bind_v
8630: 61 6c 75 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  alue(sqlite3_stm
8640: 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 73  t*, int, const s
8650: 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a  qlite3_value*);.
8660: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74 68  ./*.** Return th
8670: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72 61  e number of para
8680: 6d 65 74 65 72 73 20 69 6e 20 61 20 63 6f 6d 70  meters in a comp
8690: 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65  iled SQL stateme
86a0: 6e 74 2e 20 20 54 68 69 73 0a 2a 2a 20 72 6f 75  nt.  This.** rou
86b0: 74 69 6e 65 20 77 61 73 20 61 64 64 65 64 20 74  tine was added t
86c0: 6f 20 73 75 70 70 6f 72 74 20 44 42 44 3a 3a 53  o support DBD::S
86d0: 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71  QLite..*/.int sq
86e0: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
86f0: 65 74 65 72 5f 63 6f 75 6e 74 28 73 71 6c 69 74  eter_count(sqlit
8700: 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a  e3_stmt*);../*.*
8710: 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 61 6d  * Return the nam
8720: 65 20 6f 66 20 74 68 65 20 69 2d 74 68 20 70 61  e of the i-th pa
8730: 72 61 6d 65 74 65 72 2e 20 20 4f 72 64 69 6e 61  rameter.  Ordina
8740: 72 79 20 70 61 72 61 6d 65 74 65 72 73 20 22 3f  ry parameters "?
8750: 22 20 61 72 65 0a 2a 2a 20 6e 61 6d 65 6c 65 73  " are.** nameles
8760: 73 20 61 6e 64 20 61 20 4e 55 4c 4c 20 69 73 20  s and a NULL is 
8770: 72 65 74 75 72 6e 65 64 2e 20 20 46 6f 72 20 70  returned.  For p
8780: 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65  arameters of the
8790: 20 66 6f 72 6d 20 3a 41 41 41 20 6f 72 0a 2a 2a   form :AAA or.**
87a0: 20 24 56 56 56 20 74 68 65 20 63 6f 6d 70 6c 65   $VVV the comple
87b0: 74 65 20 74 65 78 74 20 6f 66 20 74 68 65 20 70  te text of the p
87c0: 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 20 69 73  arameter name is
87d0: 20 72 65 74 75 72 6e 65 64 2c 20 69 6e 63 6c 75   returned, inclu
87e0: 64 69 6e 67 0a 2a 2a 20 74 68 65 20 69 6e 69 74  ding.** the init
87f0: 69 61 6c 20 22 3a 22 20 6f 72 20 22 24 22 2e 20  ial ":" or "$". 
8800: 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65   NULL is returne
8810: 64 20 69 66 20 74 68 65 20 69 6e 64 65 78 20 69  d if the index i
8820: 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2e 0a  s out of range..
8830: 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  */.const char *s
8840: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
8850: 6d 65 74 65 72 5f 6e 61 6d 65 28 73 71 6c 69 74  meter_name(sqlit
8860: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29 3b 0a  e3_stmt*, int);.
8870: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74 68  ./*.** Return th
8880: 65 20 69 6e 64 65 78 20 6f 66 20 61 20 70 61 72  e index of a par
8890: 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65 20  ameter with the 
88a0: 67 69 76 65 6e 20 6e 61 6d 65 2e 20 20 54 68 65  given name.  The
88b0: 20 6e 61 6d 65 0a 2a 2a 20 6d 75 73 74 20 6d 61   name.** must ma
88c0: 74 63 68 20 65 78 61 63 74 6c 79 2e 20 20 49 66  tch exactly.  If
88d0: 20 6e 6f 20 70 61 72 61 6d 65 74 65 72 20 77 69   no parameter wi
88e0: 74 68 20 74 68 65 20 67 69 76 65 6e 20 6e 61 6d  th the given nam
88f0: 65 20 69 73 20 66 6f 75 6e 64 2c 0a 2a 2a 20 72  e is found,.** r
8900: 65 74 75 72 6e 20 30 2e 0a 2a 2f 0a 69 6e 74 20  eturn 0..*/.int 
8910: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
8920: 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 73 71 6c  ameter_index(sql
8930: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 63 6f 6e 73  ite3_stmt*, cons
8940: 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a  t char *zName);.
8950: 0a 2f 2a 0a 2a 2a 20 53 65 74 20 61 6c 6c 20 74  ./*.** Set all t
8960: 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e  he parameters in
8970: 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 53 51   the compiled SQ
8980: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 4e  L statement to N
8990: 55 4c 4c 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ULL..*/.int sqli
89a0: 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e  te3_clear_bindin
89b0: 67 73 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  gs(sqlite3_stmt*
89c0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e  );../*.** Return
89d0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
89e0: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
89f0: 73 75 6c 74 20 73 65 74 20 72 65 74 75 72 6e 65  sult set returne
8a00: 64 20 62 79 20 74 68 65 20 63 6f 6d 70 69 6c 65  d by the compile
8a10: 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65  d.** SQL stateme
8a20: 6e 74 2e 20 54 68 69 73 20 72 6f 75 74 69 6e 65  nt. This routine
8a30: 20 72 65 74 75 72 6e 73 20 30 20 69 66 20 70 53   returns 0 if pS
8a40: 74 6d 74 20 69 73 20 61 6e 20 53 51 4c 20 73 74  tmt is an SQL st
8a50: 61 74 65 6d 65 6e 74 0a 2a 2a 20 74 68 61 74 20  atement.** that 
8a60: 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20  does not return 
8a70: 64 61 74 61 20 28 66 6f 72 20 65 78 61 6d 70 6c  data (for exampl
8a80: 65 20 61 6e 20 55 50 44 41 54 45 29 2e 0a 2a 2f  e an UPDATE)..*/
8a90: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c  .int sqlite3_col
8aa0: 75 6d 6e 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65  umn_count(sqlite
8ab0: 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a  3_stmt *pStmt);.
8ac0: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ./*.** The first
8ad0: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
8ae0: 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61  compiled SQL sta
8af0: 74 65 6d 65 6e 74 2e 20 54 68 69 73 20 66 75 6e  tement. This fun
8b00: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a 2a 2a  ction returns.**
8b10: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 65 61 64   the column head
8b20: 69 6e 67 20 66 6f 72 20 74 68 65 20 4e 74 68 20  ing for the Nth 
8b30: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 61 74 20 73  column of that s
8b40: 74 61 74 65 6d 65 6e 74 2c 20 77 68 65 72 65 20  tatement, where 
8b50: 4e 20 69 73 20 74 68 65 0a 2a 2a 20 73 65 63 6f  N is the.** seco
8b60: 6e 64 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 61  nd function para
8b70: 6d 65 74 65 72 2e 20 20 54 68 65 20 73 74 72 69  meter.  The stri
8b80: 6e 67 20 72 65 74 75 72 6e 65 64 20 69 73 20 55  ng returned is U
8b90: 54 46 2d 38 20 66 6f 72 0a 2a 2a 20 73 71 6c 69  TF-8 for.** sqli
8ba0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28  te3_column_name(
8bb0: 29 20 61 6e 64 20 55 54 46 2d 31 36 20 66 6f 72  ) and UTF-16 for
8bc0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
8bd0: 6e 61 6d 65 31 36 28 29 2e 0a 2a 2f 0a 63 6f 6e  name16()..*/.con
8be0: 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
8bf0: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 73 71 6c  _column_name(sql
8c00: 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b  ite3_stmt*,int);
8c10: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
8c20: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
8c30: 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  16(sqlite3_stmt*
8c40: 2c 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  ,int);../*.** Th
8c50: 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
8c60: 72 20 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69  r to the followi
8c70: 6e 67 20 63 61 6c 6c 73 20 69 73 20 61 20 63 6f  ng calls is a co
8c80: 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65  mpiled SQL state
8c90: 6d 65 6e 74 2e 0a 2a 2a 20 54 68 65 73 65 20 66  ment..** These f
8ca0: 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 20  unctions return 
8cb0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
8cc0: 74 20 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e  t the Nth column
8cd0: 20 72 65 74 75 72 6e 65 64 20 62 79 20 0a 2a 2a   returned by .**
8ce0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2c 20   the statement, 
8cf0: 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 73  where N is the s
8d00: 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20 61  econd function a
8d10: 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 49  rgument..**.** I
8d20: 66 20 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e  f the Nth column
8d30: 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
8d40: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
8d50: 74 20 61 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  t a column value
8d60: 2c 0a 2a 2a 20 74 68 65 6e 20 61 6c 6c 20 6f 66  ,.** then all of
8d70: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 20 72   the functions r
8d80: 65 74 75 72 6e 20 4e 55 4c 4c 2e 20 4f 74 68 65  eturn NULL. Othe
8d90: 72 77 69 73 65 2c 20 74 68 65 20 72 65 74 75 72  rwise, the retur
8da0: 6e 20 74 68 65 20 0a 2a 2a 20 6e 61 6d 65 20 6f  n the .** name o
8db0: 66 20 74 68 65 20 61 74 74 61 63 68 65 64 20 64  f the attached d
8dc0: 61 74 61 62 61 73 65 2c 20 74 61 62 6c 65 20 61  atabase, table a
8dd0: 6e 64 20 63 6f 6c 75 6d 6e 20 74 68 61 74 20 74  nd column that t
8de0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 2a 2a  he expression.**
8df0: 20 65 78 74 72 61 63 74 73 20 61 20 76 61 6c 75   extracts a valu
8e00: 65 20 66 72 6f 6d 2e 0a 2a 2a 0a 2a 2a 20 41 73  e from..**.** As
8e10: 20 77 69 74 68 20 61 6c 6c 20 6f 74 68 65 72 20   with all other 
8e20: 53 51 4c 69 74 65 20 41 50 49 73 2c 20 74 68 6f  SQLite APIs, tho
8e30: 73 65 20 70 6f 73 74 66 69 78 65 64 20 77 69 74  se postfixed wit
8e40: 68 20 22 31 36 22 20 72 65 74 75 72 6e 20 55 54  h "16" return UT
8e50: 46 2d 31 36 0a 2a 2a 20 65 6e 63 6f 64 65 64 20  F-16.** encoded 
8e60: 73 74 72 69 6e 67 73 2c 20 74 68 65 20 6f 74 68  strings, the oth
8e70: 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  er functions ret
8e80: 75 72 6e 20 55 54 46 2d 38 2e 20 54 68 65 20 6d  urn UTF-8. The m
8e90: 65 6d 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  emory containing
8ea0: 0a 2a 2a 20 74 68 65 20 72 65 74 75 72 6e 65 64  .** the returned
8eb0: 20 73 74 72 69 6e 67 73 20 69 73 20 76 61 6c 69   strings is vali
8ec0: 64 20 75 6e 74 69 6c 20 74 68 65 20 73 74 61 74  d until the stat
8ed0: 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 69 73 20  ement handle is 
8ee0: 66 69 6e 61 6c 69 7a 65 64 28 29 2e 0a 2a 2a 0a  finalized()..**.
8ef0: 2a 2a 20 54 68 65 73 65 20 41 50 49 73 20 61 72  ** These APIs ar
8f00: 65 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  e only available
8f10: 20 69 66 20 74 68 65 20 6c 69 62 72 61 72 79 20   if the library 
8f20: 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  was compiled wit
8f30: 68 20 74 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45  h the .** SQLITE
8f40: 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d  _ENABLE_COLUMN_M
8f50: 45 54 41 44 41 54 41 20 70 72 65 70 72 6f 63 65  ETADATA preproce
8f60: 73 73 6f 72 20 73 79 6d 62 6f 6c 20 64 65 66 69  ssor symbol defi
8f70: 6e 65 64 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68  ned..*/.const ch
8f80: 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ar *sqlite3_colu
8f90: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
8fa0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69  (sqlite3_stmt*,i
8fb0: 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20  nt);.const void 
8fc0: 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
8fd0: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28  database_name16(
8fe0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e  sqlite3_stmt*,in
8ff0: 74 29 3b 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a  t);.const char *
9000: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
9010: 61 62 6c 65 5f 6e 61 6d 65 28 73 71 6c 69 74 65  able_name(sqlite
9020: 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f  3_stmt*,int);.co
9030: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
9040: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
9050: 61 6d 65 31 36 28 73 71 6c 69 74 65 33 5f 73 74  ame16(sqlite3_st
9060: 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20  mt*,int);.const 
9070: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f  char *sqlite3_co
9080: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
9090: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69  (sqlite3_stmt*,i
90a0: 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20  nt);.const void 
90b0: 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
90c0: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 73 71  origin_name16(sq
90d0: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29  lite3_stmt*,int)
90e0: 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72  ;../*.** The fir
90f0: 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  st parameter is 
9100: 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73  a compiled SQL s
9110: 74 61 74 65 6d 65 6e 74 2e 20 49 66 20 74 68 69  tatement. If thi
9120: 73 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69  s statement.** i
9130: 73 20 61 20 53 45 4c 45 43 54 20 73 74 61 74 65  s a SELECT state
9140: 6d 65 6e 74 2c 20 74 68 65 20 4e 74 68 20 63 6f  ment, the Nth co
9150: 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65 74 75  lumn of the retu
9160: 72 6e 65 64 20 72 65 73 75 6c 74 20 73 65 74 20  rned result set 
9170: 0a 2a 2a 20 6f 66 20 74 68 65 20 53 45 4c 45 43  .** of the SELEC
9180: 54 20 69 73 20 61 20 74 61 62 6c 65 20 63 6f 6c  T is a table col
9190: 75 6d 6e 20 74 68 65 6e 20 74 68 65 20 64 65 63  umn then the dec
91a0: 6c 61 72 65 64 20 74 79 70 65 20 6f 66 20 74 68  lared type of th
91b0: 65 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d  e table.** colum
91c0: 6e 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49  n is returned. I
91d0: 66 20 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e  f the Nth column
91e0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
91f0: 65 74 20 69 73 20 6e 6f 74 20 61 74 20 74 61 62  et is not at tab
9200: 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c 20 74 68  le.** column, th
9210: 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  en a NULL pointe
9220: 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54  r is returned. T
9230: 68 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 69  he returned stri
9240: 6e 67 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20  ng is always.** 
9250: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 2e 20 46  UTF-8 encoded. F
9260: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74  or example, in t
9270: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
9280: 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43 52 45 41 54 45  ma:.**.** CREATE
9290: 20 54 41 42 4c 45 20 74 31 28 63 31 20 56 41 52   TABLE t1(c1 VAR
92a0: 49 41 4e 54 29 3b 0a 2a 2a 0a 2a 2a 20 41 6e 64  IANT);.**.** And
92b0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
92c0: 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65  tatement compile
92d0: 64 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c 45 43 54 20  d:.**.** SELECT 
92e0: 63 31 20 2b 20 31 2c 20 63 31 20 46 52 4f 4d 20  c1 + 1, c1 FROM 
92f0: 74 31 3b 0a 2a 2a 0a 2a 2a 20 54 68 65 6e 20 74  t1;.**.** Then t
9300: 68 69 73 20 72 6f 75 74 69 6e 65 20 77 6f 75 6c  his routine woul
9310: 64 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72  d return the str
9320: 69 6e 67 20 22 56 41 52 49 41 4e 54 22 20 66 6f  ing "VARIANT" fo
9330: 72 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20  r the second.** 
9340: 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 28 69  result column (i
9350: 3d 3d 31 29 2c 20 61 6e 64 20 61 20 4e 55 4c 4c  ==1), and a NULL
9360: 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65   pointer for the
9370: 20 66 69 72 73 74 20 72 65 73 75 6c 74 20 63 6f   first result co
9380: 6c 75 6d 6e 0a 2a 2a 20 28 69 3d 3d 30 29 2e 0a  lumn.** (i==0)..
9390: 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  */.const char *s
93a0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
93b0: 63 6c 74 79 70 65 28 73 71 6c 69 74 65 33 5f 73  cltype(sqlite3_s
93c0: 74 6d 74 20 2a 2c 20 69 6e 74 20 69 29 3b 0a 0a  tmt *, int i);..
93d0: 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20  /*.** The first 
93e0: 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 63  parameter is a c
93f0: 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61 74  ompiled SQL stat
9400: 65 6d 65 6e 74 2e 20 49 66 20 74 68 69 73 20 73  ement. If this s
9410: 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69 73 20 61  tatement.** is a
9420: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
9430: 74 2c 20 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d  t, the Nth colum
9440: 6e 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e 65  n of the returne
9450: 64 20 72 65 73 75 6c 74 20 73 65 74 20 0a 2a 2a  d result set .**
9460: 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 69   of the SELECT i
9470: 73 20 61 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e  s a table column
9480: 20 74 68 65 6e 20 74 68 65 20 64 65 63 6c 61 72   then the declar
9490: 65 64 20 74 79 70 65 20 6f 66 20 74 68 65 20 74  ed type of the t
94a0: 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 69  able.** column i
94b0: 73 20 72 65 74 75 72 6e 65 64 2e 20 49 66 20 74  s returned. If t
94c0: 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66  he Nth column of
94d0: 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
94e0: 69 73 20 6e 6f 74 20 61 74 20 74 61 62 6c 65 0a  is not at table.
94f0: 2a 2a 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20  ** column, then 
9500: 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69  a NULL pointer i
9510: 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68 65 20  s returned. The 
9520: 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67 20  returned string 
9530: 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20 55 54 46  is always.** UTF
9540: 2d 31 36 20 65 6e 63 6f 64 65 64 2e 20 46 6f 72  -16 encoded. For
9550: 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65   example, in the
9560: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
9570: 3a 0a 2a 2a 0a 2a 2a 20 43 52 45 41 54 45 20 54  :.**.** CREATE T
9580: 41 42 4c 45 20 74 31 28 63 31 20 49 4e 54 45 47  ABLE t1(c1 INTEG
9590: 45 52 29 3b 0a 2a 2a 0a 2a 2a 20 41 6e 64 20 74  ER);.**.** And t
95a0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 61  he following sta
95b0: 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65 64 3a  tement compiled:
95c0: 0a 2a 2a 0a 2a 2a 20 53 45 4c 45 43 54 20 63 31  .**.** SELECT c1
95d0: 20 2b 20 31 2c 20 63 31 20 46 52 4f 4d 20 74 31   + 1, c1 FROM t1
95e0: 3b 0a 2a 2a 0a 2a 2a 20 54 68 65 6e 20 74 68 69  ;.**.** Then thi
95f0: 73 20 72 6f 75 74 69 6e 65 20 77 6f 75 6c 64 20  s routine would 
9600: 72 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e  return the strin
9610: 67 20 22 49 4e 54 45 47 45 52 22 20 66 6f 72 20  g "INTEGER" for 
9620: 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 72 65  the second.** re
9630: 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 28 69 3d 3d  sult column (i==
9640: 31 29 2c 20 61 6e 64 20 61 20 4e 55 4c 4c 20 70  1), and a NULL p
9650: 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65 20 66  ointer for the f
9660: 69 72 73 74 20 72 65 73 75 6c 74 20 63 6f 6c 75  irst result colu
9670: 6d 6e 0a 2a 2a 20 28 69 3d 3d 30 29 2e 0a 2a 2f  mn.** (i==0)..*/
9680: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
9690: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
96a0: 74 79 70 65 31 36 28 73 71 6c 69 74 65 33 5f 73  type16(sqlite3_s
96b0: 74 6d 74 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a 20 0a  tmt*,int);../* .
96c0: 2a 2a 20 41 66 74 65 72 20 61 6e 20 53 51 4c 20  ** After an SQL 
96d0: 71 75 65 72 79 20 68 61 73 20 62 65 65 6e 20 63  query has been c
96e0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 61 20 63  ompiled with a c
96f0: 61 6c 6c 20 74 6f 20 65 69 74 68 65 72 0a 2a 2a  all to either.**
9700: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
9710: 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 70 72  () or sqlite3_pr
9720: 65 70 61 72 65 31 36 28 29 2c 20 74 68 65 6e 20  epare16(), then 
9730: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 75  this function mu
9740: 73 74 20 62 65 0a 2a 2a 20 63 61 6c 6c 65 64 20  st be.** called 
9750: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65  one or more time
9760: 73 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65  s to execute the
9770: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a 0a 2a   statement..**.*
9780: 2a 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  * The return val
9790: 75 65 20 77 69 6c 6c 20 62 65 20 65 69 74 68 65  ue will be eithe
97a0: 72 20 53 51 4c 49 54 45 5f 42 55 53 59 2c 20 53  r SQLITE_BUSY, S
97b0: 51 4c 49 54 45 5f 44 4f 4e 45 2c 20 0a 2a 2a 20  QLITE_DONE, .** 
97c0: 53 51 4c 49 54 45 5f 52 4f 57 2c 20 53 51 4c 49  SQLITE_ROW, SQLI
97d0: 54 45 5f 45 52 52 4f 52 2c 20 6f 72 20 53 51 4c  TE_ERROR, or SQL
97e0: 49 54 45 5f 4d 49 53 55 53 45 2e 0a 2a 2a 0a 2a  ITE_MISUSE..**.*
97f0: 2a 20 53 51 4c 49 54 45 5f 42 55 53 59 20 6d 65  * SQLITE_BUSY me
9800: 61 6e 73 20 74 68 61 74 20 74 68 65 20 64 61 74  ans that the dat
9810: 61 62 61 73 65 20 65 6e 67 69 6e 65 20 61 74 74  abase engine att
9820: 65 6d 70 74 65 64 20 74 6f 20 6f 70 65 6e 0a 2a  empted to open.*
9830: 2a 20 61 20 6c 6f 63 6b 65 64 20 64 61 74 61 62  * a locked datab
9840: 61 73 65 20 61 6e 64 20 74 68 65 72 65 20 69 73  ase and there is
9850: 20 6e 6f 20 62 75 73 79 20 63 61 6c 6c 62 61 63   no busy callbac
9860: 6b 20 72 65 67 69 73 74 65 72 65 64 2e 0a 2a 2a  k registered..**
9870: 20 43 61 6c 6c 20 73 71 6c 69 74 65 33 5f 73 74   Call sqlite3_st
9880: 65 70 28 29 20 61 67 61 69 6e 20 74 6f 20 72 65  ep() again to re
9890: 74 72 79 20 74 68 65 20 6f 70 65 6e 2e 0a 2a 2a  try the open..**
98a0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20  .** SQLITE_DONE 
98b0: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 73  means that the s
98c0: 74 61 74 65 6d 65 6e 74 20 68 61 73 20 66 69 6e  tatement has fin
98d0: 69 73 68 65 64 20 65 78 65 63 75 74 69 6e 67 0a  ished executing.
98e0: 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2e  ** successfully.
98f0: 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29    sqlite3_step()
9900: 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 63   should not be c
9910: 61 6c 6c 65 64 20 61 67 61 69 6e 20 6f 6e 20 74  alled again on t
9920: 68 69 73 20 76 69 72 74 75 61 6c 0a 2a 2a 20 6d  his virtual.** m
9930: 61 63 68 69 6e 65 2e 0a 2a 2a 0a 2a 2a 20 49 66  achine..**.** If
9940: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
9950: 6e 74 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  nt being execute
9960: 64 20 72 65 74 75 72 6e 73 20 61 6e 79 20 64 61  d returns any da
9970: 74 61 2c 20 74 68 65 6e 20 0a 2a 2a 20 53 51 4c  ta, then .** SQL
9980: 49 54 45 5f 52 4f 57 20 69 73 20 72 65 74 75 72  ITE_ROW is retur
9990: 6e 65 64 20 65 61 63 68 20 74 69 6d 65 20 61 20  ned each time a 
99a0: 6e 65 77 20 72 6f 77 20 6f 66 20 64 61 74 61 20  new row of data 
99b0: 69 73 20 72 65 61 64 79 0a 2a 2a 20 66 6f 72 20  is ready.** for 
99c0: 70 72 6f 63 65 73 73 69 6e 67 20 62 79 20 74 68  processing by th
99d0: 65 20 63 61 6c 6c 65 72 2e 20 54 68 65 20 76 61  e caller. The va
99e0: 6c 75 65 73 20 6d 61 79 20 62 65 20 61 63 63 65  lues may be acce
99f0: 73 73 65 64 20 75 73 69 6e 67 0a 2a 2a 20 74 68  ssed using.** th
9a00: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
9a10: 5f 2a 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 64  _*() functions d
9a20: 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 2e 20  escribed below. 
9a30: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 0a 2a  sqlite3_step().*
9a40: 2a 20 69 73 20 63 61 6c 6c 65 64 20 61 67 61 69  * is called agai
9a50: 6e 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 68  n to retrieve th
9a60: 65 20 6e 65 78 74 20 72 6f 77 20 6f 66 20 64 61  e next row of da
9a70: 74 61 2e 0a 2a 2a 20 0a 2a 2a 20 53 51 4c 49 54  ta..** .** SQLIT
9a80: 45 5f 45 52 52 4f 52 20 6d 65 61 6e 73 20 74 68  E_ERROR means th
9a90: 61 74 20 61 20 72 75 6e 2d 74 69 6d 65 20 65 72  at a run-time er
9aa0: 72 6f 72 20 28 73 75 63 68 20 61 73 20 61 20 63  ror (such as a c
9ab0: 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a 20 76 69 6f  onstraint.** vio
9ac0: 6c 61 74 69 6f 6e 29 20 68 61 73 20 6f 63 63 75  lation) has occu
9ad0: 72 72 65 64 2e 20 20 73 71 6c 69 74 65 33 5f 73  rred.  sqlite3_s
9ae0: 74 65 70 28 29 20 73 68 6f 75 6c 64 20 6e 6f 74  tep() should not
9af0: 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e   be called again
9b00: 20 6f 6e 0a 2a 2a 20 74 68 65 20 56 4d 2e 20 4d   on.** the VM. M
9b10: 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ore information 
9b20: 6d 61 79 20 62 65 20 66 6f 75 6e 64 20 62 79 20  may be found by 
9b30: 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  calling sqlite3_
9b40: 65 72 72 6d 73 67 28 29 2e 0a 2a 2a 0a 2a 2a 20  errmsg()..**.** 
9b50: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 6d 65  SQLITE_MISUSE me
9b60: 61 6e 73 20 74 68 61 74 20 74 68 65 20 74 68 69  ans that the thi
9b70: 73 20 72 6f 75 74 69 6e 65 20 77 61 73 20 63 61  s routine was ca
9b80: 6c 6c 65 64 20 69 6e 61 70 70 72 6f 70 72 69 61  lled inappropria
9b90: 74 65 6c 79 2e 0a 2a 2a 20 50 65 72 68 61 70 73  tely..** Perhaps
9ba0: 20 69 74 20 77 61 73 20 63 61 6c 6c 65 64 20 6f   it was called o
9bb0: 6e 20 61 20 76 69 72 74 75 61 6c 20 6d 61 63 68  n a virtual mach
9bc0: 69 6e 65 20 74 68 61 74 20 68 61 64 20 61 6c 72  ine that had alr
9bd0: 65 61 64 79 20 62 65 65 6e 0a 2a 2a 20 66 69 6e  eady been.** fin
9be0: 61 6c 69 7a 65 64 20 6f 72 20 6f 6e 20 6f 6e 65  alized or on one
9bf0: 20 74 68 61 74 20 68 61 64 20 70 72 65 76 69 6f   that had previo
9c00: 75 73 6c 79 20 72 65 74 75 72 6e 65 64 20 53 51  usly returned SQ
9c10: 4c 49 54 45 5f 45 52 52 4f 52 20 6f 72 0a 2a 2a  LITE_ERROR or.**
9c20: 20 53 51 4c 49 54 45 5f 44 4f 4e 45 2e 20 20 4f   SQLITE_DONE.  O
9c30: 72 20 69 74 20 63 6f 75 6c 64 20 62 65 20 74 68  r it could be th
9c40: 65 20 63 61 73 65 20 74 68 65 20 74 68 65 20 73  e case the the s
9c50: 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ame database con
9c60: 6e 65 63 74 69 6f 6e 0a 2a 2a 20 69 73 20 62 65  nection.** is be
9c70: 69 6e 67 20 75 73 65 64 20 73 69 6d 75 6c 61 74  ing used simulat
9c80: 61 6e 65 6f 75 73 6c 79 20 62 79 20 74 77 6f 20  aneously by two 
9c90: 6f 72 20 6d 6f 72 65 20 74 68 72 65 61 64 73 2e  or more threads.
9ca0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
9cb0: 73 74 65 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  step(sqlite3_stm
9cc0: 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  t*);../*.** Retu
9cd0: 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  rn the number of
9ce0: 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 63   values in the c
9cf0: 75 72 72 65 6e 74 20 72 6f 77 20 6f 66 20 74 68  urrent row of th
9d00: 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 2a 2a  e result set..**
9d10: 0a 2a 2a 20 41 66 74 65 72 20 61 20 63 61 6c 6c  .** After a call
9d20: 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 74 65 70   to sqlite3_step
9d30: 28 29 20 74 68 61 74 20 72 65 74 75 72 6e 73 20  () that returns 
9d40: 53 51 4c 49 54 45 5f 52 4f 57 2c 20 74 68 69 73  SQLITE_ROW, this
9d50: 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 77 69 6c 6c   routine.** will
9d60: 20 72 65 74 75 72 6e 20 74 68 65 20 73 61 6d 65   return the same
9d70: 20 76 61 6c 75 65 20 61 73 20 74 68 65 20 73 71   value as the sq
9d80: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
9d90: 6e 74 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a  nt() function..*
9da0: 2a 20 41 66 74 65 72 20 73 71 6c 69 74 65 33 5f  * After sqlite3_
9db0: 73 74 65 70 28 29 20 68 61 73 20 72 65 74 75 72  step() has retur
9dc0: 6e 65 64 20 61 6e 20 53 51 4c 49 54 45 5f 44 4f  ned an SQLITE_DO
9dd0: 4e 45 2c 20 53 51 4c 49 54 45 5f 42 55 53 59 20  NE, SQLITE_BUSY 
9de0: 6f 72 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 64 65  or.** error code
9df0: 2c 20 6f 72 20 62 65 66 6f 72 65 20 73 71 6c 69  , or before sqli
9e00: 74 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 62  te3_step() has b
9e10: 65 65 6e 20 63 61 6c 6c 65 64 20 6f 6e 20 61 20  een called on a 
9e20: 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  .** compiled SQL
9e30: 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 69 73   statement, this
9e40: 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
9e50: 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e 74 20 73 71   zero..*/.int sq
9e60: 6c 69 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74  lite3_data_count
9e70: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
9e80: 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 56 61  Stmt);../*.** Va
9e90: 6c 75 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  lues are stored 
9ea0: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
9eb0: 69 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  in one of the fo
9ec0: 6c 6c 6f 77 69 6e 67 20 66 75 6e 64 61 6d 65 6e  llowing fundamen
9ed0: 74 61 6c 0a 2a 2a 20 74 79 70 65 73 2e 0a 2a 2f  tal.** types..*/
9ee0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
9ef0: 49 4e 54 45 47 45 52 20 20 31 0a 23 64 65 66 69  INTEGER  1.#defi
9f00: 6e 65 20 53 51 4c 49 54 45 5f 46 4c 4f 41 54 20  ne SQLITE_FLOAT 
9f10: 20 20 20 32 0a 2f 2a 20 23 64 65 66 69 6e 65 20     2./* #define 
9f20: 53 51 4c 49 54 45 5f 54 45 58 54 20 20 33 20 20  SQLITE_TEXT  3  
9f30: 2f 2f 20 53 65 65 20 62 65 6c 6f 77 20 2a 2f 0a  // See below */.
9f40: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42  #define SQLITE_B
9f50: 4c 4f 42 20 20 20 20 20 34 0a 23 64 65 66 69 6e  LOB     4.#defin
9f60: 65 20 53 51 4c 49 54 45 5f 4e 55 4c 4c 20 20 20  e SQLITE_NULL   
9f70: 20 20 35 0a 0a 2f 2a 0a 2a 2a 20 53 51 4c 69 74    5../*.** SQLit
9f80: 65 20 76 65 72 73 69 6f 6e 20 32 20 64 65 66 69  e version 2 defi
9f90: 6e 65 73 20 53 51 4c 49 54 45 5f 54 45 58 54 20  nes SQLITE_TEXT 
9fa0: 64 69 66 66 65 72 65 6e 74 6c 79 2e 20 20 54 6f  differently.  To
9fb0: 20 61 6c 6c 6f 77 20 62 6f 74 68 0a 2a 2a 20 76   allow both.** v
9fc0: 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 76 65 72  ersion 2 and ver
9fd0: 73 69 6f 6e 20 33 20 74 6f 20 62 65 20 69 6e 63  sion 3 to be inc
9fe0: 6c 75 64 65 64 2c 20 75 6e 64 65 66 69 6e 65 20  luded, undefine 
9ff0: 74 68 65 6d 20 62 6f 74 68 20 69 66 20 61 0a 2a  them both if a.*
a000: 2a 20 63 6f 6e 66 6c 69 63 74 20 69 73 20 73 65  * conflict is se
a010: 65 6e 2e 20 20 44 65 66 69 6e 65 20 53 51 4c 49  en.  Define SQLI
a020: 54 45 33 5f 54 45 58 54 20 74 6f 20 62 65 20 74  TE3_TEXT to be t
a030: 68 65 20 76 65 72 73 69 6f 6e 20 33 20 76 61 6c  he version 3 val
a040: 75 65 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51  ue..*/.#ifdef SQ
a050: 4c 49 54 45 5f 54 45 58 54 0a 23 20 75 6e 64 65  LITE_TEXT.# unde
a060: 66 20 53 51 4c 49 54 45 5f 54 45 58 54 0a 23 65  f SQLITE_TEXT.#e
a070: 6c 73 65 0a 23 20 64 65 66 69 6e 65 20 53 51 4c  lse.# define SQL
a080: 49 54 45 5f 54 45 58 54 20 20 20 20 20 33 0a 23  ITE_TEXT     3.#
a090: 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 53 51  endif.#define SQ
a0a0: 4c 49 54 45 33 5f 54 45 58 54 20 20 20 20 20 33  LITE3_TEXT     3
a0b0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 6e 65 78 74  ../*.** The next
a0c0: 20 67 72 6f 75 70 20 6f 66 20 72 6f 75 74 69 6e   group of routin
a0d0: 65 73 20 72 65 74 75 72 6e 73 20 69 6e 66 6f 72  es returns infor
a0e0: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
a0f0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20   information.** 
a100: 69 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  in a single colu
a110: 6d 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  mn of the curren
a120: 74 20 72 65 73 75 6c 74 20 72 6f 77 20 6f 66 20  t result row of 
a130: 61 20 71 75 65 72 79 2e 20 20 49 6e 20 65 76 65  a query.  In eve
a140: 72 79 0a 2a 2a 20 63 61 73 65 20 74 68 65 20 66  ry.** case the f
a150: 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
a160: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
a170: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
a180: 20 74 68 61 74 20 69 73 20 62 65 69 6e 67 0a 2a   that is being.*
a190: 2a 20 65 78 65 63 75 74 65 64 20 28 74 68 65 20  * executed (the 
a1a0: 73 71 6c 69 74 65 5f 73 74 6d 74 2a 20 74 68 61  sqlite_stmt* tha
a1b0: 74 20 77 61 73 20 72 65 74 75 72 6e 65 64 20 66  t was returned f
a1c0: 72 6f 6d 20 73 71 6c 69 74 65 33 5f 70 72 65 70  rom sqlite3_prep
a1d0: 61 72 65 28 29 29 20 61 6e 64 0a 2a 2a 20 74 68  are()) and.** th
a1e0: 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
a1f0: 74 20 69 73 20 74 68 65 20 69 6e 64 65 78 20 6f  t is the index o
a200: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 72  f the column for
a210: 20 77 68 69 63 68 20 69 6e 66 6f 72 6d 61 74 69   which informati
a220: 6f 6e 20 0a 2a 2a 20 73 68 6f 75 6c 64 20 62 65  on .** should be
a230: 20 72 65 74 75 72 6e 65 64 2e 20 20 69 43 6f 6c   returned.  iCol
a240: 20 69 73 20 7a 65 72 6f 2d 69 6e 64 65 78 65 64   is zero-indexed
a250: 2e 20 20 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74  .  The left-most
a260: 20 63 6f 6c 75 6d 6e 20 61 73 20 61 6e 0a 2a 2a   column as an.**
a270: 20 69 6e 64 65 78 20 6f 66 20 30 2e 0a 2a 2a 0a   index of 0..**.
a280: 2a 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73 74  ** If the SQL st
a290: 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 63  atement is not c
a2a0: 75 72 72 65 6e 74 6c 79 20 70 6f 69 6e 74 20 74  urrently point t
a2b0: 6f 20 61 20 76 61 6c 69 64 20 72 6f 77 2c 20 6f  o a valid row, o
a2c0: 72 20 69 66 20 74 68 65 0a 2a 2a 20 74 68 65 20  r if the.** the 
a2d0: 63 6f 6c 75 6c 6d 6e 20 69 6e 64 65 78 20 69 73  colulmn index is
a2e0: 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2c 20 74   out of range, t
a2f0: 68 65 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64  he result is und
a300: 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  efined..**.** Th
a310: 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61 74 74  ese routines att
a320: 65 6d 70 74 20 74 6f 20 63 6f 6e 76 65 72 74 20  empt to convert 
a330: 74 68 65 20 76 61 6c 75 65 20 77 68 65 72 65 20  the value where 
a340: 61 70 70 72 6f 70 72 69 61 74 65 2e 20 20 46 6f  appropriate.  Fo
a350: 72 0a 2a 2a 20 65 78 61 6d 70 6c 65 2c 20 69 66  r.** example, if
a360: 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 72 65   the internal re
a370: 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 73 20  presentation is 
a380: 46 4c 4f 41 54 20 61 6e 64 20 61 20 74 65 78 74  FLOAT and a text
a390: 20 72 65 73 75 6c 74 0a 2a 2a 20 69 73 20 72 65   result.** is re
a3a0: 71 75 65 73 74 65 64 2c 20 73 70 72 69 6e 74 66  quested, sprintf
a3b0: 28 29 20 69 73 20 75 73 65 64 20 69 6e 74 65 72  () is used inter
a3c0: 6e 61 6c 6c 79 20 74 6f 20 64 6f 20 74 68 65 20  nally to do the 
a3d0: 63 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a 20 61 75  conversion.** au
a3e0: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 54 68  tomatically.  Th
a3f0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62 6c  e following tabl
a400: 65 20 64 65 74 61 69 6c 73 20 74 68 65 20 63 6f  e details the co
a410: 6e 76 65 72 73 69 6f 6e 73 20 74 68 61 74 0a 2a  nversions that.*
a420: 2a 20 61 72 65 20 61 70 70 6c 69 65 64 3a 0a 2a  * are applied:.*
a430: 2a 0a 2a 2a 20 20 20 20 49 6e 74 65 72 6e 61 6c  *.**    Internal
a440: 20 54 79 70 65 20 20 20 20 52 65 71 75 65 73 74   Type    Request
a450: 65 64 20 54 79 70 65 20 20 20 20 20 43 6f 6e 76  ed Type     Conv
a460: 65 72 73 69 6f 6e 0a 2a 2a 20 20 20 20 2d 2d 2d  ersion.**    ---
a470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20 2d 2d  ----------    --
a480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20  ------------    
a490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a4a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20  ----------.**   
a4b0: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
a4c0: 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20       INTEGER    
a4d0: 20 20 20 20 20 52 65 73 75 6c 74 20 69 73 20 30       Result is 0
a4e0: 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  .**       NULL  
a4f0: 20 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54             FLOAT
a500: 20 20 20 20 20 20 20 20 20 20 20 52 65 73 75 6c             Resul
a510: 74 20 69 73 20 30 2e 30 0a 2a 2a 20 20 20 20 20  t is 0.0.**     
a520: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
a530: 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20 20     TEXT         
a540: 20 20 20 52 65 73 75 6c 74 20 69 73 20 61 6e 20     Result is an 
a550: 65 6d 70 74 79 20 73 74 72 69 6e 67 0a 2a 2a 20  empty string.** 
a560: 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
a570: 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20         BLOB     
a580: 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 69 73         Result is
a590: 20 61 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 42   a zero-length B
a5a0: 4c 4f 42 0a 2a 2a 20 20 20 20 20 20 20 49 4e 54  LOB.**       INT
a5b0: 45 47 45 52 20 20 20 20 20 20 20 20 20 20 46 4c  EGER          FL
a5c0: 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 43 6f  OAT           Co
a5d0: 6e 76 65 72 74 20 66 72 6f 6d 20 69 6e 74 65 67  nvert from integ
a5e0: 65 72 20 74 6f 20 66 6c 6f 61 74 0a 2a 2a 20 20  er to float.**  
a5f0: 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20       INTEGER    
a600: 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20 20        TEXT      
a610: 20 20 20 20 20 20 41 53 43 49 49 20 72 65 6e 64        ASCII rend
a620: 65 72 69 6e 67 20 6f 66 20 74 68 65 20 69 6e 74  ering of the int
a630: 65 67 65 72 0a 2a 2a 20 20 20 20 20 20 20 49 4e  eger.**       IN
a640: 54 45 47 45 52 20 20 20 20 20 20 20 20 20 20 42  TEGER          B
a650: 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 53  LOB            S
a660: 61 6d 65 20 61 73 20 66 6f 72 20 49 4e 54 45 47  ame as for INTEG
a670: 45 52 2d 3e 54 45 58 54 0a 2a 2a 20 20 20 20 20  ER->TEXT.**     
a680: 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20    FLOAT         
a690: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
a6a0: 20 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20     Convert from 
a6b0: 66 6c 6f 61 74 20 74 6f 20 69 6e 74 65 67 65 72  float to integer
a6c0: 0a 2a 2a 20 20 20 20 20 20 20 46 4c 4f 41 54 20  .**       FLOAT 
a6d0: 20 20 20 20 20 20 20 20 20 20 20 54 45 58 54 20             TEXT 
a6e0: 20 20 20 20 20 20 20 20 20 20 20 41 53 43 49 49             ASCII
a6f0: 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68   rendering of th
a700: 65 20 66 6c 6f 61 74 0a 2a 2a 20 20 20 20 20 20  e float.**      
a710: 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20   FLOAT          
a720: 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20    BLOB          
a730: 20 20 53 61 6d 65 20 61 73 20 46 4c 4f 41 54 2d    Same as FLOAT-
a740: 3e 54 45 58 54 0a 2a 2a 20 20 20 20 20 20 20 54  >TEXT.**       T
a750: 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20 20  EXT             
a760: 49 4e 54 45 47 45 52 20 20 20 20 20 20 20 20 20  INTEGER         
a770: 55 73 65 20 61 74 6f 69 28 29 0a 2a 2a 20 20 20  Use atoi().**   
a780: 20 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20      TEXT        
a790: 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20       FLOAT      
a7a0: 20 20 20 20 20 55 73 65 20 61 74 6f 66 28 29 0a       Use atof().
a7b0: 2a 2a 20 20 20 20 20 20 20 54 45 58 54 20 20 20  **       TEXT   
a7c0: 20 20 20 20 20 20 20 20 20 20 42 4c 4f 42 20 20            BLOB  
a7d0: 20 20 20 20 20 20 20 20 20 20 4e 6f 20 63 68 61            No cha
a7e0: 6e 67 65 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f  nge.**       BLO
a7f0: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4e  B             IN
a800: 54 45 47 45 52 20 20 20 20 20 20 20 20 20 43 6f  TEGER         Co
a810: 6e 76 65 72 74 20 74 6f 20 54 45 58 54 20 74 68  nvert to TEXT th
a820: 65 6e 20 75 73 65 20 61 74 6f 69 28 29 0a 2a 2a  en use atoi().**
a830: 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20         BLOB     
a840: 20 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20          FLOAT   
a850: 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 20          Convert 
a860: 74 6f 20 54 45 58 54 20 74 68 65 6e 20 75 73 65  to TEXT then use
a870: 20 61 74 6f 66 28 29 0a 2a 2a 20 20 20 20 20 20   atof().**      
a880: 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20   BLOB           
a890: 20 20 54 45 58 54 20 20 20 20 20 20 20 20 20 20    TEXT          
a8a0: 20 20 41 64 64 20 61 20 5c 30 30 30 20 74 65 72    Add a \000 ter
a8b0: 6d 69 6e 61 74 6f 72 20 69 66 20 6e 65 65 64 65  minator if neede
a8c0: 64 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c  d.**.** The foll
a8d0: 6f 77 69 6e 67 20 61 63 63 65 73 73 20 72 6f 75  owing access rou
a8e0: 74 69 6e 65 73 20 61 72 65 20 70 72 6f 76 69 64  tines are provid
a8f0: 65 64 3a 0a 2a 2a 0a 2a 2a 20 5f 74 79 70 65 28  ed:.**.** _type(
a900: 29 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65  )     Return the
a910: 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68 65   datatype of the
a920: 20 72 65 73 75 6c 74 2e 20 20 54 68 69 73 20 69   result.  This i
a930: 73 20 6f 6e 65 20 6f 66 0a 2a 2a 20 20 20 20 20  s one of.**     
a940: 20 20 20 20 20 20 20 20 53 51 4c 49 54 45 5f 49          SQLITE_I
a950: 4e 54 45 47 45 52 2c 20 53 51 4c 49 54 45 5f 46  NTEGER, SQLITE_F
a960: 4c 4f 41 54 2c 20 53 51 4c 49 54 45 5f 54 45 58  LOAT, SQLITE_TEX
a970: 54 2c 20 53 51 4c 49 54 45 5f 42 4c 4f 42 2c 0a  T, SQLITE_BLOB,.
a980: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 6f  **             o
a990: 72 20 53 51 4c 49 54 45 5f 4e 55 4c 4c 2e 0a 2a  r SQLITE_NULL..*
a9a0: 2a 20 5f 62 6c 6f 62 28 29 20 20 20 20 20 52 65  * _blob()     Re
a9b0: 74 75 72 6e 20 74 68 65 20 76 61 6c 75 65 20 6f  turn the value o
a9c0: 66 20 61 20 42 4c 4f 42 2e 0a 2a 2a 20 5f 62 79  f a BLOB..** _by
a9d0: 74 65 73 28 29 20 20 20 20 52 65 74 75 72 6e 20  tes()    Return 
a9e0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
a9f0: 74 65 73 20 69 6e 20 61 20 42 4c 4f 42 20 76 61  tes in a BLOB va
aa00: 6c 75 65 20 6f 72 20 74 68 65 20 6e 75 6d 62 65  lue or the numbe
aa10: 72 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  r.**            
aa20: 20 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 54   of bytes in a T
aa30: 45 58 54 20 76 61 6c 75 65 20 72 65 70 72 65 73  EXT value repres
aa40: 65 6e 74 65 64 20 61 73 20 55 54 46 2d 38 2e 20  ented as UTF-8. 
aa50: 20 54 68 65 20 5c 30 30 30 0a 2a 2a 20 20 20 20   The \000.**    
aa60: 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61           termina
aa70: 74 6f 72 20 69 73 20 69 6e 63 6c 75 64 65 64 20  tor is included 
aa80: 69 6e 20 74 68 65 20 62 79 74 65 20 63 6f 75 6e  in the byte coun
aa90: 74 20 66 6f 72 20 54 45 58 54 20 76 61 6c 75 65  t for TEXT value
aaa0: 73 2e 0a 2a 2a 20 5f 62 79 74 65 73 31 36 28 29  s..** _bytes16()
aab0: 20 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d    Return the num
aac0: 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20  ber of bytes in 
aad0: 61 20 42 4c 4f 42 20 76 61 6c 75 65 20 6f 72 20  a BLOB value or 
aae0: 74 68 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 20 20  the number.**   
aaf0: 20 20 20 20 20 20 20 20 20 20 6f 66 20 62 79 74            of byt
ab00: 65 73 20 69 6e 20 61 20 54 45 58 54 20 76 61 6c  es in a TEXT val
ab10: 75 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 61  ue represented a
ab20: 73 20 55 54 46 2d 31 36 2e 20 20 54 68 65 20 5c  s UTF-16.  The \
ab30: 75 30 30 30 30 0a 2a 2a 20 20 20 20 20 20 20 20  u0000.**        
ab40: 20 20 20 20 20 74 65 72 6d 69 6e 61 74 6f 72 20       terminator 
ab50: 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  is included in t
ab60: 68 65 20 62 79 74 65 20 63 6f 75 6e 74 20 66 6f  he byte count fo
ab70: 72 20 54 45 58 54 20 76 61 6c 75 65 73 2e 0a 2a  r TEXT values..*
ab80: 2a 20 5f 64 6f 75 62 6c 65 28 29 20 20 20 52 65  * _double()   Re
ab90: 74 75 72 6e 20 61 20 46 4c 4f 41 54 20 76 61 6c  turn a FLOAT val
aba0: 75 65 2e 0a 2a 2a 20 5f 69 6e 74 28 29 20 20 20  ue..** _int()   
abb0: 20 20 20 52 65 74 75 72 6e 20 61 6e 20 49 4e 54     Return an INT
abc0: 45 47 45 52 20 76 61 6c 75 65 20 69 6e 20 74 68  EGER value in th
abd0: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 27  e host computer'
abe0: 73 20 6e 61 74 69 76 65 0a 2a 2a 20 20 20 20 20  s native.**     
abf0: 20 20 20 20 20 20 20 20 69 6e 74 65 67 65 72 20          integer 
ac00: 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 2e 20  representation. 
ac10: 20 54 68 69 73 20 6d 69 67 68 74 20 62 65 20 65   This might be e
ac20: 69 74 68 65 72 20 61 20 33 32 2d 20 6f 72 20 36  ither a 32- or 6
ac30: 34 2d 62 69 74 0a 2a 2a 20 20 20 20 20 20 20 20  4-bit.**        
ac40: 20 20 20 20 20 69 6e 74 65 67 65 72 20 64 65 70       integer dep
ac50: 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 68 6f  ending on the ho
ac60: 73 74 2e 0a 2a 2a 20 5f 69 6e 74 36 34 28 29 20  st..** _int64() 
ac70: 20 20 20 52 65 74 75 72 6e 20 61 6e 20 49 4e 54     Return an INT
ac80: 45 47 45 52 20 76 61 6c 75 65 20 61 73 20 61 20  EGER value as a 
ac90: 36 34 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e  64-bit signed in
aca0: 74 65 67 65 72 2e 0a 2a 2a 20 5f 74 65 78 74 28  teger..** _text(
acb0: 29 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65  )     Return the
acc0: 20 76 61 6c 75 65 20 61 73 20 55 54 46 2d 38 20   value as UTF-8 
acd0: 74 65 78 74 2e 0a 2a 2a 20 5f 74 65 78 74 31 36  text..** _text16
ace0: 28 29 20 20 20 52 65 74 75 72 6e 20 74 68 65 20  ()   Return the 
acf0: 76 61 6c 75 65 20 61 73 20 55 54 46 2d 31 36 20  value as UTF-16 
ad00: 74 65 78 74 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76  text..*/.const v
ad10: 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  oid *sqlite3_col
ad20: 75 6d 6e 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33  umn_blob(sqlite3
ad30: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
ad40: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
ad50: 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 73 71 6c 69  olumn_bytes(sqli
ad60: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
ad70: 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  Col);.int sqlite
ad80: 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36  3_column_bytes16
ad90: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
ada0: 69 6e 74 20 69 43 6f 6c 29 3b 0a 64 6f 75 62 6c  int iCol);.doubl
adb0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
adc0: 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f  _double(sqlite3_
add0: 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29  stmt*, int iCol)
ade0: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  ;.int sqlite3_co
adf0: 6c 75 6d 6e 5f 69 6e 74 28 73 71 6c 69 74 65 33  lumn_int(sqlite3
ae00: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
ae10: 29 3b 0a 73 71 6c 69 74 65 5f 69 6e 74 36 34 20  );.sqlite_int64 
ae20: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
ae30: 6e 74 36 34 28 73 71 6c 69 74 65 33 5f 73 74 6d  nt64(sqlite3_stm
ae40: 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 63  t*, int iCol);.c
ae50: 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68  onst unsigned ch
ae60: 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ar *sqlite3_colu
ae70: 6d 6e 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f  mn_text(sqlite3_
ae80: 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29  stmt*, int iCol)
ae90: 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  ;.const void *sq
aea0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
aeb0: 74 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  t16(sqlite3_stmt
aec0: 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e  *, int iCol);.in
aed0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
aee0: 5f 74 79 70 65 28 73 71 6c 69 74 65 33 5f 73 74  _type(sqlite3_st
aef0: 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a  mt*, int iCol);.
af00: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
af10: 6d 6e 5f 6e 75 6d 65 72 69 63 5f 74 79 70 65 28  mn_numeric_type(
af20: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
af30: 6e 74 20 69 43 6f 6c 29 3b 0a 73 71 6c 69 74 65  nt iCol);.sqlite
af40: 33 5f 76 61 6c 75 65 20 2a 73 71 6c 69 74 65 33  3_value *sqlite3
af50: 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75 65 28 73 71  _column_value(sq
af60: 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
af70: 20 69 43 6f 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54   iCol);../*.** T
af80: 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  he sqlite3_final
af90: 69 7a 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69  ize() function i
afa0: 73 20 63 61 6c 6c 65 64 20 74 6f 20 64 65 6c 65  s called to dele
afb0: 74 65 20 61 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a  te a compiled.**
afc0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 6f   SQL statement o
afd0: 62 74 61 69 6e 65 64 20 62 79 20 61 20 70 72 65  btained by a pre
afe0: 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20 73 71  vious call to sq
aff0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 0a  lite3_prepare().
b000: 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33 5f 70 72  ** or sqlite3_pr
b010: 65 70 61 72 65 31 36 28 29 2e 20 49 66 20 74 68  epare16(). If th
b020: 65 20 73 74 61 74 65 6d 65 6e 74 20 77 61 73 20  e statement was 
b030: 65 78 65 63 75 74 65 64 20 73 75 63 63 65 73 73  executed success
b040: 66 75 6c 6c 79 2c 20 6f 72 0a 2a 2a 20 6e 6f 74  fully, or.** not
b050: 20 65 78 65 63 75 74 65 64 20 61 74 20 61 6c 6c   executed at all
b060: 2c 20 74 68 65 6e 20 53 51 4c 49 54 45 5f 4f 4b  , then SQLITE_OK
b070: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49 66   is returned. If
b080: 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 74 68   execution of th
b090: 65 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 66  e.** statement f
b0a0: 61 69 6c 65 64 20 74 68 65 6e 20 61 6e 20 65 72  ailed then an er
b0b0: 72 6f 72 20 63 6f 64 65 20 69 73 20 72 65 74 75  ror code is retu
b0c0: 72 6e 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 54 68 69  rned. .**.** Thi
b0d0: 73 20 72 6f 75 74 69 6e 65 20 63 61 6e 20 62 65  s routine can be
b0e0: 20 63 61 6c 6c 65 64 20 61 74 20 61 6e 79 20 70   called at any p
b0f0: 6f 69 6e 74 20 64 75 72 69 6e 67 20 74 68 65 20  oint during the 
b100: 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 74 68 65  execution of the
b110: 0a 2a 2a 20 76 69 72 74 75 61 6c 20 6d 61 63 68  .** virtual mach
b120: 69 6e 65 2e 20 20 49 66 20 74 68 65 20 76 69 72  ine.  If the vir
b130: 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 68 61 73  tual machine has
b140: 20 6e 6f 74 20 63 6f 6d 70 6c 65 74 65 64 20 65   not completed e
b150: 78 65 63 75 74 69 6f 6e 0a 2a 2a 20 77 68 65 6e  xecution.** when
b160: 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73   this routine is
b170: 20 63 61 6c 6c 65 64 2c 20 74 68 61 74 20 69 73   called, that is
b180: 20 6c 69 6b 65 20 65 6e 63 6f 75 6e 74 65 72 69   like encounteri
b190: 6e 67 20 61 6e 20 65 72 72 6f 72 20 6f 72 0a 2a  ng an error or.*
b1a0: 2a 20 61 6e 20 69 6e 74 65 72 72 75 70 74 2e 20  * an interrupt. 
b1b0: 20 28 53 65 65 20 73 71 6c 69 74 65 33 5f 69 6e   (See sqlite3_in
b1c0: 74 65 72 72 75 70 74 28 29 2e 29 20 20 49 6e 63  terrupt().)  Inc
b1d0: 6f 6d 70 6c 65 74 65 20 75 70 64 61 74 65 73 20  omplete updates 
b1e0: 6d 61 79 20 62 65 0a 2a 2a 20 72 6f 6c 6c 65 64  may be.** rolled
b1f0: 20 62 61 63 6b 20 61 6e 64 20 74 72 61 6e 73 61   back and transa
b200: 63 74 69 6f 6e 73 20 63 61 6e 63 65 6c 6c 65 64  ctions cancelled
b210: 2c 20 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  ,  depending on 
b220: 74 68 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65  the circumstance
b230: 73 2c 0a 2a 2a 20 61 6e 64 20 74 68 65 20 72 65  s,.** and the re
b240: 73 75 6c 74 20 63 6f 64 65 20 72 65 74 75 72 6e  sult code return
b250: 65 64 20 77 69 6c 6c 20 62 65 20 53 51 4c 49 54  ed will be SQLIT
b260: 45 5f 41 42 4f 52 54 2e 0a 2a 2f 0a 69 6e 74 20  E_ABORT..*/.int 
b270: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
b280: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
b290: 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  Stmt);../*.** Th
b2a0: 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28  e sqlite3_reset(
b2b0: 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61  ) function is ca
b2c0: 6c 6c 65 64 20 74 6f 20 72 65 73 65 74 20 61 20  lled to reset a 
b2d0: 63 6f 6d 70 69 6c 65 64 20 53 51 4c 0a 2a 2a 20  compiled SQL.** 
b2e0: 73 74 61 74 65 6d 65 6e 74 20 6f 62 74 61 69 6e  statement obtain
b2f0: 65 64 20 62 79 20 61 20 70 72 65 76 69 6f 75 73  ed by a previous
b300: 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
b310: 5f 70 72 65 70 61 72 65 28 29 20 6f 72 0a 2a 2a  _prepare() or.**
b320: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
b330: 31 36 28 29 20 62 61 63 6b 20 74 6f 20 69 74 27  16() back to it'
b340: 73 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 2c  s initial state,
b350: 20 72 65 61 64 79 20 74 6f 20 62 65 20 72 65 2d   ready to be re-
b360: 65 78 65 63 75 74 65 64 2e 0a 2a 2a 20 41 6e 79  executed..** Any
b370: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 76   SQL statement v
b380: 61 72 69 61 62 6c 65 73 20 74 68 61 74 20 68 61  ariables that ha
b390: 64 20 76 61 6c 75 65 73 20 62 6f 75 6e 64 20 74  d values bound t
b3a0: 6f 20 74 68 65 6d 20 75 73 69 6e 67 0a 2a 2a 20  o them using.** 
b3b0: 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  the sqlite3_bind
b3c0: 5f 2a 28 29 20 41 50 49 20 72 65 74 61 69 6e 20  _*() API retain 
b3d0: 74 68 65 69 72 20 76 61 6c 75 65 73 2e 0a 2a 2f  their values..*/
b3e0: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 73  .int sqlite3_res
b3f0: 65 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  et(sqlite3_stmt 
b400: 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  *pStmt);../*.** 
b410: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77  The following tw
b420: 6f 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  o functions are 
b430: 75 73 65 64 20 74 6f 20 61 64 64 20 75 73 65 72  used to add user
b440: 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 61 67   functions or ag
b450: 67 72 65 67 61 74 65 73 0a 2a 2a 20 69 6d 70 6c  gregates.** impl
b460: 65 6d 65 6e 74 65 64 20 69 6e 20 43 20 74 6f 20  emented in C to 
b470: 74 68 65 20 53 51 4c 20 6c 61 6e 67 61 75 67 65  the SQL langauge
b480: 20 69 6e 74 65 72 70 72 65 74 65 64 20 62 79 20   interpreted by 
b490: 53 51 4c 69 74 65 2e 20 54 68 65 0a 2a 2a 20 64  SQLite. The.** d
b4a0: 69 66 66 65 72 65 6e 63 65 20 6f 6e 6c 79 20 62  ifference only b
b4b0: 65 74 77 65 65 6e 20 74 68 65 20 74 77 6f 20 69  etween the two i
b4c0: 73 20 74 68 61 74 20 74 68 65 20 73 65 63 6f 6e  s that the secon
b4d0: 64 20 70 61 72 61 6d 65 74 65 72 2c 20 74 68 65  d parameter, the
b4e0: 0a 2a 2a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  .** name of the 
b4f0: 28 73 63 61 6c 61 72 29 20 66 75 6e 63 74 69 6f  (scalar) functio
b500: 6e 20 6f 72 20 61 67 67 72 65 67 61 74 65 2c 20  n or aggregate, 
b510: 69 73 20 65 6e 63 6f 64 65 64 20 69 6e 20 55 54  is encoded in UT
b520: 46 2d 38 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74  F-8 for.** sqlit
b530: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
b540: 6f 6e 28 29 20 61 6e 64 20 55 54 46 2d 31 36 20  on() and UTF-16 
b550: 66 6f 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  for sqlite3_crea
b560: 74 65 5f 66 75 6e 63 74 69 6f 6e 31 36 28 29 2e  te_function16().
b570: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  .**.** The first
b580: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
b590: 20 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   database handle
b5a0: 20 74 68 61 74 20 74 68 65 20 6e 65 77 20 66 75   that the new fu
b5b0: 6e 63 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61 67 67  nction or.** agg
b5c0: 72 65 67 61 74 65 20 69 73 20 74 6f 20 62 65 20  regate is to be 
b5d0: 61 64 64 65 64 20 74 6f 2e 20 49 66 20 61 20 73  added to. If a s
b5e0: 69 6e 67 6c 65 20 70 72 6f 67 72 61 6d 20 75 73  ingle program us
b5f0: 65 73 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65  es more than one
b600: 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61 6e  .** database han
b610: 64 6c 65 20 69 6e 74 65 72 6e 61 6c 6c 79 2c 20  dle internally, 
b620: 74 68 65 6e 20 75 73 65 72 20 66 75 6e 63 74 69  then user functi
b630: 6f 6e 73 20 6f 72 20 61 67 67 72 65 67 61 74 65  ons or aggregate
b640: 73 20 6d 75 73 74 20 0a 2a 2a 20 62 65 20 61 64  s must .** be ad
b650: 64 65 64 20 69 6e 64 69 76 69 64 75 61 6c 6c 79  ded individually
b660: 20 74 6f 20 65 61 63 68 20 64 61 74 61 62 61 73   to each databas
b670: 65 20 68 61 6e 64 6c 65 20 77 69 74 68 20 77 68  e handle with wh
b680: 69 63 68 20 74 68 65 79 20 77 69 6c 6c 20 62 65  ich they will be
b690: 0a 2a 2a 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20  .** used..**.** 
b6a0: 54 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  The third parame
b6b0: 74 65 72 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ter is the numbe
b6c0: 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74  r of arguments t
b6d0: 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  hat the function
b6e0: 20 6f 72 0a 2a 2a 20 61 67 67 72 65 67 61 74 65   or.** aggregate
b6f0: 20 74 61 6b 65 73 2e 20 49 66 20 74 68 69 73 20   takes. If this 
b700: 70 61 72 61 6d 65 74 65 72 20 69 73 20 6e 65 67  parameter is neg
b710: 61 74 69 76 65 2c 20 74 68 65 6e 20 74 68 65 20  ative, then the 
b720: 66 75 6e 63 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61  function or.** a
b730: 67 67 72 65 67 61 74 65 20 6d 61 79 20 74 61 6b  ggregate may tak
b740: 65 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20  e any number of 
b750: 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a  arguments..**.**
b760: 20 54 68 65 20 66 6f 75 72 74 68 20 70 61 72 61   The fourth para
b770: 6d 65 74 65 72 20 69 73 20 6f 6e 65 20 6f 66 20  meter is one of 
b780: 53 51 4c 49 54 45 5f 55 54 46 2a 20 76 61 6c 75  SQLITE_UTF* valu
b790: 65 73 20 64 65 66 69 6e 65 64 20 62 65 6c 6f 77  es defined below
b7a0: 2c 0a 2a 2a 20 69 6e 64 69 63 61 74 69 6e 67 20  ,.** indicating 
b7b0: 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 74 68 61  the encoding tha
b7c0: 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69  t the function i
b7d0: 73 20 6d 6f 73 74 20 6c 69 6b 65 6c 79 20 74 6f  s most likely to
b7e0: 20 68 61 6e 64 6c 65 0a 2a 2a 20 76 61 6c 75 65   handle.** value
b7f0: 73 20 69 6e 2e 20 20 54 68 69 73 20 64 6f 65 73  s in.  This does
b800: 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20   not change the 
b810: 62 65 68 61 76 69 6f 75 72 20 6f 66 20 74 68 65  behaviour of the
b820: 20 70 72 6f 67 72 61 6d 6d 69 6e 67 0a 2a 2a 20   programming.** 
b830: 69 6e 74 65 72 66 61 63 65 2e 20 48 6f 77 65 76  interface. Howev
b840: 65 72 2c 20 69 66 20 74 77 6f 20 76 65 72 73 69  er, if two versi
b850: 6f 6e 73 20 6f 66 20 74 68 65 20 73 61 6d 65 20  ons of the same 
b860: 66 75 6e 63 74 69 6f 6e 20 61 72 65 20 72 65 67  function are reg
b870: 69 73 74 65 72 65 64 0a 2a 2a 20 77 69 74 68 20  istered.** with 
b880: 64 69 66 66 65 72 65 6e 74 20 65 6e 63 6f 64 69  different encodi
b890: 6e 67 20 76 61 6c 75 65 73 2c 20 53 51 4c 69 74  ng values, SQLit
b8a0: 65 20 69 6e 76 6f 6b 65 73 20 74 68 65 20 76 65  e invokes the ve
b8b0: 72 73 69 6f 6e 20 6c 69 6b 65 6c 79 20 74 6f 0a  rsion likely to.
b8c0: 2a 2a 20 6d 69 6e 69 6d 69 7a 65 20 63 6f 6e 76  ** minimize conv
b8d0: 65 72 73 69 6f 6e 73 20 62 65 74 77 65 65 6e 20  ersions between 
b8e0: 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 73 2e 0a  text encodings..
b8f0: 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 76 65 6e 74  **.** The sevent
b900: 68 2c 20 65 69 67 68 74 68 20 61 6e 64 20 6e 69  h, eighth and ni
b910: 6e 74 68 20 70 61 72 61 6d 65 74 65 72 73 2c 20  nth parameters, 
b920: 78 46 75 6e 63 2c 20 78 53 74 65 70 20 61 6e 64  xFunc, xStep and
b930: 20 78 46 69 6e 61 6c 2c 20 61 72 65 0a 2a 2a 20   xFinal, are.** 
b940: 70 6f 69 6e 74 65 72 73 20 74 6f 20 75 73 65 72  pointers to user
b950: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 43 20 66   implemented C f
b960: 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 69 6d  unctions that im
b970: 70 6c 65 6d 65 6e 74 20 74 68 65 20 75 73 65 72  plement the user
b980: 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20  .** function or 
b990: 61 67 67 72 65 67 61 74 65 2e 20 41 20 73 63 61  aggregate. A sca
b9a0: 6c 61 72 20 66 75 6e 63 74 69 6f 6e 20 72 65 71  lar function req
b9b0: 75 69 72 65 73 20 61 6e 20 69 6d 70 6c 65 6d 65  uires an impleme
b9c0: 6e 74 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20 74 68  ntation of.** th
b9d0: 65 20 78 46 75 6e 63 20 63 61 6c 6c 62 61 63 6b  e xFunc callback
b9e0: 20 6f 6e 6c 79 2c 20 4e 55 4c 4c 20 70 6f 69 6e   only, NULL poin
b9f0: 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 70  ters should be p
ba00: 61 73 73 65 64 20 61 73 20 74 68 65 20 78 53 74  assed as the xSt
ba10: 65 70 0a 2a 2a 20 61 6e 64 20 78 46 69 6e 61 6c  ep.** and xFinal
ba20: 20 70 61 72 61 6d 65 74 65 72 73 2e 20 41 6e 20   parameters. An 
ba30: 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
ba40: 6f 6e 20 72 65 71 75 69 72 65 73 20 61 6e 20 69  on requires an i
ba50: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a  mplementation.**
ba60: 20 6f 66 20 78 53 74 65 70 20 61 6e 64 20 78 46   of xStep and xF
ba70: 69 6e 61 6c 2c 20 62 75 74 20 4e 55 4c 4c 20 73  inal, but NULL s
ba80: 68 6f 75 6c 64 20 62 65 20 70 61 73 73 65 64 20  hould be passed 
ba90: 66 6f 72 20 78 46 75 6e 63 2e 20 54 6f 20 64 65  for xFunc. To de
baa0: 6c 65 74 65 20 61 6e 0a 2a 2a 20 65 78 69 73 74  lete an.** exist
bab0: 69 6e 67 20 75 73 65 72 20 66 75 6e 63 74 69 6f  ing user functio
bac0: 6e 20 6f 72 20 61 67 67 72 65 67 61 74 65 2c 20  n or aggregate, 
bad0: 70 61 73 73 20 4e 55 4c 4c 20 66 6f 72 20 61 6c  pass NULL for al
bae0: 6c 20 74 68 72 65 65 20 66 75 6e 63 74 69 6f 6e  l three function
baf0: 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 2e 20 53 70  .** callback. Sp
bb00: 65 63 69 66 79 69 6e 67 20 61 6e 20 69 6e 63 6f  ecifying an inco
bb10: 6e 73 74 65 6e 74 20 73 65 74 20 6f 66 20 63 61  nstent set of ca
bb20: 6c 6c 62 61 63 6b 20 76 61 6c 75 65 73 2c 20 73  llback values, s
bb30: 75 63 68 20 61 73 20 61 6e 0a 2a 2a 20 78 46 75  uch as an.** xFu
bb40: 6e 63 20 61 6e 64 20 61 6e 20 78 46 69 6e 61 6c  nc and an xFinal
bb50: 2c 20 6f 72 20 61 6e 20 78 53 74 65 70 20 62 75  , or an xStep bu
bb60: 74 20 6e 6f 20 78 46 69 6e 61 6c 2c 20 53 51 4c  t no xFinal, SQL
bb70: 49 54 45 5f 45 52 52 4f 52 20 69 73 0a 2a 2a 20  ITE_ERROR is.** 
bb80: 72 65 74 75 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74  returned..*/.int
bb90: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
bba0: 66 75 6e 63 74 69 6f 6e 28 0a 20 20 73 71 6c 69  function(.  sqli
bbb0: 74 65 33 20 2a 2c 0a 20 20 63 6f 6e 73 74 20 63  te3 *,.  const c
bbc0: 68 61 72 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e 61  har *zFunctionNa
bbd0: 6d 65 2c 0a 20 20 69 6e 74 20 6e 41 72 67 2c 0a  me,.  int nArg,.
bbe0: 20 20 69 6e 74 20 65 54 65 78 74 52 65 70 2c 0a    int eTextRep,.
bbf0: 20 20 76 6f 69 64 2a 2c 0a 20 20 76 6f 69 64 20    void*,.  void 
bc00: 28 2a 78 46 75 6e 63 29 28 73 71 6c 69 74 65 33  (*xFunc)(sqlite3
bc10: 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71  _context*,int,sq
bc20: 6c 69 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a  lite3_value**),.
bc30: 20 20 76 6f 69 64 20 28 2a 78 53 74 65 70 29 28    void (*xStep)(
bc40: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
bc50: 2c 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61 6c  ,int,sqlite3_val
bc60: 75 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28 2a  ue**),.  void (*
bc70: 78 46 69 6e 61 6c 29 28 73 71 6c 69 74 65 33 5f  xFinal)(sqlite3_
bc80: 63 6f 6e 74 65 78 74 2a 29 0a 29 3b 0a 69 6e 74  context*).);.int
bc90: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
bca0: 66 75 6e 63 74 69 6f 6e 31 36 28 0a 20 20 73 71  function16(.  sq
bcb0: 6c 69 74 65 33 2a 2c 0a 20 20 63 6f 6e 73 74 20  lite3*,.  const 
bcc0: 76 6f 69 64 20 2a 7a 46 75 6e 63 74 69 6f 6e 4e  void *zFunctionN
bcd0: 61 6d 65 2c 0a 20 20 69 6e 74 20 6e 41 72 67 2c  ame,.  int nArg,
bce0: 0a 20 20 69 6e 74 20 65 54 65 78 74 52 65 70 2c  .  int eTextRep,
bcf0: 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 76 6f 69 64  .  void*,.  void
bd00: 20 28 2a 78 46 75 6e 63 29 28 73 71 6c 69 74 65   (*xFunc)(sqlite
bd10: 33 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73  3_context*,int,s
bd20: 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c  qlite3_value**),
bd30: 0a 20 20 76 6f 69 64 20 28 2a 78 53 74 65 70 29  .  void (*xStep)
bd40: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
bd50: 2a 2c 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61  *,int,sqlite3_va
bd60: 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28  lue**),.  void (
bd70: 2a 78 46 69 6e 61 6c 29 28 73 71 6c 69 74 65 33  *xFinal)(sqlite3
bd80: 5f 63 6f 6e 74 65 78 74 2a 29 0a 29 3b 0a 0a 2f  _context*).);../
bd90: 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69  *.** This functi
bda0: 6f 6e 20 69 73 20 64 65 70 72 65 63 61 74 65 64  on is deprecated
bdb0: 2e 20 20 44 6f 20 6e 6f 74 20 75 73 65 20 69 74  .  Do not use it
bdc0: 2e 20 20 49 74 20 63 6f 6e 74 69 6e 75 65 73 20  .  It continues 
bdd0: 74 6f 20 65 78 69 73 74 0a 2a 2a 20 73 6f 20 61  to exist.** so a
bde0: 73 20 6e 6f 74 20 74 6f 20 62 72 65 61 6b 20 6c  s not to break l
bdf0: 65 67 61 63 79 20 63 6f 64 65 2e 20 20 42 75 74  egacy code.  But
be00: 20 6e 65 77 20 63 6f 64 65 20 73 68 6f 75 6c 64   new code should
be10: 20 61 76 6f 69 64 20 75 73 69 6e 67 20 69 74 2e   avoid using it.
be20: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
be30: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
be40: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
be50: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 6e 65  );../*.** The ne
be60: 78 74 20 67 72 6f 75 70 20 6f 66 20 72 6f 75 74  xt group of rout
be70: 69 6e 65 73 20 72 65 74 75 72 6e 73 20 69 6e 66  ines returns inf
be80: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 70  ormation about p
be90: 61 72 61 6d 65 74 65 72 73 20 74 6f 0a 2a 2a 20  arameters to.** 
bea0: 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66  a user-defined f
beb0: 75 6e 63 74 69 6f 6e 2e 20 20 46 75 6e 63 74 69  unction.  Functi
bec0: 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  on implementatio
bed0: 6e 73 20 75 73 65 20 74 68 65 73 65 20 72 6f 75  ns use these rou
bee0: 74 69 6e 65 73 0a 2a 2a 20 74 6f 20 61 63 63 65  tines.** to acce
bef0: 73 73 20 74 68 65 69 72 20 70 61 72 61 6d 65 74  ss their paramet
bf00: 65 72 73 2e 20 20 54 68 65 73 65 20 72 6f 75 74  ers.  These rout
bf10: 69 6e 65 73 20 61 72 65 20 74 68 65 20 73 61 6d  ines are the sam
bf20: 65 20 61 73 20 74 68 65 0a 2a 2a 20 73 71 6c 69  e as the.** sqli
bf30: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 2a 20 72 6f 75  te3_column_* rou
bf40: 74 69 6e 65 73 20 65 78 63 65 70 74 20 74 68 61  tines except tha
bf50: 74 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  t these routines
bf60: 20 74 61 6b 65 20 61 20 73 69 6e 67 6c 65 0a 2a   take a single.*
bf70: 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  * sqlite3_value*
bf80: 20 70 6f 69 6e 74 65 72 20 69 6e 73 74 65 61 64   pointer instead
bf90: 20 6f 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 73   of an sqlite3_s
bfa0: 74 6d 74 2a 20 61 6e 64 20 61 6e 20 69 6e 74 65  tmt* and an inte
bfb0: 67 65 72 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 6e 75  ger.** column nu
bfc0: 6d 62 65 72 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76  mber..*/.const v
bfd0: 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 76 61 6c  oid *sqlite3_val
bfe0: 75 65 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f  ue_blob(sqlite3_
bff0: 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c  value*);.int sql
c000: 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
c010: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29  (sqlite3_value*)
c020: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  ;.int sqlite3_va
c030: 6c 75 65 5f 62 79 74 65 73 31 36 28 73 71 6c 69  lue_bytes16(sqli
c040: 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 64 6f 75  te3_value*);.dou
c050: 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ble sqlite3_valu
c060: 65 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33  e_double(sqlite3
c070: 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71  _value*);.int sq
c080: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28  lite3_value_int(
c090: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
c0a0: 0a 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 73 71  .sqlite_int64 sq
c0b0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
c0c0: 34 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a  4(sqlite3_value*
c0d0: 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65  );.const unsigne
c0e0: 64 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f  d char *sqlite3_
c0f0: 76 61 6c 75 65 5f 74 65 78 74 28 73 71 6c 69 74  value_text(sqlit
c100: 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f 6e 73  e3_value*);.cons
c110: 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  t void *sqlite3_
c120: 76 61 6c 75 65 5f 74 65 78 74 31 36 28 73 71 6c  value_text16(sql
c130: 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 63 6f  ite3_value*);.co
c140: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
c150: 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 6c 65  3_value_text16le
c160: 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29  (sqlite3_value*)
c170: 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  ;.const void *sq
c180: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
c190: 31 36 62 65 28 73 71 6c 69 74 65 33 5f 76 61 6c  16be(sqlite3_val
c1a0: 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  ue*);.int sqlite
c1b0: 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 73 71 6c  3_value_type(sql
c1c0: 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e  ite3_value*);.in
c1d0: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
c1e0: 6e 75 6d 65 72 69 63 5f 74 79 70 65 28 73 71 6c  numeric_type(sql
c1f0: 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 0a 2f  ite3_value*);../
c200: 2a 0a 2a 2a 20 41 67 67 72 65 67 61 74 65 20 66  *.** Aggregate f
c210: 75 6e 63 74 69 6f 6e 73 20 75 73 65 20 74 68 65  unctions use the
c220: 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69   following routi
c230: 6e 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 0a 2a  ne to allocate.*
c240: 2a 20 61 20 73 74 72 75 63 74 75 72 65 20 66 6f  * a structure fo
c250: 72 20 73 74 6f 72 69 6e 67 20 74 68 65 69 72 20  r storing their 
c260: 73 74 61 74 65 2e 20 20 54 68 65 20 66 69 72 73  state.  The firs
c270: 74 20 74 69 6d 65 20 74 68 69 73 20 72 6f 75 74  t time this rout
c280: 69 6e 65 0a 2a 2a 20 69 73 20 63 61 6c 6c 65 64  ine.** is called
c290: 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61   for a particula
c2a0: 72 20 61 67 67 72 65 67 61 74 65 2c 20 61 20 6e  r aggregate, a n
c2b0: 65 77 20 73 74 72 75 63 74 75 72 65 20 6f 66 20  ew structure of 
c2c0: 73 69 7a 65 20 6e 42 79 74 65 73 0a 2a 2a 20 69  size nBytes.** i
c2d0: 73 20 61 6c 6c 6f 63 61 74 65 64 2c 20 7a 65 72  s allocated, zer
c2e0: 6f 65 64 2c 20 61 6e 64 20 72 65 74 75 72 6e 65  oed, and returne
c2f0: 64 2e 20 20 4f 6e 20 73 75 62 73 65 71 75 65 6e  d.  On subsequen
c300: 74 20 63 61 6c 6c 73 20 28 66 6f 72 20 74 68 65  t calls (for the
c310: 0a 2a 2a 20 73 61 6d 65 20 61 67 67 72 65 67 61  .** same aggrega
c320: 74 65 20 69 6e 73 74 61 6e 63 65 29 20 74 68 65  te instance) the
c330: 20 73 61 6d 65 20 62 75 66 66 65 72 20 69 73 20   same buffer is 
c340: 72 65 74 75 72 6e 65 64 2e 20 20 54 68 65 20 69  returned.  The i
c350: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a  mplementation.**
c360: 20 6f 66 20 74 68 65 20 61 67 67 72 65 67 61 74   of the aggregat
c370: 65 20 63 61 6e 20 75 73 65 20 74 68 65 20 72 65  e can use the re
c380: 74 75 72 6e 65 64 20 62 75 66 66 65 72 20 74 6f  turned buffer to
c390: 20 61 63 63 75 6d 75 6c 61 74 65 20 64 61 74 61   accumulate data
c3a0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 62 75 66 66  ..**.** The buff
c3b0: 65 72 20 61 6c 6c 6f 63 61 74 65 64 20 69 73 20  er allocated is 
c3c0: 66 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61  freed automatica
c3d0: 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 2e 0a 2a  lly by SQLite..*
c3e0: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
c3f0: 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
c400: 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t(sqlite3_contex
c410: 74 2a 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b  t*, int nBytes);
c420: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 70 55 73 65  ../*.** The pUse
c430: 72 44 61 74 61 20 70 61 72 61 6d 65 74 65 72 20  rData parameter 
c440: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  to the sqlite3_c
c450: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
c460: 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 75 73 65 64  .** routine used
c470: 20 74 6f 20 72 65 67 69 73 74 65 72 20 75 73 65   to register use
c480: 72 20 66 75 6e 63 74 69 6f 6e 73 20 69 73 20 61  r functions is a
c490: 76 61 69 6c 61 62 6c 65 20 74 6f 0a 2a 2a 20 74  vailable to.** t
c4a0: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
c4b0: 6e 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f  n of the functio
c4c0: 6e 20 75 73 69 6e 67 20 74 68 69 73 20 63 61 6c  n using this cal
c4d0: 6c 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69  l..*/.void *sqli
c4e0: 74 65 33 5f 75 73 65 72 5f 64 61 74 61 28 73 71  te3_user_data(sq
c4f0: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 29 3b  lite3_context*);
c500: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c  ../*.** The foll
c510: 6f 77 69 6e 67 20 74 77 6f 20 66 75 6e 63 74 69  owing two functi
c520: 6f 6e 73 20 6d 61 79 20 62 65 20 75 73 65 64 20  ons may be used 
c530: 62 79 20 73 63 61 6c 61 72 20 75 73 65 72 20 66  by scalar user f
c540: 75 6e 63 74 69 6f 6e 73 20 74 6f 0a 2a 2a 20 61  unctions to.** a
c550: 73 73 6f 63 69 61 74 65 20 6d 65 74 61 2d 64 61  ssociate meta-da
c560: 74 61 20 77 69 74 68 20 61 72 67 75 6d 65 6e 74  ta with argument
c570: 20 76 61 6c 75 65 73 2e 20 49 66 20 74 68 65 20   values. If the 
c580: 73 61 6d 65 20 76 61 6c 75 65 20 69 73 20 70 61  same value is pa
c590: 73 73 65 64 20 74 6f 0a 2a 2a 20 6d 75 6c 74 69  ssed to.** multi
c5a0: 70 6c 65 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20  ple invocations 
c5b0: 6f 66 20 74 68 65 20 75 73 65 72 2d 66 75 6e 63  of the user-func
c5c0: 74 69 6f 6e 20 64 75 72 69 6e 67 20 71 75 65 72  tion during quer
c5d0: 79 20 65 78 65 63 75 74 69 6f 6e 2c 20 75 6e 64  y execution, und
c5e0: 65 72 0a 2a 2a 20 73 6f 6d 65 20 63 69 72 63 75  er.** some circu
c5f0: 6d 73 74 61 6e 63 65 73 20 74 68 65 20 61 73 73  mstances the ass
c600: 6f 63 69 61 74 65 64 20 6d 65 74 61 2d 64 61 74  ociated meta-dat
c610: 61 20 6d 61 79 20 62 65 20 70 72 65 73 65 72 76  a may be preserv
c620: 65 64 2e 20 54 68 69 73 20 6d 61 79 0a 2a 2a 20  ed. This may.** 
c630: 62 65 20 75 73 65 64 2c 20 66 6f 72 20 65 78 61  be used, for exa
c640: 6d 70 6c 65 2c 20 74 6f 20 61 64 64 20 61 20 72  mple, to add a r
c650: 65 67 75 6c 61 72 2d 65 78 70 72 65 73 73 69 6f  egular-expressio
c660: 6e 20 6d 61 74 63 68 69 6e 67 20 73 63 61 6c 61  n matching scala
c670: 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 2e 20 54  r.** function. T
c680: 68 65 20 63 6f 6d 70 69 6c 65 64 20 76 65 72 73  he compiled vers
c690: 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 67 75 6c  ion of the regul
c6a0: 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  ar expression is
c6b0: 20 73 74 6f 72 65 64 20 61 73 0a 2a 2a 20 6d 65   stored as.** me
c6c0: 74 61 2d 64 61 74 61 20 61 73 73 6f 63 69 61 74  ta-data associat
c6d0: 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 20  ed with the SQL 
c6e0: 76 61 6c 75 65 20 70 61 73 73 65 64 20 61 73 20  value passed as 
c6f0: 74 68 65 20 72 65 67 75 6c 61 72 20 65 78 70 72  the regular expr
c700: 65 73 73 69 6f 6e 0a 2a 2a 20 70 61 74 74 65 72  ession.** patter
c710: 6e 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 69 6e 67  n..**.** Calling
c720: 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 78   sqlite3_get_aux
c730: 64 61 74 61 28 29 20 72 65 74 75 72 6e 73 20 61  data() returns a
c740: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
c750: 6d 65 74 61 20 64 61 74 61 0a 2a 2a 20 61 73 73  meta data.** ass
c760: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
c770: 20 4e 74 68 20 61 72 67 75 6d 65 6e 74 20 76 61   Nth argument va
c780: 6c 75 65 20 74 6f 20 74 68 65 20 63 75 72 72 65  lue to the curre
c790: 6e 74 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  nt user function
c7a0: 0a 2a 2a 20 63 61 6c 6c 2c 20 77 68 65 72 65 20  .** call, where 
c7b0: 4e 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20  N is the second 
c7c0: 70 61 72 61 6d 65 74 65 72 2e 20 49 66 20 6e 6f  parameter. If no
c7d0: 20 6d 65 74 61 2d 64 61 74 61 20 68 61 73 20 62   meta-data has b
c7e0: 65 65 6e 20 73 65 74 20 66 6f 72 0a 2a 2a 20 74  een set for.** t
c7f0: 68 61 74 20 76 61 6c 75 65 2c 20 74 68 65 6e 20  hat value, then 
c800: 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69  a NULL pointer i
c810: 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a  s returned..**.*
c820: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 73 65  * The sqlite3_se
c830: 74 5f 61 75 78 64 61 74 61 28 29 20 69 73 20 75  t_auxdata() is u
c840: 73 65 64 20 74 6f 20 61 73 73 6f 63 69 61 74 65  sed to associate
c850: 20 6d 65 74 61 20 64 61 74 61 20 77 69 74 68 20   meta data with 
c860: 61 20 75 73 65 72 0a 2a 2a 20 66 75 6e 63 74 69  a user.** functi
c870: 6f 6e 20 61 72 67 75 6d 65 6e 74 2e 20 54 68 65  on argument. The
c880: 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
c890: 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
c8a0: 20 74 68 65 20 6d 65 74 61 20 64 61 74 61 0a 2a   the meta data.*
c8b0: 2a 20 74 6f 20 62 65 20 61 73 73 6f 63 69 61 74  * to be associat
c8c0: 65 64 20 77 69 74 68 20 74 68 65 20 4e 74 68 20  ed with the Nth 
c8d0: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20 61 72  user function ar
c8e0: 67 75 6d 65 6e 74 20 76 61 6c 75 65 2e 20 54 68  gument value. Th
c8f0: 65 20 66 6f 75 72 74 68 0a 2a 2a 20 70 61 72 61  e fourth.** para
c900: 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 73 20  meter specifies 
c910: 61 20 27 64 65 6c 65 74 65 20 66 75 6e 63 74 69  a 'delete functi
c920: 6f 6e 27 20 74 68 61 74 20 77 69 6c 6c 20 62 65  on' that will be
c930: 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65 20 6d   called on the m
c940: 65 74 61 0a 2a 2a 20 64 61 74 61 20 70 6f 69 6e  eta.** data poin
c950: 74 65 72 20 74 6f 20 72 65 6c 65 61 73 65 20 69  ter to release i
c960: 74 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 20  t when it is no 
c970: 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65 64 2e  longer required.
c980: 20 49 66 20 74 68 65 20 64 65 6c 65 74 65 0a 2a   If the delete.*
c990: 2a 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74  * function point
c9a0: 65 72 20 69 73 20 4e 55 4c 4c 2c 20 69 74 20 69  er is NULL, it i
c9b0: 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 2e 0a 2a  s not invoked..*
c9c0: 2a 0a 2a 2a 20 49 6e 20 70 72 61 63 74 69 63 65  *.** In practice
c9d0: 2c 20 6d 65 74 61 2d 64 61 74 61 20 69 73 20 70  , meta-data is p
c9e0: 72 65 73 65 72 76 65 64 20 62 65 74 77 65 65 6e  reserved between
c9f0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20   function calls 
ca00: 66 6f 72 0a 2a 2a 20 65 78 70 72 65 73 73 69 6f  for.** expressio
ca10: 6e 73 20 74 68 61 74 20 61 72 65 20 63 6f 6e 73  ns that are cons
ca20: 74 61 6e 74 20 61 74 20 63 6f 6d 70 69 6c 65 20  tant at compile 
ca30: 74 69 6d 65 2e 20 54 68 69 73 20 69 6e 63 6c 75  time. This inclu
ca40: 64 65 73 20 6c 69 74 65 72 61 6c 0a 2a 2a 20 76  des literal.** v
ca50: 61 6c 75 65 73 20 61 6e 64 20 53 51 4c 20 76 61  alues and SQL va
ca60: 72 69 61 62 6c 65 73 2e 0a 2a 2f 0a 76 6f 69 64  riables..*/.void
ca70: 20 2a 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75   *sqlite3_get_au
ca80: 78 64 61 74 61 28 73 71 6c 69 74 65 33 5f 63 6f  xdata(sqlite3_co
ca90: 6e 74 65 78 74 2a 2c 20 69 6e 74 29 3b 0a 76 6f  ntext*, int);.vo
caa0: 69 64 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  id sqlite3_set_a
cab0: 75 78 64 61 74 61 28 73 71 6c 69 74 65 33 5f 63  uxdata(sqlite3_c
cac0: 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 2c 20 76 6f  ontext*, int, vo
cad0: 69 64 2a 2c 20 76 6f 69 64 20 28 2a 29 28 76 6f  id*, void (*)(vo
cae0: 69 64 2a 29 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 54  id*));.../*.** T
caf0: 68 65 73 65 20 61 72 65 20 73 70 65 63 69 61 6c  hese are special
cb00: 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 64   value for the d
cb10: 65 73 74 72 75 63 74 6f 72 20 74 68 61 74 20 69  estructor that i
cb20: 73 20 70 61 73 73 65 64 20 69 6e 20 61 73 20 74  s passed in as t
cb30: 68 65 0a 2a 2a 20 66 69 6e 61 6c 20 61 72 67 75  he.** final argu
cb40: 6d 65 6e 74 20 74 6f 20 72 6f 75 74 69 6e 65 73  ment to routines
cb50: 20 6c 69 6b 65 20 73 71 6c 69 74 65 33 5f 72 65   like sqlite3_re
cb60: 73 75 6c 74 5f 62 6c 6f 62 28 29 2e 20 20 49 66  sult_blob().  If
cb70: 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 0a   the destructor.
cb80: 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73 20 53  ** argument is S
cb90: 51 4c 49 54 45 5f 53 54 41 54 49 43 2c 20 69 74  QLITE_STATIC, it
cba0: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20   means that the 
cbb0: 63 6f 6e 74 65 6e 74 20 70 6f 69 6e 74 65 72 20  content pointer 
cbc0: 69 73 20 63 6f 6e 73 74 61 6e 74 0a 2a 2a 20 61  is constant.** a
cbd0: 6e 64 20 77 69 6c 6c 20 6e 65 76 65 72 20 63 68  nd will never ch
cbe0: 61 6e 67 65 2e 20 20 49 74 20 64 6f 65 73 20 6e  ange.  It does n
cbf0: 6f 74 20 6e 65 65 64 20 74 6f 20 62 65 20 64 65  ot need to be de
cc00: 73 74 72 6f 79 65 64 2e 20 20 54 68 65 20 0a 2a  stroyed.  The .*
cc10: 2a 20 53 51 4c 49 54 45 5f 54 52 41 4e 53 49 45  * SQLITE_TRANSIE
cc20: 4e 54 20 76 61 6c 75 65 20 6d 65 61 6e 73 20 74  NT value means t
cc30: 68 61 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  hat the content 
cc40: 77 69 6c 6c 20 6c 69 6b 65 6c 79 20 63 68 61 6e  will likely chan
cc50: 67 65 20 69 6e 0a 2a 2a 20 74 68 65 20 6e 65 61  ge in.** the nea
cc60: 72 20 66 75 74 75 72 65 20 61 6e 64 20 74 68 61  r future and tha
cc70: 74 20 53 51 4c 69 74 65 20 73 68 6f 75 6c 64 20  t SQLite should 
cc80: 6d 61 6b 65 20 69 74 73 20 6f 77 6e 20 70 72 69  make its own pri
cc90: 76 61 74 65 20 63 6f 70 79 20 6f 66 0a 2a 2a 20  vate copy of.** 
cca0: 74 68 65 20 63 6f 6e 74 65 6e 74 20 62 65 66 6f  the content befo
ccb0: 72 65 20 72 65 74 75 72 6e 69 6e 67 2e 0a 2a 2a  re returning..**
ccc0: 0a 2a 2a 20 54 68 65 20 74 79 70 65 64 65 66 20  .** The typedef 
ccd0: 69 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20  is necessary to 
cce0: 77 6f 72 6b 20 61 72 6f 75 6e 64 20 70 72 6f 62  work around prob
ccf0: 6c 65 6d 73 20 69 6e 20 63 65 72 74 61 69 6e 0a  lems in certain.
cd00: 2a 2a 20 43 2b 2b 20 63 6f 6d 70 69 6c 65 72 73  ** C++ compilers
cd10: 2e 20 20 53 65 65 20 74 69 63 6b 65 74 20 23 32  .  See ticket #2
cd20: 31 39 31 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  191..*/.typedef 
cd30: 76 6f 69 64 20 28 2a 73 71 6c 69 74 65 33 5f 64  void (*sqlite3_d
cd40: 65 73 74 72 75 63 74 6f 72 5f 74 79 70 65 29 28  estructor_type)(
cd50: 76 6f 69 64 2a 29 3b 0a 23 64 65 66 69 6e 65 20  void*);.#define 
cd60: 53 51 4c 49 54 45 5f 53 54 41 54 49 43 20 20 20  SQLITE_STATIC   
cd70: 20 20 20 28 28 73 71 6c 69 74 65 33 5f 64 65 73     ((sqlite3_des
cd80: 74 72 75 63 74 6f 72 5f 74 79 70 65 29 30 29 0a  tructor_type)0).
cd90: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
cda0: 52 41 4e 53 49 45 4e 54 20 20 20 28 28 73 71 6c  RANSIENT   ((sql
cdb0: 69 74 65 33 5f 64 65 73 74 72 75 63 74 6f 72 5f  ite3_destructor_
cdc0: 74 79 70 65 29 2d 31 29 0a 0a 2f 2a 0a 2a 2a 20  type)-1)../*.** 
cdd0: 55 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e  User-defined fun
cde0: 63 74 69 6f 6e 73 20 69 6e 76 6f 6b 65 20 74 68  ctions invoke th
cdf0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74  e following rout
ce00: 69 6e 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f  ines in order to
ce10: 0a 2a 2a 20 73 65 74 20 74 68 65 69 72 20 72 65  .** set their re
ce20: 74 75 72 6e 20 76 61 6c 75 65 2e 0a 2a 2f 0a 76  turn value..*/.v
ce30: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
ce40: 6c 74 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f  lt_blob(sqlite3_
ce50: 63 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20  context*, const 
ce60: 76 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  void*, int, void
ce70: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69  (*)(void*));.voi
ce80: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
ce90: 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f  _double(sqlite3_
cea0: 63 6f 6e 74 65 78 74 2a 2c 20 64 6f 75 62 6c 65  context*, double
ceb0: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
cec0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 73 71 6c  result_error(sql
ced0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63  ite3_context*, c
cee0: 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74 29  onst char*, int)
cef0: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
cf00: 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 73 71  esult_error16(sq
cf10: 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20  lite3_context*, 
cf20: 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74  const void*, int
cf30: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
cf40: 72 65 73 75 6c 74 5f 69 6e 74 28 73 71 6c 69 74  result_int(sqlit
cf50: 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74  e3_context*, int
cf60: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
cf70: 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 73 71 6c  result_int64(sql
cf80: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 73  ite3_context*, s
cf90: 71 6c 69 74 65 5f 69 6e 74 36 34 29 3b 0a 76 6f  qlite_int64);.vo
cfa0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
cfb0: 74 5f 6e 75 6c 6c 28 73 71 6c 69 74 65 33 5f 63  t_null(sqlite3_c
cfc0: 6f 6e 74 65 78 74 2a 29 3b 0a 76 6f 69 64 20 73  ontext*);.void s
cfd0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
cfe0: 78 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  xt(sqlite3_conte
cff0: 78 74 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a  xt*, const char*
d000: 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76  , int, void(*)(v
d010: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
d020: 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
d030: 31 36 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  16(sqlite3_conte
d040: 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a  xt*, const void*
d050: 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76  , int, void(*)(v
d060: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
d070: 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
d080: 31 36 6c 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e  16le(sqlite3_con
d090: 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69  text*, const voi
d0a0: 64 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29 28  d*, int,void(*)(
d0b0: 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71  void*));.void sq
d0c0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
d0d0: 74 31 36 62 65 28 73 71 6c 69 74 65 33 5f 63 6f  t16be(sqlite3_co
d0e0: 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f  ntext*, const vo
d0f0: 69 64 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29  id*, int,void(*)
d100: 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73  (void*));.void s
d110: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
d120: 6c 75 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  lue(sqlite3_cont
d130: 65 78 74 2a 2c 20 73 71 6c 69 74 65 33 5f 76 61  ext*, sqlite3_va
d140: 6c 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  lue*);../*.** Th
d150: 65 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f  ese are the allo
d160: 77 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74  wed values for t
d170: 68 65 20 65 54 65 78 74 52 65 70 20 61 72 67 75  he eTextRep argu
d180: 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74  ment to.** sqlit
d190: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
d1a0: 69 6f 6e 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  ion and sqlite3_
d1b0: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 2e  create_function.
d1c0: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
d1d0: 54 45 5f 55 54 46 38 20 20 20 20 20 20 20 20 20  TE_UTF8         
d1e0: 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    1.#define SQLI
d1f0: 54 45 5f 55 54 46 31 36 4c 45 20 20 20 20 20 20  TE_UTF16LE      
d200: 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    2.#define SQLI
d210: 54 45 5f 55 54 46 31 36 42 45 20 20 20 20 20 20  TE_UTF16BE      
d220: 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    3.#define SQLI
d230: 54 45 5f 55 54 46 31 36 20 20 20 20 20 20 20 20  TE_UTF16        
d240: 20 20 34 20 20 20 20 2f 2a 20 55 73 65 20 6e 61    4    /* Use na
d250: 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 20  tive byte order 
d260: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d270: 45 5f 41 4e 59 20 20 20 20 20 20 20 20 20 20 20  E_ANY           
d280: 20 35 20 20 20 20 2f 2a 20 73 71 6c 69 74 65 33   5    /* sqlite3
d290: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
d2a0: 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65   only */.#define
d2b0: 20 53 51 4c 49 54 45 5f 55 54 46 31 36 5f 41 4c   SQLITE_UTF16_AL
d2c0: 49 47 4e 45 44 20 20 38 20 20 20 20 2f 2a 20 73  IGNED  8    /* s
d2d0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
d2e0: 6c 6c 61 74 69 6f 6e 20 6f 6e 6c 79 20 2a 2f 0a  llation only */.
d2f0: 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 74 77 6f  ./*.** These two
d300: 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 75   functions are u
d310: 73 65 64 20 74 6f 20 61 64 64 20 6e 65 77 20 63  sed to add new c
d320: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
d330: 65 73 20 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c  es to the.** sql
d340: 69 74 65 33 20 68 61 6e 64 6c 65 20 73 70 65 63  ite3 handle spec
d350: 69 66 69 65 64 20 61 73 20 74 68 65 20 66 69 72  ified as the fir
d360: 73 74 20 61 72 67 75 6d 65 6e 74 2e 20 0a 2a 2a  st argument. .**
d370: 0a 2a 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  .** The name of 
d380: 74 68 65 20 6e 65 77 20 63 6f 6c 6c 61 74 69 6f  the new collatio
d390: 6e 20 73 65 71 75 65 6e 63 65 20 69 73 20 73 70  n sequence is sp
d3a0: 65 63 69 66 69 65 64 20 61 73 20 61 20 55 54 46  ecified as a UTF
d3b0: 2d 38 20 73 74 72 69 6e 67 0a 2a 2a 20 66 6f 72  -8 string.** for
d3c0: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
d3d0: 63 6f 6c 6c 61 74 69 6f 6e 28 29 20 61 6e 64 20  collation() and 
d3e0: 61 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67 20  a UTF-16 string 
d3f0: 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  for.** sqlite3_c
d400: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31  reate_collation1
d410: 36 28 29 2e 20 49 6e 20 62 6f 74 68 20 63 61 73  6(). In both cas
d420: 65 73 20 74 68 65 20 6e 61 6d 65 20 69 73 20 70  es the name is p
d430: 61 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a 20  assed as the.** 
d440: 73 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20  second function 
d450: 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20  argument..**.** 
d460: 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  The third argume
d470: 6e 74 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f  nt must be one o
d480: 66 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 20  f the constants 
d490: 53 51 4c 49 54 45 5f 55 54 46 38 2c 0a 2a 2a 20  SQLITE_UTF8,.** 
d4a0: 53 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 20 6f  SQLITE_UTF16LE o
d4b0: 72 20 53 51 4c 49 54 45 5f 55 54 46 31 36 42 45  r SQLITE_UTF16BE
d4c0: 2c 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  , indicating tha
d4d0: 74 20 74 68 65 20 75 73 65 72 2d 73 75 70 70 6c  t the user-suppl
d4e0: 69 65 64 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 65  ied.** routine e
d4f0: 78 70 65 63 74 73 20 74 6f 20 62 65 20 70 61 73  xpects to be pas
d500: 73 65 64 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  sed pointers to 
d510: 73 74 72 69 6e 67 73 20 65 6e 63 6f 64 65 64 20  strings encoded 
d520: 75 73 69 6e 67 20 55 54 46 2d 38 2c 0a 2a 2a 20  using UTF-8,.** 
d530: 55 54 46 2d 31 36 20 6c 69 74 74 6c 65 2d 65 6e  UTF-16 little-en
d540: 64 69 61 6e 20 6f 72 20 55 54 46 2d 31 36 20 62  dian or UTF-16 b
d550: 69 67 2d 65 6e 64 69 61 6e 20 72 65 73 70 65 63  ig-endian respec
d560: 74 69 76 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 20  tively..**.** A 
d570: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 75  pointer to the u
d580: 73 65 72 20 73 75 70 70 6c 69 65 64 20 72 6f 75  ser supplied rou
d590: 74 69 6e 65 20 6d 75 73 74 20 62 65 20 70 61 73  tine must be pas
d5a0: 73 65 64 20 61 73 20 74 68 65 20 66 69 66 74 68  sed as the fifth
d5b0: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 2e 20 49 66  .** argument. If
d5c0: 20 69 74 20 69 73 20 4e 55 4c 4c 2c 20 74 68 69   it is NULL, thi
d5d0: 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73  s is the same as
d5e0: 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f   deleting the co
d5f0: 6c 6c 61 74 69 6f 6e 0a 2a 2a 20 73 65 71 75 65  llation.** seque
d600: 6e 63 65 20 28 73 6f 20 74 68 61 74 20 53 51 4c  nce (so that SQL
d610: 69 74 65 20 63 61 6e 6e 6f 74 20 63 61 6c 6c 20  ite cannot call 
d620: 69 74 20 61 6e 79 6d 6f 72 65 29 2e 20 45 61 63  it anymore). Eac
d630: 68 20 74 69 6d 65 20 74 68 65 20 75 73 65 72 0a  h time the user.
d640: 2a 2a 20 73 75 70 70 6c 69 65 64 20 66 75 6e 63  ** supplied func
d650: 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 2c  tion is invoked,
d660: 20 69 74 20 69 73 20 70 61 73 73 65 64 20 61 20   it is passed a 
d670: 63 6f 70 79 20 6f 66 20 74 68 65 20 76 6f 69 64  copy of the void
d680: 2a 20 70 61 73 73 65 64 20 61 73 0a 2a 2a 20 74  * passed as.** t
d690: 68 65 20 66 6f 75 72 74 68 20 61 72 67 75 6d 65  he fourth argume
d6a0: 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 72  nt to sqlite3_cr
d6b0: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29  eate_collation()
d6c0: 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63   or.** sqlite3_c
d6d0: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31  reate_collation1
d6e0: 36 28 29 20 61 73 20 69 74 73 20 66 69 72 73 74  6() as its first
d6f0: 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
d700: 2a 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20  * The remaining 
d710: 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
d720: 20 75 73 65 72 2d 73 75 70 70 6c 69 65 64 20 72   user-supplied r
d730: 6f 75 74 69 6e 65 20 61 72 65 20 74 77 6f 20 73  outine are two s
d740: 74 72 69 6e 67 73 2c 0a 2a 2a 20 65 61 63 68 20  trings,.** each 
d750: 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61  represented by a
d760: 20 5b 6c 65 6e 67 74 68 2c 20 64 61 74 61 5d 20   [length, data] 
d770: 70 61 69 72 20 61 6e 64 20 65 6e 63 6f 64 65 64  pair and encoded
d780: 20 69 6e 20 74 68 65 20 65 6e 63 6f 64 69 6e 67   in the encoding
d790: 0a 2a 2a 20 74 68 61 74 20 77 61 73 20 70 61 73  .** that was pas
d7a0: 73 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64  sed as the third
d7b0: 20 61 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 74   argument when t
d7c0: 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71  he collation seq
d7d0: 75 65 6e 63 65 20 77 61 73 0a 2a 2a 20 72 65 67  uence was.** reg
d7e0: 69 73 74 65 72 65 64 2e 20 54 68 65 20 75 73 65  istered. The use
d7f0: 72 20 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c 64  r routine should
d800: 20 72 65 74 75 72 6e 20 6e 65 67 61 74 69 76 65   return negative
d810: 2c 20 7a 65 72 6f 20 6f 72 20 70 6f 73 69 74 69  , zero or positi
d820: 76 65 20 69 66 0a 2a 2a 20 74 68 65 20 66 69 72  ve if.** the fir
d830: 73 74 20 73 74 72 69 6e 67 20 69 73 20 6c 65 73  st string is les
d840: 73 20 74 68 61 6e 2c 20 65 71 75 61 6c 20 74 6f  s than, equal to
d850: 2c 20 6f 72 20 67 72 65 61 74 65 72 20 74 68 61  , or greater tha
d860: 6e 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20  n the second.** 
d870: 73 74 72 69 6e 67 2e 20 69 2e 65 2e 20 28 53 54  string. i.e. (ST
d880: 52 49 4e 47 31 20 2d 20 53 54 52 49 4e 47 32 29  RING1 - STRING2)
d890: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
d8a0: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
d8b0: 6e 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a  n(.  sqlite3*, .
d8c0: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e    const char *zN
d8d0: 61 6d 65 2c 20 0a 20 20 69 6e 74 20 65 54 65 78  ame, .  int eTex
d8e0: 74 52 65 70 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a  tRep, .  void*,.
d8f0: 20 20 69 6e 74 28 2a 78 43 6f 6d 70 61 72 65 29    int(*xCompare)
d900: 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74  (void*,int,const
d910: 20 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74   void*,int,const
d920: 20 76 6f 69 64 2a 29 0a 29 3b 0a 69 6e 74 20 73   void*).);.int s
d930: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f  qlite3_create_co
d940: 6c 6c 61 74 69 6f 6e 31 36 28 0a 20 20 73 71 6c  llation16(.  sql
d950: 69 74 65 33 2a 2c 20 0a 20 20 63 6f 6e 73 74 20  ite3*, .  const 
d960: 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 0a 20 20  char *zName, .  
d970: 69 6e 74 20 65 54 65 78 74 52 65 70 2c 20 0a 20  int eTextRep, . 
d980: 20 76 6f 69 64 2a 2c 0a 20 20 69 6e 74 28 2a 78   void*,.  int(*x
d990: 43 6f 6d 70 61 72 65 29 28 76 6f 69 64 2a 2c 69  Compare)(void*,i
d9a0: 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 69  nt,const void*,i
d9b0: 6e 74 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a  nt,const void*).
d9c0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 6f 20 61 76 6f  );../*.** To avo
d9d0: 69 64 20 68 61 76 69 6e 67 20 74 6f 20 72 65 67  id having to reg
d9e0: 69 73 74 65 72 20 61 6c 6c 20 63 6f 6c 6c 61 74  ister all collat
d9f0: 69 6f 6e 20 73 65 71 75 65 6e 63 65 73 20 62 65  ion sequences be
da00: 66 6f 72 65 20 61 20 64 61 74 61 62 61 73 65 0a  fore a database.
da10: 2a 2a 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20  ** can be used, 
da20: 61 20 73 69 6e 67 6c 65 20 63 61 6c 6c 62 61 63  a single callbac
da30: 6b 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62  k function may b
da40: 65 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74  e registered wit
da50: 68 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73  h the.** databas
da60: 65 20 68 61 6e 64 6c 65 20 74 6f 20 62 65 20 63  e handle to be c
da70: 61 6c 6c 65 64 20 77 68 65 6e 65 76 65 72 20 61  alled whenever a
da80: 6e 20 75 6e 64 65 66 69 6e 65 64 20 63 6f 6c 6c  n undefined coll
da90: 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 69  ation sequence i
daa0: 73 0a 2a 2a 20 72 65 71 75 69 72 65 64 2e 0a 2a  s.** required..*
dab0: 2a 0a 2a 2a 20 49 66 20 74 68 65 20 66 75 6e 63  *.** If the func
dac0: 74 69 6f 6e 20 69 73 20 72 65 67 69 73 74 65 72  tion is register
dad0: 65 64 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c  ed using the sql
dae0: 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e  ite3_collation_n
daf0: 65 65 64 65 64 28 29 20 41 50 49 2c 0a 2a 2a 20  eeded() API,.** 
db00: 74 68 65 6e 20 69 74 20 69 73 20 70 61 73 73 65  then it is passe
db10: 64 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 75  d the names of u
db20: 6e 64 65 66 69 6e 65 64 20 63 6f 6c 6c 61 74 69  ndefined collati
db30: 6f 6e 20 73 65 71 75 65 6e 63 65 73 20 61 73 20  on sequences as 
db40: 73 74 72 69 6e 67 73 0a 2a 2a 20 65 6e 63 6f 64  strings.** encod
db50: 65 64 20 69 6e 20 55 54 46 2d 38 2e 20 49 66 20  ed in UTF-8. If 
db60: 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f  sqlite3_collatio
db70: 6e 5f 6e 65 65 64 65 64 31 36 28 29 20 69 73 20  n_needed16() is 
db80: 75 73 65 64 2c 20 74 68 65 20 6e 61 6d 65 73 0a  used, the names.
db90: 2a 2a 20 61 72 65 20 70 61 73 73 65 64 20 61 73  ** are passed as
dba0: 20 55 54 46 2d 31 36 20 69 6e 20 6d 61 63 68 69   UTF-16 in machi
dbb0: 6e 65 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f  ne native byte o
dbc0: 72 64 65 72 2e 20 41 20 63 61 6c 6c 20 74 6f 20  rder. A call to 
dbd0: 65 69 74 68 65 72 0a 2a 2a 20 66 75 6e 63 74 69  either.** functi
dbe0: 6f 6e 20 72 65 70 6c 61 63 65 73 20 61 6e 79 20  on replaces any 
dbf0: 65 78 69 73 74 69 6e 67 20 63 61 6c 6c 62 61 63  existing callbac
dc00: 6b 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68  k..**.** When th
dc10: 65 20 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e 20  e user-function 
dc20: 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65 20  is invoked, the 
dc30: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 70  first argument p
dc40: 61 73 73 65 64 20 69 73 20 61 20 63 6f 70 79 0a  assed is a copy.
dc50: 2a 2a 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64  ** of the second
dc60: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c   argument to sql
dc70: 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e  ite3_collation_n
dc80: 65 65 64 65 64 28 29 20 6f 72 0a 2a 2a 20 73 71  eeded() or.** sq
dc90: 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f  lite3_collation_
dca0: 6e 65 65 64 65 64 31 36 28 29 2e 20 54 68 65 20  needed16(). The 
dcb0: 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20  second argument 
dcc0: 69 73 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  is the database.
dcd0: 2a 2a 20 68 61 6e 64 6c 65 2e 20 54 68 65 20 74  ** handle. The t
dce0: 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73  hird argument is
dcf0: 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 55   one of SQLITE_U
dd00: 54 46 38 2c 20 53 51 4c 49 54 45 5f 55 54 46 31  TF8, SQLITE_UTF1
dd10: 36 42 45 20 6f 72 0a 2a 2a 20 53 51 4c 49 54 45  6BE or.** SQLITE
dd20: 5f 55 54 46 31 36 4c 45 2c 20 69 6e 64 69 63 61  _UTF16LE, indica
dd30: 74 69 6e 67 20 74 68 65 20 6d 6f 73 74 20 64 65  ting the most de
dd40: 73 69 72 61 62 6c 65 20 66 6f 72 6d 20 6f 66 20  sirable form of 
dd50: 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 0a 2a 2a  the collation.**
dd60: 20 73 65 71 75 65 6e 63 65 20 66 75 6e 63 74 69   sequence functi
dd70: 6f 6e 20 72 65 71 75 69 72 65 64 2e 20 54 68 65  on required. The
dd80: 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
dd90: 72 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  r is the name of
dda0: 20 74 68 65 0a 2a 2a 20 72 65 71 75 69 72 65 64   the.** required
ddb0: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
ddc0: 6e 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63  nce..**.** The c
ddd0: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
dde0: 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f  e is returned to
ddf0: 20 53 51 4c 69 74 65 20 62 79 20 61 20 63 6f 6c   SQLite by a col
de00: 6c 61 74 69 6f 6e 2d 6e 65 65 64 65 64 0a 2a 2a  lation-needed.**
de10: 20 63 61 6c 6c 62 61 63 6b 20 75 73 69 6e 67 20   callback using 
de20: 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  the sqlite3_crea
de30: 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29 20 6f  te_collation() o
de40: 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72 65  r.** sqlite3_cre
de50: 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 28  ate_collation16(
de60: 29 20 41 50 49 73 2c 20 64 65 73 63 72 69 62 65  ) APIs, describe
de70: 64 20 61 62 6f 76 65 2e 0a 2a 2f 0a 69 6e 74 20  d above..*/.int 
de80: 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f  sqlite3_collatio
de90: 6e 5f 6e 65 65 64 65 64 28 0a 20 20 73 71 6c 69  n_needed(.  sqli
dea0: 74 65 33 2a 2c 20 0a 20 20 76 6f 69 64 2a 2c 20  te3*, .  void*, 
deb0: 0a 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  .  void(*)(void*
dec0: 2c 73 71 6c 69 74 65 33 2a 2c 69 6e 74 20 65 54  ,sqlite3*,int eT
ded0: 65 78 74 52 65 70 2c 63 6f 6e 73 74 20 63 68 61  extRep,const cha
dee0: 72 2a 29 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74  r*).);.int sqlit
def0: 65 33 5f 63 6f 6c 6c 61 74 69 6f 6e 5f 6e 65 65  e3_collation_nee
df00: 64 65 64 31 36 28 0a 20 20 73 71 6c 69 74 65 33  ded16(.  sqlite3
df10: 2a 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 76  *, .  void*,.  v
df20: 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71 6c  oid(*)(void*,sql
df30: 69 74 65 33 2a 2c 69 6e 74 20 65 54 65 78 74 52  ite3*,int eTextR
df40: 65 70 2c 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a  ep,const void*).
df50: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69 66  );../*.** Specif
df60: 79 20 74 68 65 20 6b 65 79 20 66 6f 72 20 61 6e  y the key for an
df70: 20 65 6e 63 72 79 70 74 65 64 20 64 61 74 61 62   encrypted datab
df80: 61 73 65 2e 20 20 54 68 69 73 20 72 6f 75 74 69  ase.  This routi
df90: 6e 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20  ne should be.** 
dfa0: 63 61 6c 6c 65 64 20 72 69 67 68 74 20 61 66 74  called right aft
dfb0: 65 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  er sqlite3_open(
dfc0: 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f 64  )..**.** The cod
dfd0: 65 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  e to implement t
dfe0: 68 69 73 20 41 50 49 20 69 73 20 6e 6f 74 20 61  his API is not a
dff0: 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20  vailable in the 
e000: 70 75 62 6c 69 63 20 72 65 6c 65 61 73 65 0a 2a  public release.*
e010: 2a 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a  * of SQLite..*/.
e020: 69 6e 74 20 73 71 6c 69 74 65 33 5f 6b 65 79 28  int sqlite3_key(
e030: 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 74 6f    /* Database to
e060: 20 62 65 20 72 65 6b 65 79 65 64 20 2a 2f 0a 20   be rekeyed */. 
e070: 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70 4b 65   const void *pKe
e080: 79 2c 20 69 6e 74 20 6e 4b 65 79 20 20 20 20 20  y, int nKey     
e090: 2f 2a 20 54 68 65 20 6b 65 79 20 2a 2f 0a 29 3b  /* The key */.);
e0a0: 0a 0a 2f 2a 0a 2a 2a 20 43 68 61 6e 67 65 20 74  ../*.** Change t
e0b0: 68 65 20 6b 65 79 20 6f 6e 20 61 6e 20 6f 70 65  he key on an ope
e0c0: 6e 20 64 61 74 61 62 61 73 65 2e 20 20 49 66 20  n database.  If 
e0d0: 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61  the current data
e0e0: 62 61 73 65 20 69 73 20 6e 6f 74 0a 2a 2a 20 65  base is not.** e
e0f0: 6e 63 72 79 70 74 65 64 2c 20 74 68 69 73 20 72  ncrypted, this r
e100: 6f 75 74 69 6e 65 20 77 69 6c 6c 20 65 6e 63 72  outine will encr
e110: 79 70 74 20 69 74 2e 20 20 49 66 20 70 4e 65 77  ypt it.  If pNew
e120: 3d 3d 30 20 6f 72 20 6e 4e 65 77 3d 3d 30 2c 20  ==0 or nNew==0, 
e130: 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  the.** database 
e140: 69 73 20 64 65 63 72 79 70 74 65 64 2e 0a 2a 2a  is decrypted..**
e150: 0a 2a 2a 20 54 68 65 20 63 6f 64 65 20 74 6f 20  .** The code to 
e160: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 41  implement this A
e170: 50 49 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  PI is not availa
e180: 62 6c 65 20 69 6e 20 74 68 65 20 70 75 62 6c 69  ble in the publi
e190: 63 20 72 65 6c 65 61 73 65 0a 2a 2a 20 6f 66 20  c release.** of 
e1a0: 53 51 4c 69 74 65 2e 0a 2a 2f 0a 69 6e 74 20 73  SQLite..*/.int s
e1b0: 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 0a 20 20  qlite3_rekey(.  
e1c0: 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e1e0: 2a 20 44 61 74 61 62 61 73 65 20 74 6f 20 62 65  * Database to be
e1f0: 20 72 65 6b 65 79 65 64 20 2a 2f 0a 20 20 63 6f   rekeyed */.  co
e200: 6e 73 74 20 76 6f 69 64 20 2a 70 4b 65 79 2c 20  nst void *pKey, 
e210: 69 6e 74 20 6e 4b 65 79 20 20 20 20 20 2f 2a 20  int nKey     /* 
e220: 54 68 65 20 6e 65 77 20 6b 65 79 20 2a 2f 0a 29  The new key */.)
e230: 3b 0a 0a 2f 2a 0a 2a 2a 20 53 6c 65 65 70 20 66  ;../*.** Sleep f
e240: 6f 72 20 61 20 6c 69 74 74 6c 65 20 77 68 69 6c  or a little whil
e250: 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  e. The second pa
e260: 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6e  rameter is the n
e270: 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 6d 69 6c 69  umber of.** mili
e280: 73 65 63 6f 6e 64 73 20 74 6f 20 73 6c 65 65 70  seconds to sleep
e290: 20 66 6f 72 2e 20 0a 2a 2a 0a 2a 2a 20 49 66 20   for. .**.** If 
e2a0: 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
e2b0: 73 74 65 6d 20 64 6f 65 73 20 6e 6f 74 20 73 75  stem does not su
e2c0: 70 70 6f 72 74 20 73 6c 65 65 70 20 72 65 71 75  pport sleep requ
e2d0: 65 73 74 73 20 77 69 74 68 20 0a 2a 2a 20 6d 69  ests with .** mi
e2e0: 6c 69 73 65 63 6f 6e 64 20 74 69 6d 65 20 72 65  lisecond time re
e2f0: 73 6f 6c 75 74 69 6f 6e 2c 20 74 68 65 6e 20 74  solution, then t
e300: 68 65 20 74 69 6d 65 20 77 69 6c 6c 20 62 65 20  he time will be 
e310: 72 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 0a 2a  rounded up to .*
e320: 2a 20 74 68 65 20 6e 65 61 72 65 73 74 20 73 65  * the nearest se
e330: 63 6f 6e 64 2e 20 54 68 65 20 6e 75 6d 62 65 72  cond. The number
e340: 20 6f 66 20 6d 69 6c 69 73 65 63 6f 6e 64 73 20   of miliseconds 
e350: 6f 66 20 73 6c 65 65 70 20 61 63 74 75 61 6c 6c  of sleep actuall
e360: 79 20 0a 2a 2a 20 72 65 71 75 65 73 74 65 64 20  y .** requested 
e370: 66 72 6f 6d 20 74 68 65 20 6f 70 65 72 61 74 69  from the operati
e380: 6e 67 20 73 79 73 74 65 6d 20 69 73 20 72 65 74  ng system is ret
e390: 75 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71  urned..*/.int sq
e3a0: 6c 69 74 65 33 5f 73 6c 65 65 70 28 69 6e 74 29  lite3_sleep(int)
e3b0: 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20  ;../*.** Return 
e3c0: 54 52 55 45 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20  TRUE (non-zero) 
e3d0: 69 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  if the statement
e3e0: 20 73 75 70 70 6c 69 65 64 20 61 73 20 61 6e 20   supplied as an 
e3f0: 61 72 67 75 6d 65 6e 74 20 6e 65 65 64 73 0a 2a  argument needs.*
e400: 2a 20 74 6f 20 62 65 20 72 65 63 6f 6d 70 69 6c  * to be recompil
e410: 65 64 2e 20 20 41 20 73 74 61 74 65 6d 65 6e 74  ed.  A statement
e420: 20 6e 65 65 64 73 20 74 6f 20 62 65 20 72 65 63   needs to be rec
e430: 6f 6d 70 69 6c 65 64 20 77 68 65 6e 65 76 65 72  ompiled whenever
e440: 20 74 68 65 0a 2a 2a 20 65 78 65 63 75 74 69 6f   the.** executio
e450: 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 63 68  n environment ch
e460: 61 6e 67 65 73 20 69 6e 20 61 20 77 61 79 20 74  anges in a way t
e470: 68 61 74 20 77 6f 75 6c 64 20 61 6c 74 65 72 20  hat would alter 
e480: 74 68 65 20 70 72 6f 67 72 61 6d 0a 2a 2a 20 74  the program.** t
e490: 68 61 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  hat sqlite3_prep
e4a0: 61 72 65 28 29 20 67 65 6e 65 72 61 74 65 73 2e  are() generates.
e4b0: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69    For example, i
e4c0: 66 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20  f new functions 
e4d0: 6f 72 0a 2a 2a 20 63 6f 6c 6c 61 74 69 6e 67 20  or.** collating 
e4e0: 73 65 71 75 65 6e 63 65 73 20 61 72 65 20 72 65  sequences are re
e4f0: 67 69 73 74 65 72 65 64 20 6f 72 20 69 66 20 61  gistered or if a
e500: 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 66 75 6e  n authorizer fun
e510: 63 74 69 6f 6e 20 69 73 0a 2a 2a 20 61 64 64 65  ction is.** adde
e520: 64 20 6f 72 20 63 68 61 6e 67 65 64 2e 0a 2a 2a  d or changed..**
e530: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
e540: 65 78 70 69 72 65 64 28 73 71 6c 69 74 65 33 5f  expired(sqlite3_
e550: 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 4d  stmt*);../*.** M
e560: 6f 76 65 20 61 6c 6c 20 62 69 6e 64 69 6e 67 73  ove all bindings
e570: 20 66 72 6f 6d 20 74 68 65 20 66 69 72 73 74 20   from the first 
e580: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
e590: 6e 74 20 6f 76 65 72 20 74 6f 20 74 68 65 20 73  nt over to the s
e5a0: 65 63 6f 6e 64 2e 0a 2a 2a 20 54 68 69 73 20 72  econd..** This r
e5b0: 6f 75 74 69 6e 65 20 69 73 20 75 73 65 66 75 6c  outine is useful
e5c0: 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  , for example, i
e5d0: 66 20 74 68 65 20 66 69 72 73 74 20 70 72 65 70  f the first prep
e5e0: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 0a 2a  ared statement.*
e5f0: 2a 20 66 61 69 6c 73 20 77 69 74 68 20 61 6e 20  * fails with an 
e600: 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 65 72  SQLITE_SCHEMA er
e610: 72 6f 72 2e 20 20 54 68 65 20 73 61 6d 65 20 53  ror.  The same S
e620: 51 4c 20 63 61 6e 20 62 65 20 70 72 65 70 61 72  QL can be prepar
e630: 65 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73  ed into.** the s
e640: 65 63 6f 6e 64 20 70 72 65 70 61 72 65 64 20 73  econd prepared s
e650: 74 61 74 65 6d 65 6e 74 20 74 68 65 6e 20 61 6c  tatement then al
e660: 6c 20 6f 66 20 74 68 65 20 62 69 6e 64 69 6e 67  l of the binding
e670: 73 20 74 72 61 6e 73 66 65 72 65 64 20 6f 76 65  s transfered ove
e680: 72 0a 2a 2a 20 74 6f 20 74 68 65 20 73 65 63 6f  r.** to the seco
e690: 6e 64 20 73 74 61 74 65 6d 65 6e 74 20 62 65 66  nd statement bef
e6a0: 6f 72 65 20 74 68 65 20 66 69 72 73 74 20 73 74  ore the first st
e6b0: 61 74 65 6d 65 6e 74 20 69 73 20 66 69 6e 61 6c  atement is final
e6c0: 69 7a 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  ized..*/.int sql
e6d0: 69 74 65 33 5f 74 72 61 6e 73 66 65 72 5f 62 69  ite3_transfer_bi
e6e0: 6e 64 69 6e 67 73 28 73 71 6c 69 74 65 33 5f 73  ndings(sqlite3_s
e6f0: 74 6d 74 2a 2c 20 73 71 6c 69 74 65 33 5f 73 74  tmt*, sqlite3_st
e700: 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20  mt*);../*.** If 
e710: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67 6c  the following gl
e720: 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 69 73  obal variable is
e730: 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74   made to point t
e740: 6f 20 61 0a 2a 2a 20 73 74 72 69 6e 67 20 77 68  o a.** string wh
e750: 69 63 68 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ich is the name 
e760: 6f 66 20 61 20 64 69 72 65 63 74 6f 72 79 2c 20  of a directory, 
e770: 74 68 65 6e 20 61 6c 6c 20 74 65 6d 70 6f 72 61  then all tempora
e780: 72 79 20 66 69 6c 65 73 0a 2a 2a 20 63 72 65 61  ry files.** crea
e790: 74 65 64 20 62 79 20 53 51 4c 69 74 65 20 77 69  ted by SQLite wi
e7a0: 6c 6c 20 62 65 20 70 6c 61 63 65 64 20 69 6e 20  ll be placed in 
e7b0: 74 68 61 74 20 64 69 72 65 63 74 6f 72 79 2e 20  that directory. 
e7c0: 20 49 66 20 74 68 69 73 20 76 61 72 69 61 62 6c   If this variabl
e7d0: 65 0a 2a 2a 20 69 73 20 4e 55 4c 4c 20 70 6f 69  e.** is NULL poi
e7e0: 6e 74 65 72 2c 20 74 68 65 6e 20 53 51 4c 69 74  nter, then SQLit
e7f0: 65 20 64 6f 65 73 20 61 20 73 65 61 72 63 68 20  e does a search 
e800: 66 6f 72 20 61 6e 20 61 70 70 72 6f 70 72 69 61  for an appropria
e810: 74 65 20 74 65 6d 70 6f 72 61 72 79 0a 2a 2a 20  te temporary.** 
e820: 66 69 6c 65 20 64 69 72 65 63 74 6f 72 79 2e 0a  file directory..
e830: 2a 2a 0a 2a 2a 20 4f 6e 63 65 20 73 71 6c 69 74  **.** Once sqlit
e840: 65 33 5f 6f 70 65 6e 28 29 20 68 61 73 20 62 65  e3_open() has be
e850: 65 6e 20 63 61 6c 6c 65 64 2c 20 63 68 61 6e 67  en called, chang
e860: 69 6e 67 20 74 68 69 73 20 76 61 72 69 61 62 6c  ing this variabl
e870: 65 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74  e will invalidat
e880: 65 0a 2a 2a 20 74 68 65 20 63 75 72 72 65 6e 74  e.** the current
e890: 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62   temporary datab
e8a0: 61 73 65 2c 20 69 66 20 61 6e 79 2e 0a 2a 2f 0a  ase, if any..*/.
e8b0: 65 78 74 65 72 6e 20 63 68 61 72 20 2a 73 71 6c  extern char *sql
e8c0: 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65 63 74  ite3_temp_direct
e8d0: 6f 72 79 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73  ory;../*.** This
e8e0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c   function is cal
e8f0: 6c 65 64 20 74 6f 20 72 65 63 6f 76 65 72 20 66  led to recover f
e900: 72 6f 6d 20 61 20 6d 61 6c 6c 6f 63 28 29 20 66  rom a malloc() f
e910: 61 69 6c 75 72 65 20 74 68 61 74 20 6f 63 63 75  ailure that occu
e920: 72 65 64 0a 2a 2a 20 77 69 74 68 69 6e 20 74 68  red.** within th
e930: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
e940: 2e 20 4e 6f 72 6d 61 6c 6c 79 2c 20 61 66 74 65  . Normally, afte
e950: 72 20 61 20 73 69 6e 67 6c 65 20 6d 61 6c 6c 6f  r a single mallo
e960: 63 28 29 20 66 61 69 6c 73 20 74 68 65 20 0a 2a  c() fails the .*
e970: 2a 20 6c 69 62 72 61 72 79 20 72 65 66 75 73 65  * library refuse
e980: 73 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20 28 61  s to function (a
e990: 6c 6c 20 6d 61 6a 6f 72 20 63 61 6c 6c 73 20 72  ll major calls r
e9a0: 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d  eturn SQLITE_NOM
e9b0: 45 4d 29 2e 0a 2a 2a 20 54 68 69 73 20 66 75 6e  EM)..** This fun
e9c0: 63 74 69 6f 6e 20 72 65 73 74 6f 72 65 73 20 74  ction restores t
e9d0: 68 65 20 6c 69 62 72 61 72 79 20 73 74 61 74 65  he library state
e9e0: 20 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20   so that it can 
e9f0: 62 65 20 75 73 65 64 20 61 67 61 69 6e 2e 0a 2a  be used again..*
ea00: 2a 0a 2a 2a 20 41 6c 6c 20 65 78 69 73 74 69 6e  *.** All existin
ea10: 67 20 73 74 61 74 65 6d 65 6e 74 73 20 28 73 71  g statements (sq
ea20: 6c 69 74 65 33 5f 73 74 6d 74 20 70 6f 69 6e 74  lite3_stmt point
ea30: 65 72 73 29 20 6d 75 73 74 20 62 65 20 66 69 6e  ers) must be fin
ea40: 61 6c 69 7a 65 64 20 6f 72 0a 2a 2a 20 72 65 73  alized or.** res
ea50: 65 74 20 62 65 66 6f 72 65 20 74 68 69 73 20 63  et before this c
ea60: 61 6c 6c 20 69 73 20 6d 61 64 65 2e 20 4f 74 68  all is made. Oth
ea70: 65 72 77 69 73 65 2c 20 53 51 4c 49 54 45 5f 42  erwise, SQLITE_B
ea80: 55 53 59 20 69 73 20 72 65 74 75 72 6e 65 64 2e  USY is returned.
ea90: 0a 2a 2a 20 49 66 20 61 6e 79 20 69 6e 2d 6d 65  .** If any in-me
eaa0: 6d 6f 72 79 20 64 61 74 61 62 61 73 65 73 20 61  mory databases a
eab0: 72 65 20 69 6e 20 75 73 65 2c 20 65 69 74 68 65  re in use, eithe
eac0: 72 20 61 73 20 61 20 6d 61 69 6e 20 6f 72 20 54  r as a main or T
ead0: 45 4d 50 0a 2a 2a 20 64 61 74 61 62 61 73 65 2c  EMP.** database,
eae0: 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 73   SQLITE_ERROR is
eaf0: 20 72 65 74 75 72 6e 65 64 2e 20 49 6e 20 65 69   returned. In ei
eb00: 74 68 65 72 20 6f 66 20 74 68 65 73 65 20 63 61  ther of these ca
eb10: 73 65 73 2c 20 74 68 65 20 0a 2a 2a 20 6c 69 62  ses, the .** lib
eb20: 72 61 72 79 20 69 73 20 6e 6f 74 20 72 65 73 65  rary is not rese
eb30: 74 20 61 6e 64 20 72 65 6d 61 69 6e 73 20 75 6e  t and remains un
eb40: 75 73 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  usable..**.** Th
eb50: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 2a  is function is *
eb60: 6e 6f 74 2a 20 74 68 72 65 61 64 73 61 66 65 2e  not* threadsafe.
eb70: 20 43 61 6c 6c 69 6e 67 20 74 68 69 73 20 66 72   Calling this fr
eb80: 6f 6d 20 77 69 74 68 69 6e 20 61 20 74 68 72 65  om within a thre
eb90: 61 64 65 64 0a 2a 2a 20 61 70 70 6c 69 63 61 74  aded.** applicat
eba0: 69 6f 6e 20 77 68 65 6e 20 74 68 72 65 61 64 73  ion when threads
ebb0: 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20   other than the 
ebc0: 63 61 6c 6c 65 72 20 68 61 76 65 20 75 73 65 64  caller have used
ebd0: 20 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20 64 61   SQLite is.** da
ebe0: 6e 67 65 72 6f 75 73 20 61 6e 64 20 77 69 6c 6c  ngerous and will
ebf0: 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c   almost certainl
ec00: 79 20 72 65 73 75 6c 74 20 69 6e 20 6d 61 6c 66  y result in malf
ec10: 75 6e 63 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20  unctions..**.** 
ec20: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69  This functionali
ec30: 74 79 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65  ty can be omitte
ec40: 64 20 66 72 6f 6d 20 61 20 62 75 69 6c 64 20 62  d from a build b
ec50: 79 20 64 65 66 69 6e 69 6e 67 20 74 68 65 20 0a  y defining the .
ec60: 2a 2a 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47  ** SQLITE_OMIT_G
ec70: 4c 4f 42 41 4c 52 45 43 4f 56 45 52 20 61 74 20  LOBALRECOVER at 
ec80: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 2a 2f  compile time..*/
ec90: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 6c 6f  .int sqlite3_glo
eca0: 62 61 6c 5f 72 65 63 6f 76 65 72 28 76 6f 69 64  bal_recover(void
ecb0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 65 73 74 20 74  );../*.** Test t
ecc0: 6f 20 73 65 65 20 77 68 65 74 68 65 72 20 6f 72  o see whether or
ecd0: 20 6e 6f 74 20 74 68 65 20 64 61 74 61 62 61 73   not the databas
ece0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
ecf0: 69 6e 20 61 75 74 6f 63 6f 6d 6d 69 74 0a 2a 2a  in autocommit.**
ed00: 20 6d 6f 64 65 2e 20 20 52 65 74 75 72 6e 20 54   mode.  Return T
ed10: 52 55 45 20 69 66 20 69 74 20 69 73 20 61 6e 64  RUE if it is and
ed20: 20 46 41 4c 53 45 20 69 66 20 6e 6f 74 2e 20 20   FALSE if not.  
ed30: 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20  Autocommit mode 
ed40: 69 73 20 6f 6e 0a 2a 2a 20 62 79 20 64 65 66 61  is on.** by defa
ed50: 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74  ult.  Autocommit
ed60: 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20   is disabled by 
ed70: 61 20 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e  a BEGIN statemen
ed80: 74 20 61 6e 64 20 72 65 65 6e 61 62 6c 65 64 0a  t and reenabled.
ed90: 2a 2a 20 62 79 20 74 68 65 20 6e 65 78 74 20 43  ** by the next C
eda0: 4f 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43  OMMIT or ROLLBAC
edb0: 4b 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  K..*/.int sqlite
edc0: 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
edd0: 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a  (sqlite3*);../*.
ede0: 2a 2a 20 52 65 74 75 72 6e 20 74 68 65 20 73 71  ** Return the sq
edf0: 6c 69 74 65 33 2a 20 64 61 74 61 62 61 73 65 20  lite3* database 
ee00: 68 61 6e 64 6c 65 20 74 6f 20 77 68 69 63 68 20  handle to which 
ee10: 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
ee20: 74 65 6d 65 6e 74 20 67 69 76 65 6e 0a 2a 2a 20  tement given.** 
ee30: 69 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  in the argument 
ee40: 62 65 6c 6f 6e 67 73 2e 20 20 54 68 69 73 20 69  belongs.  This i
ee50: 73 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62  s the same datab
ee60: 61 73 65 20 68 61 6e 64 6c 65 20 74 68 61 74 20  ase handle that 
ee70: 77 61 73 0a 2a 2a 20 74 68 65 20 66 69 72 73 74  was.** the first
ee80: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
ee90: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
eea0: 28 29 20 74 68 61 74 20 77 61 73 20 75 73 65 64  () that was used
eeb0: 20 74 6f 20 63 72 65 61 74 65 0a 2a 2a 20 74 68   to create.** th
eec0: 65 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 74  e statement in t
eed0: 68 65 20 66 69 72 73 74 20 70 6c 61 63 65 2e 0a  he first place..
eee0: 2a 2f 0a 73 71 6c 69 74 65 33 20 2a 73 71 6c 69  */.sqlite3 *sqli
eef0: 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 73 71  te3_db_handle(sq
ef00: 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f  lite3_stmt*);../
ef10: 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 20 61 20  *.** Register a 
ef20: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
ef30: 6e 20 77 69 74 68 20 74 68 65 20 64 61 74 61 62  n with the datab
ef40: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
ef50: 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65  dentified by the
ef60: 20 0a 2a 2a 20 66 69 72 73 74 20 61 72 67 75 6d   .** first argum
ef70: 65 6e 74 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65  ent to be invoke
ef80: 64 20 77 68 65 6e 65 76 65 72 20 61 20 72 6f 77  d whenever a row
ef90: 20 69 73 20 75 70 64 61 74 65 64 2c 20 69 6e 73   is updated, ins
efa0: 65 72 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64  erted or deleted
efb0: 2e 0a 2a 2a 20 41 6e 79 20 63 61 6c 6c 62 61 63  ..** Any callbac
efc0: 6b 20 73 65 74 20 62 79 20 61 20 70 72 65 76 69  k set by a previ
efd0: 6f 75 73 20 63 61 6c 6c 20 74 6f 20 74 68 69 73  ous call to this
efe0: 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68   function for th
eff0: 65 20 73 61 6d 65 20 0a 2a 2a 20 64 61 74 61 62  e same .** datab
f000: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
f010: 73 20 6f 76 65 72 72 69 64 64 65 6e 2e 0a 2a 2a  s overridden..**
f020: 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 61  .** The second a
f030: 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69  rgument is a poi
f040: 6e 74 65 72 20 74 6f 20 74 68 65 20 66 75 6e 63  nter to the func
f050: 74 69 6f 6e 20 74 6f 20 69 6e 76 6f 6b 65 20 77  tion to invoke w
f060: 68 65 6e 20 61 20 0a 2a 2a 20 72 6f 77 20 69 73  hen a .** row is
f070: 20 75 70 64 61 74 65 64 2c 20 69 6e 73 65 72 74   updated, insert
f080: 65 64 20 6f 72 20 64 65 6c 65 74 65 64 2e 20 54  ed or deleted. T
f090: 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
f0a0: 74 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63  t to the callbac
f0b0: 6b 20 69 73 0a 2a 2a 20 61 20 63 6f 70 79 20 6f  k is.** a copy o
f0c0: 66 20 74 68 65 20 74 68 69 72 64 20 61 72 67 75  f the third argu
f0d0: 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f  ment to sqlite3_
f0e0: 75 70 64 61 74 65 5f 68 6f 6f 6b 2e 20 54 68 65  update_hook. The
f0f0: 20 73 65 63 6f 6e 64 20 63 61 6c 6c 62 61 63 6b   second callback
f100: 20 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73   .** argument is
f110: 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 49   one of SQLITE_I
f120: 4e 53 45 52 54 2c 20 53 51 4c 49 54 45 5f 44 45  NSERT, SQLITE_DE
f130: 4c 45 54 45 20 6f 72 20 53 51 4c 49 54 45 5f 55  LETE or SQLITE_U
f140: 50 44 41 54 45 2c 20 64 65 70 65 6e 64 69 6e 67  PDATE, depending
f150: 0a 2a 2a 20 6f 6e 20 74 68 65 20 6f 70 65 72 61  .** on the opera
f160: 74 69 6f 6e 20 74 68 61 74 20 63 61 75 73 65 64  tion that caused
f170: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f   the callback to
f180: 20 62 65 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65   be invoked. The
f190: 20 74 68 69 72 64 20 61 6e 64 20 0a 2a 2a 20 66   third and .** f
f1a0: 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74 73 20  ourth arguments 
f1b0: 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  to the callback 
f1c0: 63 6f 6e 74 61 69 6e 20 70 6f 69 6e 74 65 72 73  contain pointers
f1d0: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
f1e0: 20 61 6e 64 20 0a 2a 2a 20 74 61 62 6c 65 20 6e   and .** table n
f1f0: 61 6d 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ame containing t
f200: 68 65 20 61 66 66 65 63 74 65 64 20 72 6f 77 2e  he affected row.
f210: 20 54 68 65 20 66 69 6e 61 6c 20 63 61 6c 6c 62   The final callb
f220: 61 63 6b 20 70 61 72 61 6d 65 74 65 72 20 69 73  ack parameter is
f230: 20 0a 2a 2a 20 74 68 65 20 72 6f 77 69 64 20 6f   .** the rowid o
f240: 66 20 74 68 65 20 72 6f 77 2e 20 49 6e 20 74 68  f the row. In th
f250: 65 20 63 61 73 65 20 6f 66 20 61 6e 20 75 70 64  e case of an upd
f260: 61 74 65 2c 20 74 68 69 73 20 69 73 20 74 68 65  ate, this is the
f270: 20 72 6f 77 69 64 20 61 66 74 65 72 20 0a 2a 2a   rowid after .**
f280: 20 74 68 65 20 75 70 64 61 74 65 20 74 61 6b 65   the update take
f290: 73 20 70 6c 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 54  s place..**.** T
f2a0: 68 65 20 75 70 64 61 74 65 20 68 6f 6f 6b 20 69  he update hook i
f2b0: 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 77 68  s not invoked wh
f2c0: 65 6e 20 69 6e 74 65 72 6e 61 6c 20 73 79 73 74  en internal syst
f2d0: 65 6d 20 74 61 62 6c 65 73 20 61 72 65 0a 2a 2a  em tables are.**
f2e0: 20 6d 6f 64 69 66 69 65 64 20 28 69 2e 65 2e 20   modified (i.e. 
f2f0: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 61 6e  sqlite_master an
f300: 64 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  d sqlite_sequenc
f310: 65 29 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 6f  e)..**.** If ano
f320: 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 20 77 61  ther function wa
f330: 73 20 70 72 65 76 69 6f 75 73 6c 79 20 72 65 67  s previously reg
f340: 69 73 74 65 72 65 64 2c 20 69 74 73 20 70 41 72  istered, its pAr
f350: 67 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  g value is retur
f360: 6e 65 64 2e 0a 2a 2a 20 4f 74 68 65 72 77 69 73  ned..** Otherwis
f370: 65 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e  e NULL is return
f380: 65 64 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  ed..*/.void *sql
f390: 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b  ite3_update_hook
f3a0: 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20  (.  sqlite3*, . 
f3b0: 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 2c   void(*)(void *,
f3c0: 69 6e 74 20 2c 63 68 61 72 20 63 6f 6e 73 74 20  int ,char const 
f3d0: 2a 2c 63 68 61 72 20 63 6f 6e 73 74 20 2a 2c 73  *,char const *,s
f3e0: 71 6c 69 74 65 5f 69 6e 74 36 34 29 2c 0a 20 20  qlite_int64),.  
f3f0: 76 6f 69 64 2a 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  void*.);../*.** 
f400: 52 65 67 69 73 74 65 72 20 61 20 63 61 6c 6c 62  Register a callb
f410: 61 63 6b 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65  ack to be invoke
f420: 64 20 77 68 65 6e 65 76 65 72 20 61 20 74 72 61  d whenever a tra
f430: 6e 73 61 63 74 69 6f 6e 20 69 73 20 72 6f 6c 6c  nsaction is roll
f440: 65 64 0a 2a 2a 20 62 61 63 6b 2e 20 0a 2a 2a 0a  ed.** back. .**.
f450: 2a 2a 20 54 68 65 20 6e 65 77 20 63 61 6c 6c 62  ** The new callb
f460: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 76 65  ack function ove
f470: 72 72 69 64 65 73 20 61 6e 79 20 65 78 69 73 74  rrides any exist
f480: 69 6e 67 20 72 6f 6c 6c 62 61 63 6b 2d 68 6f 6f  ing rollback-hoo
f490: 6b 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 2e 20 49  k.** callback. I
f4a0: 66 20 74 68 65 72 65 20 77 61 73 20 61 6e 20 65  f there was an e
f4b0: 78 69 73 74 69 6e 67 20 63 61 6c 6c 62 61 63 6b  xisting callback
f4c0: 2c 20 74 68 65 6e 20 69 74 27 73 20 70 41 72 67  , then it's pArg
f4d0: 20 76 61 6c 75 65 20 0a 2a 2a 20 28 74 68 65 20   value .** (the 
f4e0: 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74  third argument t
f4f0: 6f 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  o sqlite3_rollba
f500: 63 6b 5f 68 6f 6f 6b 28 29 20 77 68 65 6e 20 69  ck_hook() when i
f510: 74 20 77 61 73 20 72 65 67 69 73 74 65 72 65 64  t was registered
f520: 29 20 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e 65  ) .** is returne
f530: 64 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 4e 55  d. Otherwise, NU
f540: 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a  LL is returned..
f550: 2a 2a 0a 2a 2a 20 46 6f 72 20 74 68 65 20 70 75  **.** For the pu
f560: 72 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 41  rposes of this A
f570: 50 49 2c 20 61 20 74 72 61 6e 73 61 63 74 69 6f  PI, a transactio
f580: 6e 20 69 73 20 73 61 69 64 20 74 6f 20 68 61 76  n is said to hav
f590: 65 20 62 65 65 6e 20 0a 2a 2a 20 72 6f 6c 6c 65  e been .** rolle
f5a0: 64 20 62 61 63 6b 20 69 66 20 61 6e 20 65 78 70  d back if an exp
f5b0: 6c 69 63 69 74 20 22 52 4f 4c 4c 42 41 43 4b 22  licit "ROLLBACK"
f5c0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78   statement is ex
f5d0: 65 63 75 74 65 64 2c 20 6f 72 0a 2a 2a 20 61 6e  ecuted, or.** an
f5e0: 20 65 72 72 6f 72 20 6f 72 20 63 6f 6e 73 74 72   error or constr
f5f0: 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20 69  aint causes an i
f600: 6d 70 6c 69 63 69 74 20 72 6f 6c 6c 62 61 63 6b  mplicit rollback
f610: 20 74 6f 20 6f 63 63 75 72 2e 20 54 68 65 20 0a   to occur. The .
f620: 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 6e  ** callback is n
f630: 6f 74 20 69 6e 76 6f 6b 65 64 20 69 66 20 61 20  ot invoked if a 
f640: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 61  transaction is a
f650: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 6f 6c  utomatically rol
f660: 6c 65 64 0a 2a 2a 20 62 61 63 6b 20 62 65 63 61  led.** back beca
f670: 75 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65  use the database
f680: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63   connection is c
f690: 6c 6f 73 65 64 2e 0a 2a 2f 0a 76 6f 69 64 20 2a  losed..*/.void *
f6a0: 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
f6b0: 5f 68 6f 6f 6b 28 73 71 6c 69 74 65 33 2a 2c 20  _hook(sqlite3*, 
f6c0: 76 6f 69 64 28 2a 29 28 76 6f 69 64 20 2a 29 2c  void(*)(void *),
f6d0: 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20   void*);../*.** 
f6e0: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73  This function is
f6f0: 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
f700: 69 66 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  if the library i
f710: 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f  s compiled witho
f720: 75 74 0a 2a 2a 20 74 68 65 20 53 51 4c 49 54 45  ut.** the SQLITE
f730: 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43  _OMIT_SHARED_CAC
f740: 48 45 20 6d 61 63 72 6f 20 64 65 66 69 6e 65 64  HE macro defined
f750: 2e 20 49 74 20 69 73 20 75 73 65 64 20 74 6f 20  . It is used to 
f760: 65 6e 61 62 6c 65 20 6f 72 0a 2a 2a 20 64 69 73  enable or.** dis
f770: 61 62 6c 65 20 28 69 66 20 74 68 65 20 61 72 67  able (if the arg
f780: 75 6d 65 6e 74 20 69 73 20 74 72 75 65 20 6f 72  ument is true or
f790: 20 66 61 6c 73 65 2c 20 72 65 73 70 65 63 74 69   false, respecti
f7a0: 76 65 6c 79 29 20 74 68 65 20 0a 2a 2a 20 22 73  vely) the .** "s
f7b0: 68 61 72 65 64 20 70 61 67 65 72 22 20 66 65 61  hared pager" fea
f7c0: 74 75 72 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  ture..*/.int sql
f7d0: 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72  ite3_enable_shar
f7e0: 65 64 5f 63 61 63 68 65 28 69 6e 74 29 3b 0a 0a  ed_cache(int);..
f7f0: 2f 2a 0a 2a 2a 20 41 74 74 65 6d 70 74 20 74 6f  /*.** Attempt to
f800: 20 66 72 65 65 20 4e 20 62 79 74 65 73 20 6f 66   free N bytes of
f810: 20 68 65 61 70 20 6d 65 6d 6f 72 79 20 62 79 20   heap memory by 
f820: 64 65 61 6c 6c 6f 63 61 74 69 6e 67 20 6e 6f 6e  deallocating non
f830: 2d 65 73 73 65 6e 74 69 61 6c 0a 2a 2a 20 6d 65  -essential.** me
f840: 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mory allocations
f850: 20 68 65 6c 64 20 62 79 20 74 68 65 20 64 61 74   held by the dat
f860: 61 62 61 73 65 20 6c 69 62 72 61 72 79 20 28 65  abase library (e
f870: 78 61 6d 70 6c 65 3a 20 6d 65 6d 6f 72 79 20 0a  xample: memory .
f880: 2a 2a 20 75 73 65 64 20 74 6f 20 63 61 63 68 65  ** used to cache
f890: 20 64 61 74 61 62 61 73 65 20 70 61 67 65 73 20   database pages 
f8a0: 74 6f 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f  to improve perfo
f8b0: 72 6d 61 6e 63 65 29 2e 0a 2a 2a 0a 2a 2a 20 54  rmance)..**.** T
f8c0: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
f8d0: 6e 6f 74 20 61 20 70 61 72 74 20 6f 66 20 73 74  not a part of st
f8e0: 61 6e 64 61 72 64 20 62 75 69 6c 64 73 2e 20 20  andard builds.  
f8f0: 49 74 20 69 73 20 6f 6e 6c 79 20 63 72 65 61 74  It is only creat
f900: 65 64 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20  ed.** if SQLite 
f910: 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
f920: 20 74 68 65 20 53 51 4c 49 54 45 5f 45 4e 41 42   the SQLITE_ENAB
f930: 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45  LE_MEMORY_MANAGE
f940: 4d 45 4e 54 20 6d 61 63 72 6f 2e 0a 2a 2f 0a 69  MENT macro..*/.i
f950: 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  nt sqlite3_relea
f960: 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 29 3b 0a  se_memory(int);.
f970: 0a 2f 2a 0a 2a 2a 20 50 6c 61 63 65 20 61 20 22  ./*.** Place a "
f980: 73 6f 66 74 22 20 6c 69 6d 69 74 20 6f 6e 20 74  soft" limit on t
f990: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 68 65 61  he amount of hea
f9a0: 70 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 6d 61  p memory that ma
f9b0: 79 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 20 62  y be allocated b
f9c0: 79 0a 2a 2a 20 53 51 4c 69 74 65 20 77 69 74 68  y.** SQLite with
f9d0: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  in the current t
f9e0: 68 72 65 61 64 2e 20 49 66 20 61 6e 20 69 6e 74  hread. If an int
f9f0: 65 72 6e 61 6c 20 61 6c 6c 6f 63 61 74 69 6f 6e  ernal allocation
fa00: 20 69 73 20 72 65 71 75 65 73 74 65 64 20 0a 2a   is requested .*
fa10: 2a 20 74 68 61 74 20 77 6f 75 6c 64 20 65 78 63  * that would exc
fa20: 65 65 64 20 74 68 65 20 73 70 65 63 69 66 69 65  eed the specifie
fa30: 64 20 6c 69 6d 69 74 2c 20 73 71 6c 69 74 65 33  d limit, sqlite3
fa40: 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28  _release_memory(
fa50: 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20  ) is invoked.** 
fa60: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65  one or more time
fa70: 73 20 74 6f 20 66 72 65 65 20 75 70 20 73 6f 6d  s to free up som
fa80: 65 20 73 70 61 63 65 20 62 65 66 6f 72 65 20 74  e space before t
fa90: 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73  he allocation is
faa0: 20 6d 61 64 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   made..**.** The
fab0: 20 6c 69 6d 69 74 20 69 73 20 63 61 6c 6c 65 64   limit is called
fac0: 20 22 73 6f 66 74 22 2c 20 62 65 63 61 75 73 65   "soft", because
fad0: 20 69 66 20 73 71 6c 69 74 65 33 5f 72 65 6c 65   if sqlite3_rele
fae0: 61 73 65 5f 6d 65 6d 6f 72 79 28 29 20 63 61 6e  ase_memory() can
faf0: 6e 6f 74 20 66 72 65 65 0a 2a 2a 20 73 75 66 66  not free.** suff
fb00: 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 74 6f  icient memory to
fb10: 20 70 72 65 76 65 6e 74 20 74 68 65 20 6c 69 6d   prevent the lim
fb20: 69 74 20 66 72 6f 6d 20 62 65 69 6e 67 20 65 78  it from being ex
fb30: 63 65 65 64 65 64 2c 20 74 68 65 20 6d 65 6d 6f  ceeded, the memo
fb40: 72 79 20 69 73 0a 2a 2a 20 61 6c 6c 6f 63 61 74  ry is.** allocat
fb50: 65 64 20 61 6e 79 77 61 79 20 61 6e 64 20 74 68  ed anyway and th
fb60: 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74  e current operat
fb70: 69 6f 6e 20 70 72 6f 63 65 65 64 73 2e 0a 2a 2a  ion proceeds..**
fb80: 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f  .** This functio
fb90: 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  n is only availa
fba0: 62 6c 65 20 69 66 20 74 68 65 20 6c 69 62 72 61  ble if the libra
fbb0: 72 79 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20  ry was compiled 
fbc0: 77 69 74 68 20 74 68 65 20 0a 2a 2a 20 53 51 4c  with the .** SQL
fbd0: 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52  ITE_ENABLE_MEMOR
fbe0: 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 20 6f 70 74  Y_MANAGEMENT opt
fbf0: 69 6f 6e 20 73 65 74 2e 0a 2a 2a 20 6d 65 6d 6f  ion set..** memo
fc00: 72 79 2d 6d 61 6e 61 67 65 6d 65 6e 74 20 68 61  ry-management ha
fc10: 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 2e 0a  s been enabled..
fc20: 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  */.void sqlite3_
fc30: 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28  soft_heap_limit(
fc40: 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69  int);../*.** Thi
fc50: 73 20 72 6f 75 74 69 6e 65 20 6d 61 6b 65 73 20  s routine makes 
fc60: 73 75 72 65 20 74 68 61 74 20 61 6c 6c 20 74 68  sure that all th
fc70: 72 65 61 64 2d 6c 6f 63 61 6c 20 73 74 6f 72 61  read-local stora
fc80: 67 65 20 68 61 73 20 62 65 65 6e 0a 2a 2a 20 64  ge has been.** d
fc90: 65 61 6c 6c 6f 63 61 74 65 64 20 66 6f 72 20 74  eallocated for t
fca0: 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61  he current threa
fcb0: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f  d..**.** This ro
fcc0: 75 74 69 6e 65 20 69 73 20 6e 6f 74 20 74 65 63  utine is not tec
fcd0: 68 6e 69 63 61 6c 6c 79 20 6e 65 63 65 73 73 61  hnically necessa
fce0: 72 79 2e 20 20 41 6c 6c 20 74 68 72 65 61 64 2d  ry.  All thread-
fcf0: 6c 6f 63 61 6c 20 73 74 6f 72 61 67 65 0a 2a 2a  local storage.**
fd00: 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74   will be automat
fd10: 69 63 61 6c 6c 79 20 64 65 61 6c 6c 6f 63 61 74  ically deallocat
fd20: 65 64 20 6f 6e 63 65 20 6d 65 6d 6f 72 79 2d 6d  ed once memory-m
fd30: 61 6e 61 67 65 6d 65 6e 74 20 61 6e 64 0a 2a 2a  anagement and.**
fd40: 20 73 68 61 72 65 64 2d 63 61 63 68 65 20 61 72   shared-cache ar
fd50: 65 20 64 69 73 61 62 6c 65 64 20 61 6e 64 20 74  e disabled and t
fd60: 68 65 20 73 6f 66 74 20 68 65 61 70 20 6c 69 6d  he soft heap lim
fd70: 69 74 20 68 61 73 20 62 65 65 6e 20 73 65 74 0a  it has been set.
fd80: 2a 2a 20 74 6f 20 7a 65 72 6f 2e 20 20 54 68 69  ** to zero.  Thi
fd90: 73 20 72 6f 75 74 69 6e 65 20 69 73 20 70 72 6f  s routine is pro
fda0: 76 69 64 65 64 20 61 73 20 61 20 63 6f 6e 76 65  vided as a conve
fdb0: 6e 69 65 6e 63 65 20 66 6f 72 20 75 73 65 72 73  nience for users
fdc0: 20 77 68 6f 0a 2a 2a 20 77 61 6e 74 20 74 6f 20   who.** want to 
fdd0: 6d 61 6b 65 20 61 62 73 6f 6c 75 74 65 6c 79 20  make absolutely 
fde0: 73 75 72 65 20 74 68 65 79 20 68 61 76 65 20 6e  sure they have n
fdf0: 6f 74 20 66 6f 72 67 6f 74 74 65 6e 20 73 6f 6d  ot forgotten som
fe00: 65 74 68 69 6e 67 0a 2a 2a 20 70 72 69 6f 72 20  ething.** prior 
fe10: 74 6f 20 6b 69 6c 6c 69 6e 67 20 6f 66 66 20 61  to killing off a
fe20: 20 74 68 72 65 61 64 2e 0a 2a 2f 0a 76 6f 69 64   thread..*/.void
fe30: 20 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 5f   sqlite3_thread_
fe40: 63 6c 65 61 6e 75 70 28 76 6f 69 64 29 3b 0a 0a  cleanup(void);..
fe50: 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 6d 65 74  /*.** Return met
fe60: 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  a information ab
fe70: 6f 75 74 20 61 20 73 70 65 63 69 66 69 63 20 63  out a specific c
fe80: 6f 6c 75 6d 6e 20 6f 66 20 61 20 73 70 65 63 69  olumn of a speci
fe90: 66 69 63 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  fic database.** 
fea0: 74 61 62 6c 65 20 61 63 63 65 73 73 69 62 6c 65  table accessible
feb0: 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65   using the conne
fec0: 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20 70 61 73  ction handle pas
fed0: 73 65 64 20 61 73 20 74 68 65 20 66 69 72 73 74  sed as the first
fee0: 20 66 75 6e 63 74 69 6f 6e 20 0a 2a 2a 20 61 72   function .** ar
fef0: 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68  gument..**.** Th
ff00: 65 20 63 6f 6c 75 6d 6e 20 69 73 20 69 64 65 6e  e column is iden
ff10: 74 69 66 69 65 64 20 62 79 20 74 68 65 20 73 65  tified by the se
ff20: 63 6f 6e 64 2c 20 74 68 69 72 64 20 61 6e 64 20  cond, third and 
ff30: 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
ff40: 73 20 74 6f 20 0a 2a 2a 20 74 68 69 73 20 66 75  s to .** this fu
ff50: 6e 63 74 69 6f 6e 2e 20 54 68 65 20 73 65 63 6f  nction. The seco
ff60: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
ff70: 65 69 74 68 65 72 20 74 68 65 20 6e 61 6d 65 20  either the name 
ff80: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  of the database.
ff90: 2a 2a 20 28 69 2e 65 2e 20 22 6d 61 69 6e 22 2c  ** (i.e. "main",
ffa0: 20 22 74 65 6d 70 22 20 6f 72 20 61 6e 20 61 74   "temp" or an at
ffb0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 29  tached database)
ffc0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
ffd0: 73 70 65 63 69 66 69 65 64 0a 2a 2a 20 74 61 62  specified.** tab
ffe0: 6c 65 20 6f 72 20 4e 55 4c 4c 2e 20 49 66 20 69  le or NULL. If i
fff0: 74 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20  t is NULL, then 
10000 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74  all attached dat
10010 61 62 61 73 65 73 20 61 72 65 20 73 65 61 72 63  abases are searc
10020 68 65 64 0a 2a 2a 20 66 6f 72 20 74 68 65 20 74  hed.** for the t
10030 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 20 73  able using the s
10040 61 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 61 73  ame algorithm as
10050 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   the database en
10060 67 69 6e 65 20 75 73 65 73 20 74 6f 20 0a 2a 2a  gine uses to .**
10070 20 72 65 73 6f 6c 76 65 20 75 6e 71 75 61 6c 69   resolve unquali
10080 66 69 65 64 20 74 61 62 6c 65 20 72 65 66 65 72  fied table refer
10090 65 6e 63 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ences..**.** The
100a0 20 74 68 69 72 64 20 61 6e 64 20 66 6f 75 72 74   third and fourt
100b0 68 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20  h parameters to 
100c0 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 72  this function ar
100d0 65 20 74 68 65 20 74 61 62 6c 65 20 61 6e 64 20  e the table and 
100e0 63 6f 6c 75 6d 6e 20 0a 2a 2a 20 6e 61 6d 65 20  column .** name 
100f0 6f 66 20 74 68 65 20 64 65 73 69 72 65 64 20 63  of the desired c
10100 6f 6c 75 6d 6e 2c 20 72 65 73 70 65 63 74 69 76  olumn, respectiv
10110 65 6c 79 2e 20 4e 65 69 74 68 65 72 20 6f 66 20  ely. Neither of 
10120 74 68 65 73 65 20 70 61 72 61 6d 65 74 65 72 73  these parameters
10130 20 0a 2a 2a 20 6d 61 79 20 62 65 20 4e 55 4c 4c   .** may be NULL
10140 2e 0a 2a 2a 0a 2a 2a 20 4d 65 74 61 20 69 6e 66  ..**.** Meta inf
10150 6f 72 6d 61 74 69 6f 6e 20 69 73 20 72 65 74 75  ormation is retu
10160 72 6e 65 64 20 62 79 20 77 72 69 74 69 6e 67 20  rned by writing 
10170 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 6c 6f  to the memory lo
10180 63 61 74 69 6f 6e 73 20 70 61 73 73 65 64 20 61  cations passed a
10190 73 0a 2a 2a 20 74 68 65 20 35 74 68 20 61 6e 64  s.** the 5th and
101a0 20 73 75 62 73 65 71 75 65 6e 74 20 70 61 72 61   subsequent para
101b0 6d 65 74 65 72 73 20 74 6f 20 74 68 69 73 20 66  meters to this f
101c0 75 6e 63 74 69 6f 6e 2e 20 41 6e 79 20 6f 66 20  unction. Any of 
101d0 74 68 65 73 65 20 0a 2a 2a 20 61 72 67 75 6d 65  these .** argume
101e0 6e 74 73 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c  nts may be NULL,
101f0 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
10200 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  he corresponding
10210 20 65 6c 65 6d 65 6e 74 20 6f 66 20 6d 65 74 61   element of meta
10220 20 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   .** information
10230 20 69 73 20 6f 6d 6d 69 74 74 65 64 2e 0a 2a 2a   is ommitted..**
10240 0a 2a 2a 20 50 61 72 61 6d 65 74 65 72 20 20 20  .** Parameter   
10250 20 20 4f 75 74 70 75 74 20 54 79 70 65 20 20 20    Output Type   
10260 20 20 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 2a     Description.*
10270 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  * --------------
10280 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10290 2d 2d 2d 2d 2d 0a 2a 2a 0a 2a 2a 20 20 20 35 74  -----.**.**   5t
102a0 68 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20  h         const 
102b0 63 68 61 72 2a 20 20 20 20 20 20 44 61 74 61 20  char*      Data 
102c0 74 79 70 65 0a 2a 2a 20 20 20 36 74 68 20 20 20  type.**   6th   
102d0 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72        const char
102e0 2a 20 20 20 20 20 20 4e 61 6d 65 20 6f 66 20 74  *      Name of t
102f0 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61  he default colla
10300 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 0a 2a  tion sequence .*
10310 2a 20 20 20 37 74 68 20 20 20 20 20 20 20 20 20  *   7th         
10320 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20  int             
10330 20 54 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c   True if the col
10340 75 6d 6e 20 68 61 73 20 61 20 4e 4f 54 20 4e 55  umn has a NOT NU
10350 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a  LL constraint.**
10360 20 20 20 38 74 68 20 20 20 20 20 20 20 20 20 69     8th         i
10370 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  nt              
10380 54 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75  True if the colu
10390 6d 6e 20 69 73 20 70 61 72 74 20 6f 66 20 74 68  mn is part of th
103a0 65 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 2a 2a  e PRIMARY KEY.**
103b0 20 20 20 39 74 68 20 20 20 20 20 20 20 20 20 69     9th         i
103c0 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  nt              
103d0 54 72 75 65 20 69 66 20 74 68 65 20 63 6f 6c 75  True if the colu
103e0 6d 6e 20 69 73 20 41 55 54 4f 49 4e 43 52 45 4d  mn is AUTOINCREM
103f0 45 4e 54 0a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 65  ENT.**.**.** The
10400 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65 64 20   memory pointed 
10410 74 6f 20 62 79 20 74 68 65 20 63 68 61 72 61 63  to by the charac
10420 74 65 72 20 70 6f 69 6e 74 65 72 73 20 72 65 74  ter pointers ret
10430 75 72 6e 65 64 20 66 6f 72 20 74 68 65 20 0a 2a  urned for the .*
10440 2a 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 74 79  * declaration ty
10450 70 65 20 61 6e 64 20 63 6f 6c 6c 61 74 69 6f 6e  pe and collation
10460 20 73 65 71 75 65 6e 63 65 20 69 73 20 76 61 6c   sequence is val
10470 69 64 20 6f 6e 6c 79 20 75 6e 74 69 6c 20 74 68  id only until th
10480 65 20 6e 65 78 74 20 0a 2a 2a 20 63 61 6c 6c 20  e next .** call 
10490 74 6f 20 61 6e 79 20 73 71 6c 69 74 65 20 41 50  to any sqlite AP
104a0 49 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a  I function..**.*
104b0 2a 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69  * If the specifi
104c0 65 64 20 74 61 62 6c 65 20 69 73 20 61 63 74 75  ed table is actu
104d0 61 6c 6c 79 20 61 20 76 69 65 77 2c 20 74 68 65  ally a view, the
104e0 6e 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72 65  n an error is re
104f0 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66  turned..**.** If
10500 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
10510 6f 6c 75 6d 6e 20 69 73 20 22 72 6f 77 69 64 22  olumn is "rowid"
10520 2c 20 22 6f 69 64 22 20 6f 72 20 22 5f 72 6f 77  , "oid" or "_row
10530 69 64 5f 22 20 61 6e 64 20 61 6e 20 0a 2a 2a 20  id_" and an .** 
10540 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
10550 4b 45 59 20 63 6f 6c 75 6d 6e 20 68 61 73 20 62  KEY column has b
10560 65 65 6e 20 65 78 70 6c 69 63 69 74 6c 79 20 64  een explicitly d
10570 65 63 6c 61 72 65 64 2c 20 74 68 65 6e 20 74 68  eclared, then th
10580 65 20 6f 75 74 70 75 74 20 0a 2a 2a 20 70 61 72  e output .** par
10590 61 6d 65 74 65 72 73 20 61 72 65 20 73 65 74 20  ameters are set 
105a0 66 6f 72 20 74 68 65 20 65 78 70 6c 69 63 69 74  for the explicit
105b0 6c 79 20 64 65 63 6c 61 72 65 64 20 63 6f 6c 75  ly declared colu
105c0 6d 6e 2e 20 49 66 20 74 68 65 72 65 20 69 73 20  mn. If there is 
105d0 6e 6f 0a 2a 2a 20 65 78 70 6c 69 63 69 74 6c 79  no.** explicitly
105e0 20 64 65 63 6c 61 72 65 64 20 49 50 4b 20 63 6f   declared IPK co
105f0 6c 75 6d 6e 2c 20 74 68 65 6e 20 74 68 65 20 6f  lumn, then the o
10600 75 74 70 75 74 20 70 61 72 61 6d 65 74 65 72 73  utput parameters
10610 20 61 72 65 20 73 65 74 20 61 73 20 0a 2a 2a 20   are set as .** 
10620 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20  follows:.**.**  
10630 20 20 20 64 61 74 61 20 74 79 70 65 3a 20 22 49     data type: "I
10640 4e 54 45 47 45 52 22 0a 2a 2a 20 20 20 20 20 63  NTEGER".**     c
10650 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
10660 65 3a 20 22 42 49 4e 41 52 59 22 0a 2a 2a 20 20  e: "BINARY".**  
10670 20 20 20 6e 6f 74 20 6e 75 6c 6c 3a 20 30 0a 2a     not null: 0.*
10680 2a 20 20 20 20 20 70 72 69 6d 61 72 79 20 6b 65  *     primary ke
10690 79 3a 20 31 0a 2a 2a 20 20 20 20 20 61 75 74 6f  y: 1.**     auto
106a0 20 69 6e 63 72 65 6d 65 6e 74 3a 20 30 0a 2a 2a   increment: 0.**
106b0 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f  .** This functio
106c0 6e 20 6d 61 79 20 6c 6f 61 64 20 6f 6e 65 20 6f  n may load one o
106d0 72 20 6d 6f 72 65 20 73 63 68 65 6d 61 73 20 66  r more schemas f
106e0 72 6f 6d 20 64 61 74 61 62 61 73 65 20 66 69 6c  rom database fil
106f0 65 73 2e 20 49 66 20 61 6e 0a 2a 2a 20 65 72 72  es. If an.** err
10700 6f 72 20 6f 63 63 75 72 73 20 64 75 72 69 6e 67  or occurs during
10710 20 74 68 69 73 20 70 72 6f 63 65 73 73 2c 20 6f   this process, o
10720 72 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74  r if the request
10730 65 64 20 74 61 62 6c 65 20 6f 72 20 63 6f 6c 75  ed table or colu
10740 6d 6e 0a 2a 2a 20 63 61 6e 6e 6f 74 20 62 65 20  mn.** cannot be 
10750 66 6f 75 6e 64 2c 20 61 6e 20 53 51 4c 49 54 45  found, an SQLITE
10760 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72   error code is r
10770 65 74 75 72 6e 65 64 20 61 6e 64 20 61 6e 20 65  eturned and an e
10780 72 72 6f 72 20 6d 65 73 73 61 67 65 0a 2a 2a 20  rror message.** 
10790 6c 65 66 74 20 69 6e 20 74 68 65 20 64 61 74 61  left in the data
107a0 62 61 73 65 20 68 61 6e 64 6c 65 20 28 74 6f 20  base handle (to 
107b0 62 65 20 72 65 74 72 69 65 76 65 64 20 75 73 69  be retrieved usi
107c0 6e 67 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  ng sqlite3_errms
107d0 67 28 29 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  g())..**.** This
107e0 20 41 50 49 20 69 73 20 6f 6e 6c 79 20 61 76 61   API is only ava
107f0 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20 6c 69  ilable if the li
10800 62 72 61 72 79 20 77 61 73 20 63 6f 6d 70 69 6c  brary was compil
10810 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 53  ed with the.** S
10820 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c  QLITE_ENABLE_COL
10830 55 4d 4e 5f 4d 45 54 41 44 41 54 41 20 70 72 65  UMN_METADATA pre
10840 70 72 6f 63 65 73 73 6f 72 20 73 79 6d 62 6f 6c  processor symbol
10850 20 64 65 66 69 6e 65 64 2e 0a 2a 2f 0a 69 6e 74   defined..*/.int
10860 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
10870 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 0a  olumn_metadata(.
10880 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20    sqlite3 *db,  
10890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
108a0 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   Connection hand
108b0 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
108c0 61 72 20 2a 7a 44 62 4e 61 6d 65 2c 20 20 20 20  ar *zDbName,    
108d0 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
108e0 6e 61 6d 65 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a  name or NULL */.
108f0 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 54    const char *zT
10900 61 62 6c 65 4e 61 6d 65 2c 20 20 20 20 20 2f 2a  ableName,     /*
10910 20 54 61 62 6c 65 20 6e 61 6d 65 20 2a 2f 0a 20   Table name */. 
10920 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 43 6f   const char *zCo
10930 6c 75 6d 6e 4e 61 6d 65 2c 20 20 20 20 2f 2a 20  lumnName,    /* 
10940 43 6f 6c 75 6d 6e 20 6e 61 6d 65 20 2a 2f 0a 20  Column name */. 
10950 20 63 68 61 72 20 63 6f 6e 73 74 20 2a 2a 70 7a   char const **pz
10960 44 61 74 61 54 79 70 65 2c 20 20 20 20 2f 2a 20  DataType,    /* 
10970 4f 55 54 50 55 54 3a 20 44 65 63 6c 61 72 65 64  OUTPUT: Declared
10980 20 64 61 74 61 20 74 79 70 65 20 2a 2f 0a 20 20   data type */.  
10990 63 68 61 72 20 63 6f 6e 73 74 20 2a 2a 70 7a 43  char const **pzC
109a0 6f 6c 6c 53 65 71 2c 20 20 20 20 20 2f 2a 20 4f  ollSeq,     /* O
109b0 55 54 50 55 54 3a 20 43 6f 6c 6c 61 74 69 6f 6e  UTPUT: Collation
109c0 20 73 65 71 75 65 6e 63 65 20 6e 61 6d 65 20 2a   sequence name *
109d0 2f 0a 20 20 69 6e 74 20 2a 70 4e 6f 74 4e 75 6c  /.  int *pNotNul
109e0 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  l,              
109f0 2f 2a 20 4f 55 54 50 55 54 3a 20 54 72 75 65 20  /* OUTPUT: True 
10a00 69 66 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73  if NOT NULL cons
10a10 74 72 61 69 6e 74 20 65 78 69 73 74 73 20 2a 2f  traint exists */
10a20 0a 20 20 69 6e 74 20 2a 70 50 72 69 6d 61 72 79  .  int *pPrimary
10a30 4b 65 79 2c 20 20 20 20 20 20 20 20 20 20 20 2f  Key,           /
10a40 2a 20 4f 55 54 50 55 54 3a 20 54 72 75 65 20 69  * OUTPUT: True i
10a50 66 20 63 6f 6c 75 6d 6e 20 70 61 72 74 20 6f 66  f column part of
10a60 20 50 4b 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 41   PK */.  int *pA
10a70 75 74 6f 69 6e 63 20 20 20 20 20 20 20 20 20 20  utoinc          
10a80 20 20 20 20 20 2f 2a 20 4f 55 54 50 55 54 3a 20       /* OUTPUT: 
10a90 54 72 75 65 20 69 66 20 63 6f 6c 75 6d 73 20 69  True if colums i
10aa0 73 20 61 75 74 6f 2d 69 6e 63 72 65 6d 65 6e 74  s auto-increment
10ab0 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a   */.);../*.*****
10ac0 2a 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d  * EXPERIMENTAL -
10ad0 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e   subject to chan
10ae0 67 65 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63  ge without notic
10af0 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e **************
10b00 0a 2a 2a 0a 2a 2a 20 41 74 74 65 6d 70 74 20 74  .**.** Attempt t
10b10 6f 20 6c 6f 61 64 20 61 6e 20 53 51 4c 69 74 65  o load an SQLite
10b20 20 65 78 74 65 6e 73 69 6f 6e 20 6c 69 62 72 61   extension libra
10b30 72 79 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20  ry contained in 
10b40 74 68 65 20 66 69 6c 65 0a 2a 2a 20 7a 46 69 6c  the file.** zFil
10b50 65 2e 20 20 54 68 65 20 65 6e 74 72 79 20 70 6f  e.  The entry po
10b60 69 6e 74 20 69 73 20 7a 50 72 6f 63 2e 20 20 7a  int is zProc.  z
10b70 50 72 6f 63 20 6d 61 79 20 62 65 20 30 20 69 6e  Proc may be 0 in
10b80 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 0a   which case the.
10b90 2a 2a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  ** name of the e
10ba0 6e 74 72 79 20 70 6f 69 6e 74 20 64 65 66 61 75  ntry point defau
10bb0 6c 74 73 20 74 6f 20 22 73 71 6c 69 74 65 33 5f  lts to "sqlite3_
10bc0 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 22 2e  extension_init".
10bd0 0a 2a 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 53 51  .**.** Return SQ
10be0 4c 49 54 45 5f 4f 4b 20 6f 6e 20 73 75 63 63 65  LITE_OK on succe
10bf0 73 73 20 61 6e 64 20 53 51 4c 49 54 45 5f 45 52  ss and SQLITE_ER
10c00 52 4f 52 20 69 66 20 73 6f 6d 65 74 68 69 6e 67  ROR if something
10c10 20 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2a 2a 0a   goes wrong..**.
10c20 2a 2a 20 49 66 20 61 6e 20 65 72 72 6f 72 20 6f  ** If an error o
10c30 63 63 75 72 73 20 61 6e 64 20 70 7a 45 72 72 4d  ccurs and pzErrM
10c40 73 67 20 69 73 20 6e 6f 74 20 30 2c 20 74 68 65  sg is not 0, the
10c50 6e 20 66 69 6c 6c 20 2a 70 7a 45 72 72 4d 73 67  n fill *pzErrMsg
10c60 20 77 69 74 68 20 0a 2a 2a 20 65 72 72 6f 72 20   with .** error 
10c70 6d 65 73 73 61 67 65 20 74 65 78 74 2e 20 20 54  message text.  T
10c80 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74  he calling funct
10c90 69 6f 6e 20 73 68 6f 75 6c 64 20 66 72 65 65 20  ion should free 
10ca0 74 68 69 73 20 6d 65 6d 6f 72 79 0a 2a 2a 20 62  this memory.** b
10cb0 79 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65  y calling sqlite
10cc0 33 5f 66 72 65 65 28 29 2e 0a 2a 2a 0a 2a 2a 20  3_free()..**.** 
10cd0 45 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e  Extension loadin
10ce0 67 20 6d 75 73 74 20 62 65 20 65 6e 61 62 6c 65  g must be enable
10cf0 64 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  d using sqlite3_
10d00 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65  enable_load_exte
10d10 6e 73 69 6f 6e 28 29 0a 2a 2a 20 70 72 69 6f 72  nsion().** prior
10d20 20 74 6f 20 63 61 6c 6c 69 6e 67 20 74 68 69 73   to calling this
10d30 20 41 50 49 20 6f 72 20 61 6e 20 65 72 72 6f 72   API or an error
10d40 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65   will be returne
10d50 64 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 20 45 58 50  d..**.****** EXP
10d60 45 52 49 4d 45 4e 54 41 4c 20 2d 20 73 75 62 6a  ERIMENTAL - subj
10d70 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20 77 69  ect to change wi
10d80 74 68 6f 75 74 20 6e 6f 74 69 63 65 20 2a 2a 2a  thout notice ***
10d90 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2f 0a 69  ***********.*/.i
10da0 6e 74 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f  nt sqlite3_load_
10db0 65 78 74 65 6e 73 69 6f 6e 28 0a 20 20 73 71 6c  extension(.  sql
10dc0 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
10dd0 20 20 20 2f 2a 20 4c 6f 61 64 20 74 68 65 20 65     /* Load the e
10de0 78 74 65 6e 73 69 6f 6e 20 69 6e 74 6f 20 74 68  xtension into th
10df0 69 73 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  is database conn
10e00 65 63 74 69 6f 6e 20 2a 2f 0a 20 20 63 6f 6e 73  ection */.  cons
10e10 74 20 63 68 61 72 20 2a 7a 46 69 6c 65 2c 20 20  t char *zFile,  
10e20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 65    /* Name of the
10e30 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 79 20   shared library 
10e40 63 6f 6e 74 61 69 6e 69 6e 67 20 65 78 74 65 6e  containing exten
10e50 73 69 6f 6e 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  sion */.  const 
10e60 63 68 61 72 20 2a 7a 50 72 6f 63 2c 20 20 20 20  char *zProc,    
10e70 2f 2a 20 45 6e 74 72 79 20 70 6f 69 6e 74 2e 20  /* Entry point. 
10e80 20 44 65 72 69 76 65 64 20 66 72 6f 6d 20 7a 46   Derived from zF
10e90 69 6c 65 20 69 66 20 30 20 2a 2f 0a 20 20 63 68  ile if 0 */.  ch
10ea0 61 72 20 2a 2a 70 7a 45 72 72 4d 73 67 20 20 20  ar **pzErrMsg   
10eb0 20 20 20 20 2f 2a 20 50 75 74 20 65 72 72 6f 72      /* Put error
10ec0 20 6d 65 73 73 61 67 65 20 68 65 72 65 20 69 66   message here if
10ed0 20 6e 6f 74 20 30 20 2a 2f 0a 29 3b 0a 0a 2f 2a   not 0 */.);../*
10ee0 0a 2a 2a 20 53 6f 20 61 73 20 6e 6f 74 20 74 6f  .** So as not to
10ef0 20 6f 70 65 6e 20 73 65 63 75 72 69 74 79 20 68   open security h
10f00 6f 6c 65 73 20 69 6e 20 6f 6c 64 65 72 20 61 70  oles in older ap
10f10 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
10f20 61 72 65 0a 2a 2a 20 75 6e 70 72 65 70 61 72 65  are.** unprepare
10f30 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 65  d to deal with e
10f40 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 2c 20 61  xtension load, a
10f50 6e 64 20 61 73 20 61 20 6d 65 61 6e 73 20 6f 66  nd as a means of
10f60 20 64 69 73 61 62 6c 69 6e 67 0a 2a 2a 20 65 78   disabling.** ex
10f70 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67 20  tension loading 
10f80 77 68 69 6c 65 20 65 78 65 63 75 74 69 6e 67 20  while executing 
10f90 75 73 65 72 2d 65 6e 74 65 72 65 64 20 53 51 4c  user-entered SQL
10fa0 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a  , the following.
10fb0 2a 2a 20 41 50 49 20 69 73 20 70 72 6f 76 69 64  ** API is provid
10fc0 65 64 20 74 6f 20 74 75 72 6e 20 74 68 65 20 65  ed to turn the e
10fd0 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
10fe0 20 6d 65 63 68 61 6e 69 73 6d 20 6f 6e 20 61 6e   mechanism on an
10ff0 64 0a 2a 2a 20 6f 66 66 2e 20 20 49 74 20 69 73  d.** off.  It is
11000 20 6f 66 66 20 62 79 20 64 65 66 61 75 6c 74 2e   off by default.
11010 20 20 53 65 65 20 74 69 63 6b 65 74 20 23 31 38    See ticket #18
11020 36 33 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c 20 74  63..**.** Call t
11030 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68  his routine with
11040 20 6f 6e 6f 66 66 3d 3d 31 20 74 6f 20 74 75 72   onoff==1 to tur
11050 6e 20 65 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64  n extension load
11060 69 6e 67 20 6f 6e 0a 2a 2a 20 61 6e 64 20 63 61  ing on.** and ca
11070 6c 6c 20 69 74 20 77 69 74 68 20 6f 6e 6f 66 66  ll it with onoff
11080 3d 3d 30 20 74 6f 20 74 75 72 6e 20 69 74 20 62  ==0 to turn it b
11090 61 63 6b 20 6f 66 66 20 61 67 61 69 6e 2e 0a 2a  ack off again..*
110a0 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 6e  /.int sqlite3_en
110b0 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  able_load_extens
110c0 69 6f 6e 28 73 71 6c 69 74 65 33 20 2a 64 62 2c  ion(sqlite3 *db,
110d0 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a   int onoff);../*
110e0 0a 2a 2a 2a 2a 2a 2a 20 45 58 50 45 52 49 4d 45  .****** EXPERIME
110f0 4e 54 41 4c 20 2d 20 73 75 62 6a 65 63 74 20 74  NTAL - subject t
11100 6f 20 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74  o change without
11110 20 6e 6f 74 69 63 65 20 2a 2a 2a 2a 2a 2a 2a 2a   notice ********
11120 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 52 65 67  ******.**.** Reg
11130 69 73 74 65 72 20 61 6e 20 65 78 74 65 6e 73 69  ister an extensi
11140 6f 6e 20 65 6e 74 72 79 20 70 6f 69 6e 74 20 74  on entry point t
11150 68 61 74 20 69 73 20 61 75 74 6f 6d 61 74 69 63  hat is automatic
11160 61 6c 6c 79 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20  ally invoked.** 
11170 77 68 65 6e 65 76 65 72 20 61 20 6e 65 77 20 64  whenever a new d
11180 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
11190 6f 6e 20 69 73 20 6f 70 65 6e 65 64 2e 0a 2a 2a  on is opened..**
111a0 0a 2a 2a 20 54 68 69 73 20 41 50 49 20 63 61 6e  .** This API can
111b0 20 62 65 20 69 6e 76 6f 6b 65 64 20 61 74 20 70   be invoked at p
111c0 72 6f 67 72 61 6d 20 73 74 61 72 74 75 70 20 69  rogram startup i
111d0 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 67 69 73  n order to regis
111e0 74 65 72 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f  ter.** one or mo
111f0 72 65 20 73 74 61 74 69 63 61 6c 6c 79 20 6c 69  re statically li
11200 6e 6b 65 64 20 65 78 74 65 6e 73 69 6f 6e 73 20  nked extensions 
11210 74 68 61 74 20 77 69 6c 6c 20 62 65 20 61 76 61  that will be ava
11220 69 6c 61 62 6c 65 0a 2a 2a 20 74 6f 20 61 6c 6c  ilable.** to all
11230 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f   new database co
11240 6e 6e 65 63 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  nnections..**.**
11250 20 44 75 70 6c 69 63 61 74 65 20 65 78 74 65 6e   Duplicate exten
11260 73 69 6f 6e 73 20 61 72 65 20 64 65 74 65 63 74  sions are detect
11270 65 64 20 73 6f 20 63 61 6c 6c 69 6e 67 20 74 68  ed so calling th
11280 69 73 20 72 6f 75 74 69 6e 65 20 6d 75 6c 74 69  is routine multi
11290 70 6c 65 0a 2a 2a 20 74 69 6d 65 73 20 77 69 74  ple.** times wit
112a0 68 20 74 68 65 20 73 61 6d 65 20 65 78 74 65 6e  h the same exten
112b0 73 69 6f 6e 20 69 73 20 68 61 72 6d 6c 65 73 73  sion is harmless
112c0 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75  ..**.** This rou
112d0 74 69 6e 65 20 73 74 6f 72 65 73 20 61 20 70 6f  tine stores a po
112e0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 65 78 74  inter to the ext
112f0 65 6e 73 69 6f 6e 20 69 6e 20 61 6e 20 61 72 72  ension in an arr
11300 61 79 0a 2a 2a 20 74 68 61 74 20 69 73 20 6f 62  ay.** that is ob
11310 74 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c  tained from mall
11320 6f 63 28 29 2e 20 20 49 66 20 79 6f 75 20 72 75  oc().  If you ru
11330 6e 20 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 0a  n a memory leak.
11340 2a 2a 20 63 68 65 63 6b 65 72 20 6f 6e 20 79 6f  ** checker on yo
11350 75 72 20 70 72 6f 67 72 61 6d 20 61 6e 64 20 69  ur program and i
11360 74 20 72 65 70 6f 72 74 73 20 61 20 6c 65 61 6b  t reports a leak
11370 20 62 65 63 61 75 73 65 20 6f 66 20 74 68 69 73   because of this
11380 0a 2a 2a 20 61 72 72 61 79 2c 20 74 68 65 6e 20  .** array, then 
11390 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 61  invoke sqlite3_a
113a0 75 74 6f 6d 61 74 69 63 5f 65 78 74 65 6e 73 69  utomatic_extensi
113b0 6f 6e 5f 72 65 73 65 74 28 29 20 70 72 69 6f 72  on_reset() prior
113c0 0a 2a 2a 20 74 6f 20 73 68 75 74 64 6f 77 6e 20  .** to shutdown 
113d0 74 6f 20 66 72 65 65 20 74 68 65 20 6d 65 6d 6f  to free the memo
113e0 72 79 2e 0a 2a 2a 0a 2a 2a 20 41 75 74 6f 6d 61  ry..**.** Automa
113f0 74 69 63 20 65 78 74 65 6e 73 69 6f 6e 73 20 61  tic extensions a
11400 70 70 6c 79 20 61 63 72 6f 73 73 20 61 6c 6c 20  pply across all 
11410 74 68 72 65 61 64 73 2e 0a 2a 2f 0a 69 6e 74 20  threads..*/.int 
11420 73 71 6c 69 74 65 33 5f 61 75 74 6f 5f 65 78 74  sqlite3_auto_ext
11430 65 6e 73 69 6f 6e 28 76 6f 69 64 20 2a 78 45 6e  ension(void *xEn
11440 74 72 79 50 6f 69 6e 74 29 3b 0a 0a 0a 2f 2a 0a  tryPoint);.../*.
11450 2a 2a 2a 2a 2a 2a 20 45 58 50 45 52 49 4d 45 4e  ****** EXPERIMEN
11460 54 41 4c 20 2d 20 73 75 62 6a 65 63 74 20 74 6f  TAL - subject to
11470 20 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74 20   change without 
11480 6e 6f 74 69 63 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  notice *********
11490 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 44 69 73 61  *****.**.** Disa
114a0 62 6c 65 20 61 6c 6c 20 70 72 65 76 69 6f 75 73  ble all previous
114b0 6c 79 20 72 65 67 69 73 74 65 72 65 64 20 61 75  ly registered au
114c0 74 6f 6d 61 74 69 63 20 65 78 74 65 6e 73 69 6f  tomatic extensio
114d0 6e 73 2e 20 20 54 68 69 73 0a 2a 2a 20 72 6f 75  ns.  This.** rou
114e0 74 69 6e 65 20 75 6e 64 6f 65 73 20 74 68 65 20  tine undoes the 
114f0 65 66 66 65 63 74 20 6f 66 20 61 6c 6c 20 70 72  effect of all pr
11500 69 6f 72 20 73 71 6c 69 74 65 33 5f 61 75 74 6f  ior sqlite3_auto
11510 6d 61 74 69 63 5f 65 78 74 65 6e 73 69 6f 6e 28  matic_extension(
11520 29 0a 2a 2a 20 63 61 6c 6c 73 2e 0a 2a 2a 0a 2a  ).** calls..**.*
11530 2a 20 54 68 69 73 20 63 61 6c 6c 20 64 69 73 61  * This call disa
11540 62 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 20 65  bled automatic e
11550 78 74 65 6e 73 69 6f 6e 73 20 69 6e 20 61 6c 6c  xtensions in all
11560 20 74 68 72 65 61 64 73 2e 0a 2a 2f 0a 76 6f 69   threads..*/.voi
11570 64 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f  d sqlite3_reset_
11580 61 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 28 76  auto_extension(v
11590 6f 69 64 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a  oid);.../*.*****
115a0 2a 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d  * EXPERIMENTAL -
115b0 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e   subject to chan
115c0 67 65 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63  ge without notic
115d0 65 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e **************
115e0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 74 65 72  .**.** The inter
115f0 66 61 63 65 20 74 6f 20 74 68 65 20 76 69 72 74  face to the virt
11600 75 61 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e  ual-table mechan
11610 69 73 6d 20 69 73 20 63 75 72 72 65 6e 74 6c 79  ism is currently
11620 20 63 6f 6e 73 69 64 65 72 65 64 0a 2a 2a 20 74   considered.** t
11630 6f 20 62 65 20 65 78 70 65 72 69 6d 65 6e 74 61  o be experimenta
11640 6c 2e 20 20 54 68 65 20 69 6e 74 65 72 66 61 63  l.  The interfac
11650 65 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 69  e might change i
11660 6e 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77  n incompatible w
11670 61 79 73 2e 0a 2a 2a 20 49 66 20 74 68 69 73 20  ays..** If this 
11680 69 73 20 61 20 70 72 6f 62 6c 65 6d 20 66 6f 72  is a problem for
11690 20 79 6f 75 2c 20 64 6f 20 6e 6f 74 20 75 73 65   you, do not use
116a0 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 61   the interface a
116b0 74 20 74 68 69 73 20 74 69 6d 65 2e 0a 2a 2a 0a  t this time..**.
116c0 2a 2a 20 57 68 65 6e 20 74 68 65 20 76 69 72 74  ** When the virt
116d0 75 61 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e  ual-table mechan
116e0 69 73 6d 20 73 74 61 62 6c 69 7a 65 73 2c 20 77  ism stablizes, w
116f0 65 20 77 69 6c 6c 20 64 65 63 6c 61 72 65 20 74  e will declare t
11700 68 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  he.** interface 
11710 66 69 78 65 64 2c 20 73 75 70 70 6f 72 74 20 69  fixed, support i
11720 74 20 69 6e 64 65 66 69 6e 69 74 65 6c 79 2c 20  t indefinitely, 
11730 61 6e 64 20 72 65 6d 6f 76 65 20 74 68 69 73 20  and remove this 
11740 63 6f 6d 6d 65 6e 74 2e 0a 2a 2f 0a 0a 2f 2a 0a  comment..*/../*.
11750 2a 2a 20 53 74 72 75 63 74 75 72 65 73 20 75 73  ** Structures us
11760 65 64 20 62 79 20 74 68 65 20 76 69 72 74 75 61  ed by the virtua
11770 6c 20 74 61 62 6c 65 20 69 6e 74 65 72 66 61 63  l table interfac
11780 65 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  e.*/.typedef str
11790 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
117a0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 3b 0a 74   sqlite3_vtab;.t
117b0 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71  ypedef struct sq
117c0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
117d0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
117e0 6e 66 6f 3b 0a 74 79 70 65 64 65 66 20 73 74 72  nfo;.typedef str
117f0 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
11800 5f 63 75 72 73 6f 72 20 73 71 6c 69 74 65 33 5f  _cursor sqlite3_
11810 76 74 61 62 5f 63 75 72 73 6f 72 3b 0a 74 79 70  vtab_cursor;.typ
11820 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69  edef struct sqli
11830 74 65 33 5f 6d 6f 64 75 6c 65 20 73 71 6c 69 74  te3_module sqlit
11840 65 33 5f 6d 6f 64 75 6c 65 3b 0a 0a 2f 2a 0a 2a  e3_module;../*.*
11850 2a 20 41 20 6d 6f 64 75 6c 65 20 69 73 20 61 20  * A module is a 
11860 63 6c 61 73 73 20 6f 66 20 76 69 72 74 75 61 6c  class of virtual
11870 20 74 61 62 6c 65 73 2e 20 20 45 61 63 68 20 6d   tables.  Each m
11880 6f 64 75 6c 65 20 69 73 20 64 65 66 69 6e 65 64  odule is defined
11890 0a 2a 2a 20 62 79 20 61 6e 20 69 6e 73 74 61 6e  .** by an instan
118a0 63 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ce of the follow
118b0 69 6e 67 20 73 74 72 75 63 74 75 72 65 2e 20 20  ing structure.  
118c0 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20 63  This structure c
118d0 6f 6e 73 69 73 74 73 0a 2a 2a 20 6d 6f 73 74 6c  onsists.** mostl
118e0 79 20 6f 66 20 6d 65 74 68 6f 64 73 20 66 6f 72  y of methods for
118f0 20 74 68 65 20 6d 6f 64 75 6c 65 2e 0a 2a 2f 0a   the module..*/.
11900 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d  struct sqlite3_m
11910 6f 64 75 6c 65 20 7b 0a 20 20 69 6e 74 20 69 56  odule {.  int iV
11920 65 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28 2a  ersion;.  int (*
11930 78 43 72 65 61 74 65 29 28 73 71 6c 69 74 65 33  xCreate)(sqlite3
11940 2a 2c 20 76 6f 69 64 20 2a 70 41 75 78 2c 0a 20  *, void *pAux,. 
11950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
11960 74 20 61 72 67 63 2c 20 63 6f 6e 73 74 20 63 68  t argc, const ch
11970 61 72 20 2a 63 6f 6e 73 74 2a 61 72 67 76 2c 0a  ar *const*argv,.
11980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
11990 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 2a 70 70  qlite3_vtab **pp
119a0 56 54 61 62 2c 20 63 68 61 72 2a 2a 29 3b 0a 20  VTab, char**);. 
119b0 20 69 6e 74 20 28 2a 78 43 6f 6e 6e 65 63 74 29   int (*xConnect)
119c0 28 73 71 6c 69 74 65 33 2a 2c 20 76 6f 69 64 20  (sqlite3*, void 
119d0 2a 70 41 75 78 2c 0a 20 20 20 20 20 20 20 20 20  *pAux,.         
119e0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 20        int argc, 
119f0 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 6f 6e 73  const char *cons
11a00 74 2a 61 72 67 76 2c 0a 20 20 20 20 20 20 20 20  t*argv,.        
11a10 20 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 76         sqlite3_v
11a20 74 61 62 20 2a 2a 70 70 56 54 61 62 2c 20 63 68  tab **ppVTab, ch
11a30 61 72 2a 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78  ar**);.  int (*x
11a40 42 65 73 74 49 6e 64 65 78 29 28 73 71 6c 69 74  BestIndex)(sqlit
11a50 65 33 5f 76 74 61 62 20 2a 70 56 54 61 62 2c 20  e3_vtab *pVTab, 
11a60 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
11a70 66 6f 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44  fo*);.  int (*xD
11a80 69 73 63 6f 6e 6e 65 63 74 29 28 73 71 6c 69 74  isconnect)(sqlit
11a90 65 33 5f 76 74 61 62 20 2a 70 56 54 61 62 29 3b  e3_vtab *pVTab);
11aa0 0a 20 20 69 6e 74 20 28 2a 78 44 65 73 74 72 6f  .  int (*xDestro
11ab0 79 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20  y)(sqlite3_vtab 
11ac0 2a 70 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28  *pVTab);.  int (
11ad0 2a 78 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f  *xOpen)(sqlite3_
11ae0 76 74 61 62 20 2a 70 56 54 61 62 2c 20 73 71 6c  vtab *pVTab, sql
11af0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
11b00 20 2a 2a 70 70 43 75 72 73 6f 72 29 3b 0a 20 20   **ppCursor);.  
11b10 69 6e 74 20 28 2a 78 43 6c 6f 73 65 29 28 73 71  int (*xClose)(sq
11b20 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
11b30 72 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46 69  r*);.  int (*xFi
11b40 6c 74 65 72 29 28 73 71 6c 69 74 65 33 5f 76 74  lter)(sqlite3_vt
11b50 61 62 5f 63 75 72 73 6f 72 2a 2c 20 69 6e 74 20  ab_cursor*, int 
11b60 69 64 78 4e 75 6d 2c 20 63 6f 6e 73 74 20 63 68  idxNum, const ch
11b70 61 72 20 2a 69 64 78 53 74 72 2c 0a 20 20 20 20  ar *idxStr,.    
11b80 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
11b90 61 72 67 63 2c 20 73 71 6c 69 74 65 33 5f 76 61  argc, sqlite3_va
11ba0 6c 75 65 20 2a 2a 61 72 67 76 29 3b 0a 20 20 69  lue **argv);.  i
11bb0 6e 74 20 28 2a 78 4e 65 78 74 29 28 73 71 6c 69  nt (*xNext)(sqli
11bc0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 2a  te3_vtab_cursor*
11bd0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 45 6f 66 29  );.  int (*xEof)
11be0 28 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75  (sqlite3_vtab_cu
11bf0 72 73 6f 72 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  rsor*);.  int (*
11c00 78 43 6f 6c 75 6d 6e 29 28 73 71 6c 69 74 65 33  xColumn)(sqlite3
11c10 5f 76 74 61 62 5f 63 75 72 73 6f 72 2a 2c 20 73  _vtab_cursor*, s
11c20 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c  qlite3_context*,
11c30 20 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78   int);.  int (*x
11c40 52 6f 77 69 64 29 28 73 71 6c 69 74 65 33 5f 76  Rowid)(sqlite3_v
11c50 74 61 62 5f 63 75 72 73 6f 72 2a 2c 20 73 71 6c  tab_cursor*, sql
11c60 69 74 65 5f 69 6e 74 36 34 20 2a 70 52 6f 77 69  ite_int64 *pRowi
11c70 64 29 3b 0a 20 20 69 6e 74 20 28 2a 78 55 70 64  d);.  int (*xUpd
11c80 61 74 65 29 28 73 71 6c 69 74 65 33 5f 76 74 61  ate)(sqlite3_vta
11c90 62 20 2a 2c 20 69 6e 74 2c 20 73 71 6c 69 74 65  b *, int, sqlite
11ca0 33 5f 76 61 6c 75 65 20 2a 2a 2c 20 73 71 6c 69  3_value **, sqli
11cb0 74 65 5f 69 6e 74 36 34 20 2a 29 3b 0a 20 20 69  te_int64 *);.  i
11cc0 6e 74 20 28 2a 78 42 65 67 69 6e 29 28 73 71 6c  nt (*xBegin)(sql
11cd0 69 74 65 33 5f 76 74 61 62 20 2a 70 56 54 61 62  ite3_vtab *pVTab
11ce0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63  );.  int (*xSync
11cf0 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a  )(sqlite3_vtab *
11d00 70 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a  pVTab);.  int (*
11d10 78 43 6f 6d 6d 69 74 29 28 73 71 6c 69 74 65 33  xCommit)(sqlite3
11d20 5f 76 74 61 62 20 2a 70 56 54 61 62 29 3b 0a 20  _vtab *pVTab);. 
11d30 20 69 6e 74 20 28 2a 78 52 6f 6c 6c 62 61 63 6b   int (*xRollback
11d40 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a  )(sqlite3_vtab *
11d50 70 56 54 61 62 29 3b 0a 20 20 69 6e 74 20 28 2a  pVTab);.  int (*
11d60 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 28 73  xFindFunction)(s
11d70 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56 74  qlite3_vtab *pVt
11d80 61 62 2c 20 69 6e 74 20 6e 41 72 67 2c 20 63 6f  ab, int nArg, co
11d90 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c  nst char *zName,
11da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11db0 20 20 20 20 20 20 20 20 76 6f 69 64 20 28 2a 2a          void (**
11dc0 70 78 46 75 6e 63 29 28 73 71 6c 69 74 65 33 5f  pxFunc)(sqlite3_
11dd0 63 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c  context*,int,sql
11de0 69 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20  ite3_value**),. 
11df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e00 20 20 20 20 20 20 76 6f 69 64 20 2a 2a 70 70 41        void **ppA
11e10 72 67 29 3b 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 54  rg);.};../*.** T
11e20 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  he sqlite3_index
11e30 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20  _info structure 
11e40 61 6e 64 20 69 74 73 20 73 75 62 73 74 72 75 63  and its substruc
11e50 74 75 72 65 73 20 69 73 20 75 73 65 64 20 74 6f  tures is used to
11e60 0a 2a 2a 20 70 61 73 73 20 69 6e 66 6f 72 6d 61  .** pass informa
11e70 74 69 6f 6e 20 69 6e 74 6f 20 61 6e 64 20 72 65  tion into and re
11e80 63 65 69 76 65 20 74 68 65 20 72 65 70 6c 79 20  ceive the reply 
11e90 66 72 6f 6d 20 74 68 65 20 78 42 65 73 74 49 6e  from the xBestIn
11ea0 64 65 78 0a 2a 2a 20 6d 65 74 68 6f 64 20 6f 66  dex.** method of
11eb0 20 61 6e 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75   an sqlite3_modu
11ec0 6c 65 2e 20 20 54 68 65 20 66 69 65 6c 64 73 20  le.  The fields 
11ed0 75 6e 64 65 72 20 2a 2a 49 6e 70 75 74 73 2a 2a  under **Inputs**
11ee0 20 61 72 65 20 74 68 65 0a 2a 2a 20 69 6e 70 75   are the.** inpu
11ef0 74 73 20 74 6f 20 78 42 65 73 74 49 6e 64 65 78  ts to xBestIndex
11f00 20 61 6e 64 20 61 72 65 20 72 65 61 64 2d 6f 6e   and are read-on
11f10 6c 79 2e 20 20 78 42 65 73 74 49 6e 64 65 78 20  ly.  xBestIndex 
11f20 69 6e 73 65 72 74 73 20 69 74 73 0a 2a 2a 20 72  inserts its.** r
11f30 65 73 75 6c 74 73 20 69 6e 74 6f 20 74 68 65 20  esults into the 
11f40 2a 2a 4f 75 74 70 75 74 73 2a 2a 20 66 69 65 6c  **Outputs** fiel
11f50 64 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 43  ds..**.** The aC
11f60 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61  onstraint[] arra
11f70 79 20 72 65 63 6f 72 64 73 20 57 48 45 52 45 20  y records WHERE 
11f80 63 6c 61 75 73 65 20 63 6f 6e 73 74 72 61 69 6e  clause constrain
11f90 74 73 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f 72  ts of the.** for
11fa0 6d 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20  m:.**.**        
11fb0 20 63 6f 6c 75 6d 6e 20 4f 50 20 65 78 70 72 0a   column OP expr.
11fc0 2a 2a 0a 2a 2a 20 57 68 65 72 65 20 4f 50 20 69  **.** Where OP i
11fd0 73 20 3d 2c 20 3c 2c 20 3c 3d 2c 20 3e 2c 20 6f  s =, <, <=, >, o
11fe0 72 20 3e 3d 2e 20 20 54 68 65 20 70 61 72 74 69  r >=.  The parti
11ff0 63 75 6c 61 72 20 6f 70 65 72 61 74 6f 72 20 69  cular operator i
12000 73 20 73 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61  s stored.** in a
12010 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e 6f 70 2e  Constraint[].op.
12020 20 20 54 68 65 20 69 6e 64 65 78 20 6f 66 20 74    The index of t
12030 68 65 20 63 6f 6c 75 6d 6e 20 69 73 20 73 74 6f  he column is sto
12040 72 65 64 20 69 6e 20 0a 2a 2a 20 61 43 6f 6e 73  red in .** aCons
12050 74 72 61 69 6e 74 5b 5d 2e 69 43 6f 6c 75 6d 6e  traint[].iColumn
12060 2e 20 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  .  aConstraint[]
12070 2e 75 73 61 62 6c 65 20 69 73 20 54 52 55 45 20  .usable is TRUE 
12080 69 66 20 74 68 65 0a 2a 2a 20 65 78 70 72 20 6f  if the.** expr o
12090 6e 20 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64  n the right-hand
120a0 20 73 69 64 65 20 63 61 6e 20 62 65 20 65 76 61   side can be eva
120b0 6c 75 61 74 65 64 20 28 61 6e 64 20 74 68 75 73  luated (and thus
120c0 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 0a   the constraint.
120d0 2a 2a 20 69 73 20 75 73 61 62 6c 65 29 20 61 6e  ** is usable) an
120e0 64 20 66 61 6c 73 65 20 69 66 20 69 74 20 63 61  d false if it ca
120f0 6e 6e 6f 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  nnot..**.** The 
12100 6f 70 74 69 6d 69 7a 65 72 20 61 75 74 6f 6d 61  optimizer automa
12110 74 69 63 61 6c 6c 79 20 69 6e 76 65 72 74 73 20  tically inverts 
12120 74 65 72 6d 73 20 6f 66 20 74 68 65 20 66 6f 72  terms of the for
12130 6d 20 22 65 78 70 72 20 4f 50 20 63 6f 6c 75 6d  m "expr OP colum
12140 6e 22 0a 2a 2a 20 61 6e 64 20 6d 61 6b 65 73 20  n".** and makes 
12150 6f 74 68 65 72 20 73 69 6d 70 6c 69 66 69 63 61  other simplifica
12160 74 69 6e 6f 73 20 74 6f 20 74 68 65 20 57 48 45  tinos to the WHE
12170 52 45 20 63 6c 61 75 73 65 20 69 6e 20 61 6e 20  RE clause in an 
12180 61 74 74 65 6d 70 74 20 74 6f 0a 2a 2a 20 67 65  attempt to.** ge
12190 74 20 61 73 20 6d 61 6e 79 20 57 48 45 52 45 20  t as many WHERE 
121a0 63 6c 61 75 73 65 20 74 65 72 6d 73 20 69 6e 74  clause terms int
121b0 6f 20 74 68 65 20 66 6f 72 6d 20 73 68 6f 77 6e  o the form shown
121c0 20 61 62 6f 76 65 20 61 73 20 70 6f 73 73 69 62   above as possib
121d0 6c 65 2e 0a 2a 2a 20 54 68 65 20 61 43 6f 6e 73  le..** The aCons
121e0 74 72 61 69 6e 74 5b 5d 20 61 72 72 61 79 20 6f  traint[] array o
121f0 6e 6c 79 20 72 65 70 6f 72 74 73 20 57 48 45 52  nly reports WHER
12200 45 20 63 6c 61 75 73 65 20 74 65 72 6d 73 20 69  E clause terms i
12210 6e 20 74 68 65 20 63 6f 72 72 65 63 74 0a 2a 2a  n the correct.**
12220 20 66 6f 72 6d 20 74 68 61 74 20 72 65 66 65 72   form that refer
12230 20 74 6f 20 74 68 65 20 70 61 72 74 69 63 75 6c   to the particul
12240 61 72 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ar virtual table
12250 20 62 65 69 6e 67 20 71 75 65 72 69 65 64 2e 0a   being queried..
12260 2a 2a 0a 2a 2a 20 49 6e 66 6f 72 6d 61 74 69 6f  **.** Informatio
12270 6e 20 61 62 6f 75 74 20 74 68 65 20 4f 52 44 45  n about the ORDE
12280 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 73  R BY clause is s
12290 74 6f 72 65 64 20 69 6e 20 61 4f 72 64 65 72 42  tored in aOrderB
122a0 79 5b 5d 2e 0a 2a 2a 20 45 61 63 68 20 74 65 72  y[]..** Each ter
122b0 6d 20 6f 66 20 61 4f 72 64 65 72 42 79 20 72 65  m of aOrderBy re
122c0 63 6f 72 64 73 20 61 20 63 6f 6c 75 6d 6e 20 6f  cords a column o
122d0 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63  f the ORDER BY c
122e0 6c 61 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  lause..**.** The
122f0 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
12300 6f 64 20 6d 75 73 74 20 66 69 6c 6c 20 61 43 6f  od must fill aCo
12310 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20  nstraintUsage[] 
12320 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  with information
12330 0a 2a 2a 20 61 62 6f 75 74 20 77 68 61 74 20 70  .** about what p
12340 61 72 61 6d 65 74 65 72 73 20 74 6f 20 70 61 73  arameters to pas
12350 73 20 74 6f 20 78 46 69 6c 74 65 72 2e 20 20 49  s to xFilter.  I
12360 66 20 61 72 67 76 49 6e 64 65 78 3e 30 20 74 68  f argvIndex>0 th
12370 65 6e 0a 2a 2a 20 74 68 65 20 72 69 67 68 74 2d  en.** the right-
12380 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65  hand side of the
12390 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 61   corresponding a
123a0 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 69 73 20  Constraint[] is 
123b0 65 76 61 6c 75 61 74 65 64 0a 2a 2a 20 61 6e 64  evaluated.** and
123c0 20 62 65 63 6f 6d 65 73 20 74 68 65 20 61 72 67   becomes the arg
123d0 76 49 6e 64 65 78 2d 74 68 20 65 6e 74 72 79 20  vIndex-th entry 
123e0 69 6e 20 61 72 67 76 2e 20 20 49 66 20 61 43 6f  in argv.  If aCo
123f0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e  nstraintUsage[].
12400 6f 6d 69 74 0a 2a 2a 20 69 73 20 74 72 75 65 2c  omit.** is true,
12410 20 74 68 65 6e 20 74 68 65 20 63 6f 6e 73 74 72   then the constr
12420 61 69 6e 74 20 69 73 20 61 73 73 75 6d 65 64 20  aint is assumed 
12430 74 6f 20 62 65 20 66 75 6c 6c 79 20 68 61 6e 64  to be fully hand
12440 6c 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 76 69  led by the.** vi
12450 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20  rtual table and 
12460 69 73 20 6e 6f 74 20 63 68 65 63 6b 65 64 20 61  is not checked a
12470 67 61 69 6e 20 62 79 20 53 51 4c 69 74 65 2e 0a  gain by SQLite..
12480 2a 2a 0a 2a 2a 20 54 68 65 20 69 64 78 4e 75 6d  **.** The idxNum
12490 20 61 6e 64 20 69 64 78 50 74 72 20 76 61 6c 75   and idxPtr valu
124a0 65 73 20 61 72 65 20 72 65 63 6f 72 64 65 64 20  es are recorded 
124b0 61 6e 64 20 70 61 73 73 65 64 20 69 6e 74 6f 20  and passed into 
124c0 78 46 69 6c 74 65 72 2e 0a 2a 2a 20 73 71 6c 69  xFilter..** sqli
124d0 74 65 33 5f 66 72 65 65 28 29 20 69 73 20 75 73  te3_free() is us
124e0 65 64 20 74 6f 20 66 72 65 65 20 69 64 78 50 74  ed to free idxPt
124f0 72 20 69 66 20 6e 65 65 64 54 6f 46 72 65 65 49  r if needToFreeI
12500 64 78 50 74 72 20 69 73 20 74 72 75 65 2e 0a 2a  dxPtr is true..*
12510 2a 0a 2a 2a 20 54 68 65 20 6f 72 64 65 72 42 79  *.** The orderBy
12520 43 6f 6e 73 75 6d 65 64 20 6d 65 61 6e 73 20 74  Consumed means t
12530 68 61 74 20 6f 75 74 70 75 74 20 66 72 6f 6d 20  hat output from 
12540 78 46 69 6c 74 65 72 20 77 69 6c 6c 20 6f 63 63  xFilter will occ
12550 75 72 20 69 6e 0a 2a 2a 20 74 68 65 20 63 6f 72  ur in.** the cor
12560 72 65 63 74 20 6f 72 64 65 72 20 74 6f 20 73 61  rect order to sa
12570 74 69 73 66 79 20 74 68 65 20 4f 52 44 45 52 20  tisfy the ORDER 
12580 42 59 20 63 6c 61 75 73 65 20 73 6f 20 74 68 61  BY clause so tha
12590 74 20 6e 6f 20 73 65 70 61 72 61 74 65 0a 2a 2a  t no separate.**
125a0 20 73 6f 72 74 69 6e 67 20 73 74 65 70 20 69 73   sorting step is
125b0 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a   required..**.**
125c0 20 54 68 65 20 65 73 74 69 6d 61 74 65 64 43 6f   The estimatedCo
125d0 73 74 20 76 61 6c 75 65 20 69 73 20 61 6e 20 65  st value is an e
125e0 73 74 69 6d 61 74 65 20 6f 66 20 74 68 65 20 63  stimate of the c
125f0 6f 73 74 20 6f 66 20 64 6f 69 6e 67 20 74 68 65  ost of doing the
12600 0a 2a 2a 20 70 61 72 74 69 63 75 6c 61 72 20 6c  .** particular l
12610 6f 6f 6b 75 70 2e 20 20 41 20 66 75 6c 6c 20 73  ookup.  A full s
12620 63 61 6e 20 6f 66 20 61 20 74 61 62 6c 65 20 77  can of a table w
12630 69 74 68 20 4e 20 65 6e 74 72 69 65 73 20 73 68  ith N entries sh
12640 6f 75 6c 64 20 68 61 76 65 0a 2a 2a 20 61 20 63  ould have.** a c
12650 6f 73 74 20 6f 66 20 4e 2e 20 20 41 20 62 69 6e  ost of N.  A bin
12660 61 72 79 20 73 65 61 72 63 68 20 6f 66 20 61 20  ary search of a 
12670 74 61 62 6c 65 20 6f 66 20 4e 20 65 6e 74 72 69  table of N entri
12680 65 73 20 73 68 6f 75 6c 64 20 68 61 76 65 20 61  es should have a
12690 0a 2a 2a 20 63 6f 73 74 20 6f 66 20 61 70 70 72  .** cost of appr
126a0 6f 78 69 6d 61 74 65 6c 79 20 6c 6f 67 28 4e 29  oximately log(N)
126b0 2e 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c 69  ..*/.struct sqli
126c0 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 7b  te3_index_info {
126d0 0a 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0a  .  /* Inputs */.
126e0 20 20 63 6f 6e 73 74 20 69 6e 74 20 6e 43 6f 6e    const int nCon
126f0 73 74 72 61 69 6e 74 3b 20 20 20 20 20 2f 2a 20  straint;     /* 
12700 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
12710 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74  s in aConstraint
12720 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 73 74 72 75   */.  const stru
12730 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
12740 5f 63 6f 6e 73 74 72 61 69 6e 74 20 7b 0a 20 20  _constraint {.  
12750 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20     int iColumn; 
12760 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
12770 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68  Column on left-h
12780 61 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73  and side of cons
12790 74 72 61 69 6e 74 20 2a 2f 0a 20 20 20 20 20 75  traint */.     u
127a0 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6f 70 3b  nsigned char op;
127b0 20 20 20 20 20 20 20 20 20 2f 2a 20 43 6f 6e 73           /* Cons
127c0 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72 20  traint operator 
127d0 2a 2f 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64  */.     unsigned
127e0 20 63 68 61 72 20 75 73 61 62 6c 65 3b 20 20 20   char usable;   
127f0 20 20 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69    /* True if thi
12800 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20  s constraint is 
12810 75 73 61 62 6c 65 20 2a 2f 0a 20 20 20 20 20 69  usable */.     i
12820 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 20  nt iTermOffset; 
12830 20 20 20 20 20 20 20 20 20 2f 2a 20 55 73 65 64           /* Used
12840 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 78 42   internally - xB
12850 65 73 74 49 6e 64 65 78 20 73 68 6f 75 6c 64 20  estIndex should 
12860 69 67 6e 6f 72 65 20 2a 2f 0a 20 20 7d 20 2a 63  ignore */.  } *c
12870 6f 6e 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74  onst aConstraint
12880 3b 20 20 20 20 20 20 2f 2a 20 54 61 62 6c 65 20  ;      /* Table 
12890 6f 66 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  of WHERE clause 
128a0 63 6f 6e 73 74 72 61 69 6e 74 73 20 2a 2f 0a 20  constraints */. 
128b0 20 63 6f 6e 73 74 20 69 6e 74 20 6e 4f 72 64 65   const int nOrde
128c0 72 42 79 3b 20 20 20 20 20 20 20 20 2f 2a 20 4e  rBy;        /* N
128d0 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69  umber of terms i
128e0 6e 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63  n the ORDER BY c
128f0 6c 61 75 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  lause */.  const
12900 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
12910 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 7b 0a  index_orderby {.
12920 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e       int iColumn
12930 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;              /
12940 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20  * Column number 
12950 2a 2f 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64  */.     unsigned
12960 20 63 68 61 72 20 64 65 73 63 3b 20 20 20 20 20   char desc;     
12970 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
12980 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
12990 53 43 2e 20 2a 2f 0a 20 20 7d 20 2a 63 6f 6e 73  SC. */.  } *cons
129a0 74 20 61 4f 72 64 65 72 42 79 3b 20 20 20 20 20  t aOrderBy;     
129b0 20 20 20 20 2f 2a 20 54 68 65 20 4f 52 44 45 52      /* The ORDER
129c0 20 42 59 20 63 6c 61 75 73 65 20 2a 2f 0a 0a 20   BY clause */.. 
129d0 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0a 20   /* Outputs */. 
129e0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
129f0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
12a00 5f 75 73 61 67 65 20 7b 0a 20 20 20 20 69 6e 74  _usage {.    int
12a10 20 61 72 67 76 49 6e 64 65 78 3b 20 20 20 20 20   argvIndex;     
12a20 20 20 20 20 20 20 2f 2a 20 69 66 20 3e 30 2c 20        /* if >0, 
12a30 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61  constraint is pa
12a40 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
12a50 69 6c 74 65 72 20 2a 2f 0a 20 20 20 20 75 6e 73  ilter */.    uns
12a60 69 67 6e 65 64 20 63 68 61 72 20 6f 6d 69 74 3b  igned char omit;
12a70 20 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20        /* Do not 
12a80 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20  code a test for 
12a90 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
12aa0 2a 2f 0a 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43  */.  } *const aC
12ab0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0a  onstraintUsage;.
12ac0 20 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20    int idxNum;   
12ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
12ae0 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69  Number used to i
12af0 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65  dentify the inde
12b00 78 20 2a 2f 0a 20 20 63 68 61 72 20 2a 69 64 78  x */.  char *idx
12b10 53 74 72 3b 20 20 20 20 20 20 20 20 20 20 20 20  Str;            
12b20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
12b30 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
12b40 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
12b50 6f 63 20 2a 2f 0a 20 20 69 6e 74 20 6e 65 65 64  oc */.  int need
12b60 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 20 20  ToFreeIdxStr;   
12b70 20 20 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74     /* Free idxSt
12b80 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  r using sqlite3_
12b90 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a  free() if true *
12ba0 2f 0a 20 20 69 6e 74 20 6f 72 64 65 72 42 79 43  /.  int orderByC
12bb0 6f 6e 73 75 6d 65 64 3b 20 20 20 20 20 20 20 2f  onsumed;       /
12bc0 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
12bd0 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
12be0 72 65 64 20 2a 2f 0a 20 20 64 6f 75 62 6c 65 20  red */.  double 
12bf0 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 20  estimatedCost;  
12c00 20 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64      /* Estimated
12c10 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
12c20 68 69 73 20 69 6e 64 65 78 20 2a 2f 0a 7d 3b 0a  his index */.};.
12c30 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
12c40 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  NDEX_CONSTRAINT_
12c50 45 51 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20  EQ    2.#define 
12c60 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
12c70 53 54 52 41 49 4e 54 5f 47 54 20 20 20 20 34 0a  STRAINT_GT    4.
12c80 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
12c90 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  NDEX_CONSTRAINT_
12ca0 4c 45 20 20 20 20 38 0a 23 64 65 66 69 6e 65 20  LE    8.#define 
12cb0 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
12cc0 53 54 52 41 49 4e 54 5f 4c 54 20 20 20 20 31 36  STRAINT_LT    16
12cd0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
12ce0 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54  INDEX_CONSTRAINT
12cf0 5f 47 45 20 20 20 20 33 32 0a 23 64 65 66 69 6e  _GE    32.#defin
12d00 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43  e SQLITE_INDEX_C
12d10 4f 4e 53 54 52 41 49 4e 54 5f 4d 41 54 43 48 20  ONSTRAINT_MATCH 
12d20 36 34 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72  64../*.** This r
12d30 6f 75 74 69 6e 65 20 69 73 20 75 73 65 64 20 74  outine is used t
12d40 6f 20 72 65 67 69 73 74 65 72 20 61 20 6e 65 77  o register a new
12d50 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 20 77 69 74   module name wit
12d60 68 20 61 6e 20 53 51 4c 69 74 65 0a 2a 2a 20 63  h an SQLite.** c
12d70 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 4d 6f 64 75  onnection.  Modu
12d80 6c 65 20 6e 61 6d 65 73 20 6d 75 73 74 20 62 65  le names must be
12d90 20 72 65 67 69 73 74 65 72 65 64 20 62 65 66 6f   registered befo
12da0 72 65 20 63 72 65 61 74 69 6e 67 20 6e 65 77 0a  re creating new.
12db0 2a 2a 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ** virtual table
12dc0 73 20 6f 6e 20 74 68 65 20 6d 6f 64 75 6c 65 2c  s on the module,
12dd0 20 6f 72 20 62 65 66 6f 72 65 20 75 73 69 6e 67   or before using
12de0 20 70 72 65 65 78 69 73 74 69 6e 67 20 76 69 72   preexisting vir
12df0 74 75 61 6c 0a 2a 2a 20 74 61 62 6c 65 73 20 6f  tual.** tables o
12e00 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 0a 2a 2f  f the module..*/
12e10 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65  .int sqlite3_cre
12e20 61 74 65 5f 6d 6f 64 75 6c 65 28 0a 20 20 73 71  ate_module(.  sq
12e30 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
12e40 20 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 69           /* SQLi
12e50 74 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  te connection to
12e60 20 72 65 67 69 73 74 65 72 20 6d 6f 64 75 6c 65   register module
12e70 20 77 69 74 68 20 2a 2f 0a 20 20 63 6f 6e 73 74   with */.  const
12e80 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 20 20   char *zName,   
12e90 20 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66        /* Name of
12ea0 20 74 68 65 20 6d 6f 64 75 6c 65 20 2a 2f 0a 20   the module */. 
12eb0 20 63 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 6d   const sqlite3_m
12ec0 6f 64 75 6c 65 20 2a 2c 20 20 20 20 2f 2a 20 4d  odule *,    /* M
12ed0 65 74 68 6f 64 73 20 66 6f 72 20 74 68 65 20 6d  ethods for the m
12ee0 6f 64 75 6c 65 20 2a 2f 0a 20 20 76 6f 69 64 20  odule */.  void 
12ef0 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
12f00 20 20 20 20 20 20 2f 2a 20 43 6c 69 65 6e 74 20        /* Client 
12f10 64 61 74 61 20 66 6f 72 20 78 43 72 65 61 74 65  data for xCreate
12f20 2f 78 43 6f 6e 6e 65 63 74 20 2a 2f 0a 29 3b 0a  /xConnect */.);.
12f30 0a 2f 2a 0a 2a 2a 20 45 76 65 72 79 20 6d 6f 64  ./*.** Every mod
12f40 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ule implementati
12f50 6f 6e 20 75 73 65 73 20 61 20 73 75 62 63 6c 61  on uses a subcla
12f60 73 73 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ss of the follow
12f70 69 6e 67 20 73 74 72 75 63 74 75 72 65 0a 2a 2a  ing structure.**
12f80 20 74 6f 20 64 65 73 63 72 69 62 65 20 61 20 70   to describe a p
12f90 61 72 74 69 63 75 6c 61 72 20 69 6e 73 74 61 6e  articular instan
12fa0 63 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  ce of the module
12fb0 2e 20 20 45 61 63 68 20 73 75 62 63 6c 61 73 73  .  Each subclass
12fc0 20 77 69 6c 6c 0a 2a 2a 20 62 65 20 74 61 79 6c   will.** be tayl
12fd0 6f 72 65 64 20 74 6f 20 74 68 65 20 73 70 65 63  ored to the spec
12fe0 69 66 69 63 20 6e 65 65 64 73 20 6f 66 20 74 68  ific needs of th
12ff0 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
13000 6e 74 61 74 69 6f 6e 2e 20 20 20 54 68 65 0a 2a  ntation.   The.*
13010 2a 20 70 75 72 70 6f 73 65 20 6f 66 20 74 68 69  * purpose of thi
13020 73 20 73 75 70 65 72 63 6c 61 73 73 20 69 73 20  s superclass is 
13030 74 6f 20 64 65 66 69 6e 65 20 63 65 72 74 61 69  to define certai
13040 6e 20 66 69 65 6c 64 73 20 74 68 61 74 20 61 72  n fields that ar
13050 65 20 63 6f 6d 6d 6f 6e 0a 2a 2a 20 74 6f 20 61  e common.** to a
13060 6c 6c 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  ll module implem
13070 65 6e 74 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  entations..**.**
13080 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   Virtual tables 
13090 6d 65 74 68 6f 64 73 20 63 61 6e 20 73 65 74 20  methods can set 
130a0 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
130b0 20 62 79 20 61 73 73 69 67 6e 69 6e 67 20 61 0a   by assigning a.
130c0 2a 2a 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e  ** string obtain
130d0 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ed from sqlite3_
130e0 6d 70 72 69 6e 74 66 28 29 20 74 6f 20 7a 45 72  mprintf() to zEr
130f0 72 4d 73 67 2e 20 20 54 68 65 20 6d 65 74 68 6f  rMsg.  The metho
13100 64 20 73 68 6f 75 6c 64 0a 2a 2a 20 74 61 6b 65  d should.** take
13110 20 63 61 72 65 20 74 68 61 74 20 61 6e 79 20 70   care that any p
13120 72 69 6f 72 20 73 74 72 69 6e 67 20 69 73 20 66  rior string is f
13130 72 65 65 64 20 62 79 20 61 20 63 61 6c 6c 20 74  reed by a call t
13140 6f 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29  o sqlite3_free()
13150 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 61 73 73  .** prior to ass
13160 69 67 6e 69 6e 67 20 61 20 6e 65 77 20 73 74 72  igning a new str
13170 69 6e 67 20 74 6f 20 7a 45 72 72 4d 73 67 2e 20  ing to zErrMsg. 
13180 20 41 66 74 65 72 20 74 68 65 20 65 72 72 6f 72   After the error
13190 20 6d 65 73 73 61 67 65 0a 2a 2a 20 69 73 20 64   message.** is d
131a0 65 6c 69 76 65 72 65 64 20 75 70 20 74 6f 20 74  elivered up to t
131b0 68 65 20 63 6c 69 65 6e 74 20 61 70 70 6c 69 63  he client applic
131c0 61 74 69 6f 6e 2c 20 74 68 65 20 73 74 72 69 6e  ation, the strin
131d0 67 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61  g will be automa
131e0 74 69 63 61 6c 6c 79 0a 2a 2a 20 66 72 65 65 64  tically.** freed
131f0 20 62 79 20 73 71 6c 69 74 65 33 5f 66 72 65 65   by sqlite3_free
13200 28 29 20 61 6e 64 20 74 68 65 20 7a 45 72 72 4d  () and the zErrM
13210 73 67 20 66 69 65 6c 64 20 77 69 6c 6c 20 62 65  sg field will be
13220 20 7a 65 72 6f 65 64 2e 20 20 4e 6f 74 65 0a 2a   zeroed.  Note.*
13230 2a 20 74 68 61 74 20 73 71 6c 69 74 65 33 5f 6d  * that sqlite3_m
13240 70 72 69 6e 74 66 28 29 20 61 6e 64 20 73 71 6c  printf() and sql
13250 69 74 65 33 5f 66 72 65 65 28 29 20 61 72 65 20  ite3_free() are 
13260 75 73 65 64 20 6f 6e 20 74 68 65 20 7a 45 72 72  used on the zErr
13270 4d 73 67 20 66 69 65 6c 64 0a 2a 2a 20 73 69 6e  Msg field.** sin
13280 63 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ce virtual table
13290 73 20 61 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 69  s are commonly i
132a0 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6c 6f  mplemented in lo
132b0 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e  adable extension
132c0 73 20 77 68 69 63 68 0a 2a 2a 20 64 6f 20 6e 6f  s which.** do no
132d0 74 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6f  t have access to
132e0 20 73 71 6c 69 74 65 33 4d 50 72 69 6e 74 66 28   sqlite3MPrintf(
132f0 29 20 6f 72 20 73 71 6c 69 74 65 33 46 72 65 65  ) or sqlite3Free
13300 28 29 2e 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71  ()..*/.struct sq
13310 6c 69 74 65 33 5f 76 74 61 62 20 7b 0a 20 20 63  lite3_vtab {.  c
13320 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64  onst sqlite3_mod
13330 75 6c 65 20 2a 70 4d 6f 64 75 6c 65 3b 20 20 2f  ule *pModule;  /
13340 2a 20 54 68 65 20 6d 6f 64 75 6c 65 20 66 6f 72  * The module for
13350 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
13360 62 6c 65 20 2a 2f 0a 20 20 69 6e 74 20 6e 52 65  ble */.  int nRe
13370 66 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  f;              
13380 20 20 20 20 20 20 20 20 20 2f 2a 20 55 73 65 64           /* Used
13390 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2a 2f 0a 20   internally */. 
133a0 20 63 68 61 72 20 2a 7a 45 72 72 4d 73 67 3b 20   char *zErrMsg; 
133b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133c0 20 2f 2a 20 45 72 72 6f 72 20 6d 65 73 73 61 67   /* Error messag
133d0 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d  e from sqlite3_m
133e0 70 72 69 6e 74 66 28 29 20 2a 2f 0a 20 20 2f 2a  printf() */.  /*
133f0 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   Virtual table i
13400 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77  mplementations w
13410 69 6c 6c 20 74 79 70 69 63 61 6c 6c 79 20 61 64  ill typically ad
13420 64 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 65  d additional fie
13430 6c 64 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 20 45 76  lds */.};../* Ev
13440 65 72 79 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  ery module imple
13450 6d 65 6e 74 61 74 69 6f 6e 20 75 73 65 73 20 61  mentation uses a
13460 20 73 75 62 63 6c 61 73 73 20 6f 66 20 74 68 65   subclass of the
13470 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 75 63   following struc
13480 74 75 72 65 0a 2a 2a 20 74 6f 20 64 65 73 63 72  ture.** to descr
13490 69 62 65 20 63 75 72 73 6f 72 73 20 74 68 61 74  ibe cursors that
134a0 20 70 6f 69 6e 74 20 69 6e 74 6f 20 74 68 65 20   point into the 
134b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e  virtual table an
134c0 64 20 61 72 65 20 75 73 65 64 0a 2a 2a 20 74 6f  d are used.** to
134d0 20 6c 6f 6f 70 20 74 68 72 6f 75 67 68 20 74 68   loop through th
134e0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
134f0 20 20 43 75 72 73 6f 72 73 20 61 72 65 20 63 72    Cursors are cr
13500 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 0a  eated using the.
13510 2a 2a 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20  ** xOpen method 
13520 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20  of the module.  
13530 45 61 63 68 20 6d 6f 64 75 6c 65 20 69 6d 70 6c  Each module impl
13540 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69 6c 6c 20  ementation will 
13550 64 65 66 69 6e 65 0a 2a 2a 20 74 68 65 20 63 6f  define.** the co
13560 6e 74 65 6e 74 20 6f 66 20 61 20 63 75 72 73 6f  ntent of a curso
13570 72 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 73  r structure to s
13580 75 69 74 20 69 74 73 20 6f 77 6e 20 6e 65 65 64  uit its own need
13590 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 73 75  s..**.** This su
135a0 70 65 72 63 6c 61 73 73 20 65 78 69 73 74 73 20  perclass exists 
135b0 69 6e 20 6f 72 64 65 72 20 74 6f 20 64 65 66 69  in order to defi
135c0 6e 65 20 66 69 65 6c 64 73 20 6f 66 20 74 68 65  ne fields of the
135d0 20 63 75 72 73 6f 72 20 74 68 61 74 0a 2a 2a 20   cursor that.** 
135e0 61 72 65 20 63 6f 6d 6d 6f 6e 20 74 6f 20 61 6c  are common to al
135f0 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  l implementation
13600 73 2e 0a 2a 2f 0a 73 74 72 75 63 74 20 73 71 6c  s..*/.struct sql
13610 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
13620 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 76 74 61   {.  sqlite3_vta
13630 62 20 2a 70 56 74 61 62 3b 20 20 20 20 20 20 2f  b *pVtab;      /
13640 2a 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20  * Virtual table 
13650 6f 66 20 74 68 69 73 20 63 75 72 73 6f 72 20 2a  of this cursor *
13660 2f 0a 20 20 2f 2a 20 56 69 72 74 75 61 6c 20 74  /.  /* Virtual t
13670 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
13680 69 6f 6e 73 20 77 69 6c 6c 20 74 79 70 69 63 61  ions will typica
13690 6c 6c 79 20 61 64 64 20 61 64 64 69 74 69 6f 6e  lly add addition
136a0 61 6c 20 66 69 65 6c 64 73 20 2a 2f 0a 7d 3b 0a  al fields */.};.
136b0 0a 2f 2a 0a 2a 2a 20 54 68 65 20 78 43 72 65 61  ./*.** The xCrea
136c0 74 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20  te and xConnect 
136d0 6d 65 74 68 6f 64 73 20 6f 66 20 61 20 6d 6f 64  methods of a mod
136e0 75 6c 65 20 75 73 65 20 74 68 65 20 66 6f 6c 6c  ule use the foll
136f0 6f 77 69 6e 67 20 41 50 49 0a 2a 2a 20 74 6f 20  owing API.** to 
13700 64 65 63 6c 61 72 65 20 74 68 65 20 66 6f 72 6d  declare the form
13710 61 74 20 28 74 68 65 20 6e 61 6d 65 73 20 61 6e  at (the names an
13720 64 20 64 61 74 61 74 79 70 65 73 20 6f 66 20 74  d datatypes of t
13730 68 65 20 63 6f 6c 75 6d 6e 73 29 20 6f 66 0a 2a  he columns) of.*
13740 2a 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  * the virtual ta
13750 62 6c 65 73 20 74 68 65 79 20 69 6d 70 6c 65 6d  bles they implem
13760 65 6e 74 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ent..*/.int sqli
13770 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
13780 28 73 71 6c 69 74 65 33 2a 2c 20 63 6f 6e 73 74  (sqlite3*, const
13790 20 63 68 61 72 20 2a 7a 43 72 65 61 74 65 54 61   char *zCreateTa
137a0 62 6c 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 56 69 72  ble);../*.** Vir
137b0 74 75 61 6c 20 74 61 62 6c 65 73 20 63 61 6e 20  tual tables can 
137c0 70 72 6f 76 69 64 65 20 61 6c 74 65 72 6e 61 74  provide alternat
137d0 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ive implementati
137e0 6f 6e 73 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73  ons of functions
137f0 0a 2a 2a 20 75 73 69 6e 67 20 74 68 65 20 78 46  .** using the xF
13800 69 6e 64 46 75 6e 63 74 69 6f 6e 20 6d 65 74 68  indFunction meth
13810 6f 64 2e 20 20 42 75 74 20 67 6c 6f 62 61 6c 20  od.  But global 
13820 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 6f 73  versions of thos
13830 65 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 6d  e functions.** m
13840 75 73 74 20 65 78 69 73 74 20 69 6e 20 6f 72 64  ust exist in ord
13850 65 72 20 74 6f 20 62 65 20 6f 76 65 72 6c 6f 61  er to be overloa
13860 64 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  ded..**.** This 
13870 41 50 49 20 6d 61 6b 65 73 20 73 75 72 65 20 61  API makes sure a
13880 20 67 6c 6f 62 61 6c 20 76 65 72 73 69 6f 6e 20   global version 
13890 6f 66 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 69  of a function wi
138a0 74 68 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a  th a particular.
138b0 2a 2a 20 6e 61 6d 65 20 61 6e 64 20 6e 75 6d 62  ** name and numb
138c0 65 72 20 6f 66 20 70 61 72 61 6d 65 74 65 72 73  er of parameters
138d0 20 65 78 69 73 74 73 2e 20 20 49 66 20 6e 6f 20   exists.  If no 
138e0 73 75 63 68 20 66 75 6e 63 74 69 6f 6e 20 65 78  such function ex
138f0 69 73 74 73 0a 2a 2a 20 62 65 66 6f 72 65 20 74  ists.** before t
13900 68 69 73 20 41 50 49 20 69 73 20 63 61 6c 6c 65  his API is calle
13910 64 2c 20 61 20 6e 65 77 20 66 75 6e 63 74 69 6f  d, a new functio
13920 6e 20 69 73 20 63 72 65 61 74 65 64 2e 20 20 54  n is created.  T
13930 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
13940 6e 0a 2a 2a 20 6f 66 20 74 68 65 20 6e 65 77 20  n.** of the new 
13950 66 75 6e 63 74 69 6f 6e 20 61 6c 77 61 79 73 20  function always 
13960 63 61 75 73 65 73 20 61 6e 20 65 78 63 65 70 74  causes an except
13970 69 6f 6e 20 74 6f 20 62 65 20 74 68 72 6f 77 6e  ion to be thrown
13980 2e 20 20 53 6f 0a 2a 2a 20 74 68 65 20 6e 65 77  .  So.** the new
13990 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74   function is not
139a0 20 67 6f 6f 64 20 66 6f 72 20 61 6e 79 74 68 69   good for anythi
139b0 6e 67 20 62 79 20 69 74 73 65 6c 66 2e 20 20 49  ng by itself.  I
139c0 74 73 20 6f 6e 6c 79 0a 2a 2a 20 70 75 72 70 6f  ts only.** purpo
139d0 73 65 20 69 73 20 74 6f 20 62 65 20 61 20 70 6c  se is to be a pl
139e0 61 63 65 2d 68 6f 6c 64 65 72 20 66 75 6e 63 74  ace-holder funct
139f0 69 6f 6e 20 74 68 61 74 20 63 61 6e 20 62 65 20  ion that can be 
13a00 6f 76 65 72 6c 6f 61 64 65 64 0a 2a 2a 20 62 79  overloaded.** by
13a10 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 2e   virtual tables.
13a20 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 41 50 49 20  .**.** This API 
13a30 73 68 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 64  should be consid
13a40 65 72 65 64 20 70 61 72 74 20 6f 66 20 74 68 65  ered part of the
13a50 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
13a60 6e 74 65 72 66 61 63 65 2c 0a 2a 2a 20 77 68 69  nterface,.** whi
13a70 63 68 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74  ch is experiment
13a80 61 6c 20 61 6e 64 20 73 75 62 6a 65 63 74 20 74  al and subject t
13a90 6f 20 63 68 61 6e 67 65 2e 0a 2a 2f 0a 69 6e 74  o change..*/.int
13aa0 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61   sqlite3_overloa
13ab0 64 5f 66 75 6e 63 74 69 6f 6e 28 73 71 6c 69 74  d_function(sqlit
13ac0 65 33 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  e3*, const char 
13ad0 2a 7a 46 75 6e 63 4e 61 6d 65 2c 20 69 6e 74 20  *zFuncName, int 
13ae0 6e 41 72 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  nArg);../*.** Th
13af0 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 74  e interface to t
13b00 68 65 20 76 69 72 74 75 61 6c 2d 74 61 62 6c 65  he virtual-table
13b10 20 6d 65 63 68 61 6e 69 73 6d 20 64 65 66 69 6e   mechanism defin
13b20 65 64 20 61 62 6f 76 65 20 28 62 61 63 6b 20 75  ed above (back u
13b30 70 0a 2a 2a 20 74 6f 20 61 20 63 6f 6d 6d 65 6e  p.** to a commen
13b40 74 20 72 65 6d 61 72 6b 61 62 6c 79 20 73 69 6d  t remarkably sim
13b50 69 6c 61 72 20 74 6f 20 74 68 69 73 20 6f 6e 65  ilar to this one
13b60 29 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 63  ) is currently c
13b70 6f 6e 73 69 64 65 72 65 64 0a 2a 2a 20 74 6f 20  onsidered.** to 
13b80 62 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e  be experimental.
13b90 20 20 54 68 65 20 69 6e 74 65 72 66 61 63 65 20    The interface 
13ba0 6d 69 67 68 74 20 63 68 61 6e 67 65 20 69 6e 20  might change in 
13bb0 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 61 79  incompatible way
13bc0 73 2e 0a 2a 2a 20 49 66 20 74 68 69 73 20 69 73  s..** If this is
13bd0 20 61 20 70 72 6f 62 6c 65 6d 20 66 6f 72 20 79   a problem for y
13be0 6f 75 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 74  ou, do not use t
13bf0 68 65 20 69 6e 74 65 72 66 61 63 65 20 61 74 20  he interface at 
13c00 74 68 69 73 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a  this time..**.**
13c10 20 57 68 65 6e 20 74 68 65 20 76 69 72 74 75 61   When the virtua
13c20 6c 2d 74 61 62 6c 65 20 6d 65 63 68 61 6e 69 73  l-table mechanis
13c30 6d 20 73 74 61 62 6c 69 7a 65 73 2c 20 77 65 20  m stablizes, we 
13c40 77 69 6c 6c 20 64 65 63 6c 61 72 65 20 74 68 65  will declare the
13c50 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 66 69  .** interface fi
13c60 78 65 64 2c 20 73 75 70 70 6f 72 74 20 69 74 20  xed, support it 
13c70 69 6e 64 65 66 69 6e 69 74 65 6c 79 2c 20 61 6e  indefinitely, an
13c80 64 20 72 65 6d 6f 76 65 20 74 68 69 73 20 63 6f  d remove this co
13c90 6d 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a  mment..**.******
13ca0 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 2d 20   EXPERIMENTAL - 
13cb0 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  subject to chang
13cc0 65 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65  e without notice
13cd0 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a   **************.
13ce0 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 55 6e 64 6f 20 74  */../*.** Undo t
13cf0 68 65 20 68 61 63 6b 20 74 68 61 74 20 63 6f 6e  he hack that con
13d00 76 65 72 74 73 20 66 6c 6f 61 74 69 6e 67 20 70  verts floating p
13d10 6f 69 6e 74 20 74 79 70 65 73 20 74 6f 20 69 6e  oint types to in
13d20 74 65 67 65 72 20 66 6f 72 0a 2a 2a 20 62 75 69  teger for.** bui
13d30 6c 64 73 20 6f 6e 20 70 72 6f 63 65 73 73 6f 72  lds on processor
13d40 73 20 77 69 74 68 6f 75 74 20 66 6c 6f 61 74 69  s without floati
13d50 6e 67 20 70 6f 69 6e 74 20 73 75 70 70 6f 72 74  ng point support
13d60 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49  ..*/.#ifdef SQLI
13d70 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47  TE_OMIT_FLOATING
13d80 5f 50 4f 49 4e 54 0a 23 20 75 6e 64 65 66 20 64  _POINT.# undef d
13d90 6f 75 62 6c 65 0a 23 65 6e 64 69 66 0a 0a 23 69  ouble.#endif..#i
13da0 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73  fdef __cplusplus
13db0 0a 7d 20 20 2f 2a 20 45 6e 64 20 6f 66 20 74 68  .}  /* End of th
13dc0 65 20 27 65 78 74 65 72 6e 20 22 43 22 27 20 62  e 'extern "C"' b
13dd0 6c 6f 63 6b 20 2a 2f 0a 23 65 6e 64 69 66 0a 23  lock */.#endif.#
13de0 65 6e 64 69 66 0a                                endif.