/ Hex Artifact Content
Login

Artifact c85f6bad9ca7de29f505fe886646cfff7df4c55e:


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 33 30 20 32 30 30  h.in,v 1.130 200
0200: 35 2f 30 32 2f 30 35 20 30 37 3a 33 33 3a 33 35  5/02/05 07:33:35
0210: 20 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78 70   danielk1977 Exp
0220: 20 24 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 5f 53   $.*/.#ifndef _S
0230: 51 4c 49 54 45 33 5f 48 5f 0a 23 64 65 66 69 6e  QLITE3_H_.#defin
0240: 65 20 5f 53 51 4c 49 54 45 33 5f 48 5f 0a 23 69  e _SQLITE3_H_.#i
0250: 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e 68  nclude <stdarg.h
0260: 3e 20 20 20 20 20 2f 2a 20 4e 65 65 64 65 64 20  >     /* Needed 
0270: 66 6f 72 20 74 68 65 20 64 65 66 69 6e 69 74 69  for the definiti
0280: 6f 6e 20 6f 66 20 76 61 5f 6c 69 73 74 20 2a 2f  on of va_list */
0290: 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73 75 72  ../*.** Make sur
02a0: 65 20 77 65 20 63 61 6e 20 63 61 6c 6c 20 74 68  e we can call th
02b0: 69 73 20 73 74 75 66 66 20 66 72 6f 6d 20 43 2b  is stuff from C+
02c0: 2b 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 5f 5f 63  +..*/.#ifdef __c
02d0: 70 6c 75 73 70 6c 75 73 0a 65 78 74 65 72 6e 20  plusplus.extern 
02e0: 22 43 22 20 7b 0a 23 65 6e 64 69 66 0a 0a 2f 2a  "C" {.#endif../*
02f0: 0a 2a 2a 20 54 68 65 20 76 65 72 73 69 6f 6e 20  .** The version 
0300: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
0310: 62 72 61 72 79 2e 0a 2a 2f 0a 23 69 66 64 65 66  brary..*/.#ifdef
0320: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 0a   SQLITE_VERSION.
0330: 23 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56  # undef SQLITE_V
0340: 45 52 53 49 4f 4e 0a 23 65 6e 64 69 66 0a 23 64  ERSION.#endif.#d
0350: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45 52  efine SQLITE_VER
0360: 53 49 4f 4e 20 20 20 20 20 20 20 20 20 22 2d 2d  SION         "--
0370: 56 45 52 53 2d 2d 22 0a 0a 2f 2a 0a 2a 2a 20 54  VERS--"../*.** T
0380: 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65  he format of the
0390: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 20   version string 
03a0: 69 73 20 22 58 2e 59 2e 5a 3c 74 72 61 69 6c 69  is "X.Y.Z<traili
03b0: 6e 67 20 73 74 72 69 6e 67 3e 22 2c 20 77 68 65  ng string>", whe
03c0: 72 65 0a 2a 2a 20 58 20 69 73 20 74 68 65 20 6d  re.** X is the m
03d0: 61 6a 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d  ajor version num
03e0: 62 65 72 2c 20 59 20 69 73 20 74 68 65 20 6d 69  ber, Y is the mi
03f0: 6e 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  nor version numb
0400: 65 72 20 61 6e 64 20 5a 0a 2a 2a 20 69 73 20 74  er and Z.** is t
0410: 68 65 20 72 65 6c 65 61 73 65 20 6e 75 6d 62 65  he release numbe
0420: 72 2e 20 54 68 65 20 74 72 61 69 6c 69 6e 67 20  r. The trailing 
0430: 73 74 72 69 6e 67 20 69 73 20 6f 66 74 65 6e 20  string is often 
0440: 22 61 6c 70 68 61 22 20 6f 72 20 22 62 65 74 61  "alpha" or "beta
0450: 22 2e 0a 2a 2a 20 46 6f 72 20 65 78 61 6d 70 6c  "..** For exampl
0460: 65 20 22 33 2e 31 2e 31 62 65 74 61 22 2e 0a 2a  e "3.1.1beta"..*
0470: 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f  *.** The SQLITE_
0480: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 69  VERSION_NUMBER i
0490: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 69 74  s an integer wit
04a0: 68 20 74 68 65 20 76 61 6c 75 65 20 0a 2a 2a 20  h the value .** 
04b0: 28 58 2a 31 30 30 30 30 30 20 2b 20 59 2a 31 30  (X*100000 + Y*10
04c0: 30 30 20 2b 20 5a 29 2e 20 46 6f 72 20 65 78 61  00 + Z). For exa
04d0: 6d 70 6c 65 2c 20 66 6f 72 20 76 65 72 73 69 6f  mple, for versio
04e0: 6e 20 22 33 2e 31 2e 31 62 65 74 61 22 2c 20 0a  n "3.1.1beta", .
04f0: 2a 2a 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  ** SQLITE_VERSIO
0500: 4e 5f 4e 55 4d 42 45 52 20 69 73 20 73 65 74 20  N_NUMBER is set 
0510: 74 6f 20 33 30 30 31 30 30 31 2e 20 54 6f 20 64  to 3001001. To d
0520: 65 74 65 63 74 20 69 66 20 74 68 65 79 20 61 72  etect if they ar
0530: 65 20 75 73 69 6e 67 20 0a 2a 2a 20 76 65 72 73  e using .** vers
0540: 69 6f 6e 20 33 2e 31 2e 31 20 6f 72 20 67 72 65  ion 3.1.1 or gre
0550: 61 74 65 72 20 61 74 20 63 6f 6d 70 69 6c 65 20  ater at compile 
0560: 74 69 6d 65 2c 20 70 72 6f 67 72 61 6d 73 20 6d  time, programs m
0570: 61 79 20 75 73 65 20 74 68 65 20 74 65 73 74 20  ay use the test 
0580: 0a 2a 2a 20 28 53 51 4c 49 54 45 5f 56 45 52 53  .** (SQLITE_VERS
0590: 49 4f 4e 5f 4e 55 4d 42 45 52 3e 3d 33 30 30 31  ION_NUMBER>=3001
05a0: 30 30 31 29 2e 0a 2a 2f 0a 23 69 66 64 65 66 20  001)..*/.#ifdef 
05b0: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e  SQLITE_VERSION_N
05c0: 55 4d 42 45 52 0a 23 20 75 6e 64 65 66 20 53 51  UMBER.# undef SQ
05d0: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
05e0: 42 45 52 0a 23 65 6e 64 69 66 0a 23 64 65 66 69  BER.#endif.#defi
05f0: 6e 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  ne SQLITE_VERSIO
0600: 4e 5f 4e 55 4d 42 45 52 20 2d 2d 56 45 52 53 49  N_NUMBER --VERSI
0610: 4f 4e 2d 4e 55 4d 42 45 52 2d 2d 0a 0a 2f 2a 0a  ON-NUMBER--../*.
0620: 2a 2a 20 54 68 65 20 76 65 72 73 69 6f 6e 20 73  ** The version s
0630: 74 72 69 6e 67 20 69 73 20 61 6c 73 6f 20 63 6f  tring is also co
0640: 6d 70 69 6c 65 64 20 69 6e 74 6f 20 74 68 65 20  mpiled into the 
0650: 6c 69 62 72 61 72 79 20 73 6f 20 74 68 61 74 20  library so that 
0660: 61 20 70 72 6f 67 72 61 6d 0a 2a 2a 20 63 61 6e  a program.** can
0670: 20 63 68 65 63 6b 20 74 6f 20 6d 61 6b 65 20 73   check to make s
0680: 75 72 65 20 74 68 61 74 20 74 68 65 20 6c 69 62  ure that the lib
0690: 2a 2e 61 20 66 69 6c 65 20 61 6e 64 20 74 68 65  *.a file and the
06a0: 20 2a 2e 68 20 66 69 6c 65 20 61 72 65 20 66 72   *.h file are fr
06b0: 6f 6d 0a 2a 2a 20 74 68 65 20 73 61 6d 65 20 76  om.** the same v
06c0: 65 72 73 69 6f 6e 2e 20 20 54 68 65 20 73 71 6c  ersion.  The sql
06d0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
06e0: 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
06f0: 6e 73 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  ns a pointer.** 
0700: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
0710: 65 72 73 69 6f 6e 20 76 61 72 69 61 62 6c 65 20  ersion variable 
0720: 2d 20 75 73 65 66 75 6c 20 69 6e 20 44 4c 4c 73  - useful in DLLs
0730: 20 77 68 69 63 68 20 63 61 6e 6e 6f 74 20 61 63   which cannot ac
0740: 63 65 73 73 0a 2a 2a 20 67 6c 6f 62 61 6c 20 76  cess.** global v
0750: 61 72 69 61 62 6c 65 73 2e 0a 2a 2f 0a 65 78 74  ariables..*/.ext
0760: 65 72 6e 20 63 6f 6e 73 74 20 63 68 61 72 20 73  ern const char s
0770: 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d  qlite3_version[]
0780: 3b 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  ;.const char *sq
0790: 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
07a0: 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52  (void);../*.** R
07b0: 65 74 75 72 6e 20 74 68 65 20 76 61 6c 75 65 20  eturn the value 
07c0: 6f 66 20 74 68 65 20 53 51 4c 49 54 45 5f 56 45  of the SQLITE_VE
07d0: 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 6d 61 63  RSION_NUMBER mac
07e0: 72 6f 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20 6c  ro when the.** l
07f0: 69 62 72 61 72 79 20 77 61 73 20 63 6f 6d 70 69  ibrary was compi
0800: 6c 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  led..*/.int sqli
0810: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
0820: 75 6d 62 65 72 28 76 6f 69 64 29 3b 0a 0a 2f 2a  umber(void);../*
0830: 0a 2a 2a 20 45 61 63 68 20 6f 70 65 6e 20 73 71  .** Each open sq
0840: 6c 69 74 65 20 64 61 74 61 62 61 73 65 20 69 73  lite database is
0850: 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20   represented by 
0860: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
0870: 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  he.** following 
0880: 6f 70 61 71 75 65 20 73 74 72 75 63 74 75 72 65  opaque structure
0890: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
08a0: 75 63 74 20 73 71 6c 69 74 65 33 20 73 71 6c 69  uct sqlite3 sqli
08b0: 74 65 33 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 53 6f 6d  te3;.../*.** Som
08c0: 65 20 63 6f 6d 70 69 6c 65 72 73 20 64 6f 20 6e  e compilers do n
08d0: 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65 20 22  ot support the "
08e0: 6c 6f 6e 67 20 6c 6f 6e 67 22 20 64 61 74 61 74  long long" datat
08f0: 79 70 65 2e 20 20 53 6f 20 77 65 20 68 61 76 65  ype.  So we have
0900: 0a 2a 2a 20 74 6f 20 64 6f 20 61 20 74 79 70 65  .** to do a type
0910: 64 65 66 20 74 68 61 74 20 66 6f 72 20 36 34 2d  def that for 64-
0920: 62 69 74 20 69 6e 74 65 67 65 72 73 20 74 68 61  bit integers tha
0930: 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 77 68 61  t depends on wha
0940: 74 20 63 6f 6d 70 69 6c 65 72 0a 2a 2a 20 69 73  t compiler.** is
0950: 20 62 65 69 6e 67 20 75 73 65 64 2e 0a 2a 2f 0a   being used..*/.
0960: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43  #if defined(_MSC
0970: 5f 56 45 52 29 20 7c 7c 20 64 65 66 69 6e 65 64  _VER) || defined
0980: 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f 29 0a 20  (__BORLANDC__). 
0990: 20 74 79 70 65 64 65 66 20 5f 5f 69 6e 74 36 34   typedef __int64
09a0: 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20   sqlite_int64;. 
09b0: 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65   typedef unsigne
09c0: 64 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  d __int64 sqlite
09d0: 5f 75 69 6e 74 36 34 3b 0a 23 65 6c 73 65 0a 20  _uint64;.#else. 
09e0: 20 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f   typedef long lo
09f0: 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 69 6e  ng int sqlite_in
0a00: 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75  t64;.  typedef u
0a10: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e  nsigned long lon
0a20: 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 75 69 6e  g int sqlite_uin
0a30: 74 36 34 3b 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a  t64;.#endif.../*
0a40: 0a 2a 2a 20 41 20 66 75 6e 63 74 69 6f 6e 20 74  .** A function t
0a50: 6f 20 63 6c 6f 73 65 20 74 68 65 20 64 61 74 61  o close the data
0a60: 62 61 73 65 2e 0a 2a 2a 0a 2a 2a 20 43 61 6c 6c  base..**.** Call
0a70: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77   this function w
0a80: 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  ith a pointer to
0a90: 20 61 20 73 74 72 75 63 74 75 72 65 20 74 68 61   a structure tha
0aa0: 74 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79  t was previously
0ab0: 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 66 72 6f  .** returned fro
0ac0: 6d 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  m sqlite3_open()
0ad0: 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 73 70   and the corresp
0ae0: 6f 6e 64 69 6e 67 20 64 61 74 61 62 61 73 65 20  onding database 
0af0: 77 69 6c 6c 20 62 79 20 63 6c 6f 73 65 64 2e 0a  will by closed..
0b00: 2a 2a 0a 2a 2a 20 41 6c 6c 20 53 51 4c 20 73 74  **.** All SQL st
0b10: 61 74 65 6d 65 6e 74 73 20 70 72 65 70 61 72 65  atements prepare
0b20: 64 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  d using sqlite3_
0b30: 70 72 65 70 61 72 65 28 29 20 6f 72 0a 2a 2a 20  prepare() or.** 
0b40: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
0b50: 36 28 29 20 6d 75 73 74 20 62 65 20 64 65 61 6c  6() must be deal
0b60: 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20 73 71  located using sq
0b70: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29  lite3_finalize()
0b80: 20 62 65 66 6f 72 65 0a 2a 2a 20 74 68 69 73 20   before.** this 
0b90: 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c 6c 65  routine is calle
0ba0: 64 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 53 51  d. Otherwise, SQ
0bb0: 4c 49 54 45 5f 42 55 53 59 20 69 73 20 72 65 74  LITE_BUSY is ret
0bc0: 75 72 6e 65 64 20 61 6e 64 20 74 68 65 0a 2a 2a  urned and the.**
0bd0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
0be0: 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 6f 70 65  tion remains ope
0bf0: 6e 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  n..*/.int sqlite
0c00: 33 5f 63 6c 6f 73 65 28 73 71 6c 69 74 65 33 20  3_close(sqlite3 
0c10: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 74  *);../*.** The t
0c20: 79 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62 61  ype for a callba
0c30: 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2f 0a  ck function..*/.
0c40: 74 79 70 65 64 65 66 20 69 6e 74 20 28 2a 73 71  typedef int (*sq
0c50: 6c 69 74 65 33 5f 63 61 6c 6c 62 61 63 6b 29 28  lite3_callback)(
0c60: 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a  void*,int,char**
0c70: 2c 20 63 68 61 72 2a 2a 29 3b 0a 0a 2f 2a 0a 2a  , char**);../*.*
0c80: 2a 20 41 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  * A function to 
0c90: 65 78 65 63 75 74 65 73 20 6f 6e 65 20 6f 72 20  executes one or 
0ca0: 6d 6f 72 65 20 73 74 61 74 65 6d 65 6e 74 73 20  more statements 
0cb0: 6f 66 20 53 51 4c 2e 0a 2a 2a 0a 2a 2a 20 49 66  of SQL..**.** If
0cc0: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20   one or more of 
0cd0: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
0ce0: 74 73 20 61 72 65 20 71 75 65 72 69 65 73 2c 20  ts are queries, 
0cf0: 74 68 65 6e 0a 2a 2a 20 74 68 65 20 63 61 6c 6c  then.** the call
0d00: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 73 70  back function sp
0d10: 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20 33  ecified by the 3
0d20: 72 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a  rd parameter is.
0d30: 2a 2a 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20  ** invoked once 
0d40: 66 6f 72 20 65 61 63 68 20 72 6f 77 20 6f 66 20  for each row of 
0d50: 74 68 65 20 71 75 65 72 79 20 72 65 73 75 6c 74  the query result
0d60: 2e 20 20 54 68 69 73 20 63 61 6c 6c 62 61 63 6b  .  This callback
0d70: 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61  .** should norma
0d80: 6c 6c 79 20 72 65 74 75 72 6e 20 30 2e 20 20 49  lly return 0.  I
0d90: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  f the callback r
0da0: 65 74 75 72 6e 73 20 61 20 6e 6f 6e 2d 7a 65 72  eturns a non-zer
0db0: 6f 0a 2a 2a 20 76 61 6c 75 65 20 74 68 65 6e 20  o.** value then 
0dc0: 74 68 65 20 71 75 65 72 79 20 69 73 20 61 62 6f  the query is abo
0dd0: 72 74 65 64 2c 20 61 6c 6c 20 73 75 62 73 65 71  rted, all subseq
0de0: 75 65 6e 74 20 53 51 4c 20 73 74 61 74 65 6d 65  uent SQL stateme
0df0: 6e 74 73 0a 2a 2a 20 61 72 65 20 73 6b 69 70 70  nts.** are skipp
0e00: 65 64 20 61 6e 64 20 74 68 65 20 73 71 6c 69 74  ed and the sqlit
0e10: 65 33 5f 65 78 65 63 28 29 20 66 75 6e 63 74 69  e3_exec() functi
0e20: 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 53  on returns the S
0e30: 51 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 2a 2a 0a  QLITE_ABORT..**.
0e40: 2a 2a 20 54 68 65 20 34 74 68 20 70 61 72 61 6d  ** The 4th param
0e50: 65 74 65 72 20 69 73 20 61 6e 20 61 72 62 69 74  eter is an arbit
0e60: 72 61 72 79 20 70 6f 69 6e 74 65 72 20 74 68 61  rary pointer tha
0e70: 74 20 69 73 20 70 61 73 73 65 64 0a 2a 2a 20 74  t is passed.** t
0e80: 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  o the callback f
0e90: 75 6e 63 74 69 6f 6e 20 61 73 20 69 74 73 20 66  unction as its f
0ea0: 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 2e 0a  irst parameter..
0eb0: 2a 2a 0a 2a 2a 20 54 68 65 20 32 6e 64 20 70 61  **.** The 2nd pa
0ec0: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63  rameter to the c
0ed0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
0ee0: 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   is the number o
0ef0: 66 0a 2a 2a 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  f.** columns in 
0f00: 74 68 65 20 71 75 65 72 79 20 72 65 73 75 6c 74  the query result
0f10: 2e 20 20 54 68 65 20 33 72 64 20 70 61 72 61 6d  .  The 3rd param
0f20: 65 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c  eter to the call
0f30: 62 61 63 6b 0a 2a 2a 20 69 73 20 61 6e 20 61 72  back.** is an ar
0f40: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 68  ray of strings h
0f50: 6f 6c 64 69 6e 67 20 74 68 65 20 76 61 6c 75 65  olding the value
0f60: 73 20 66 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d  s for each colum
0f70: 6e 2e 0a 2a 2a 20 54 68 65 20 34 74 68 20 70 61  n..** The 4th pa
0f80: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63  rameter to the c
0f90: 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 61 72  allback is an ar
0fa0: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 68  ray of strings h
0fb0: 6f 6c 64 69 6e 67 0a 2a 2a 20 74 68 65 20 6e 61  olding.** the na
0fc0: 6d 65 73 20 6f 66 20 65 61 63 68 20 63 6f 6c 75  mes of each colu
0fd0: 6d 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 61  mn..**.** The ca
0fe0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
0ff0: 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20 65 76 65  may be NULL, eve
1000: 6e 20 66 6f 72 20 71 75 65 72 69 65 73 2e 20 20  n for queries.  
1010: 41 20 4e 55 4c 4c 0a 2a 2a 20 63 61 6c 6c 62 61  A NULL.** callba
1020: 63 6b 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72  ck is not an err
1030: 6f 72 2e 20 20 49 74 20 6a 75 73 74 20 6d 65 61  or.  It just mea
1040: 6e 73 20 74 68 61 74 20 6e 6f 20 63 61 6c 6c 62  ns that no callb
1050: 61 63 6b 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 69  ack.** will be i
1060: 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66  nvoked..**.** If
1070: 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73   an error occurs
1080: 20 77 68 69 6c 65 20 70 61 72 73 69 6e 67 20 6f   while parsing o
1090: 72 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65  r evaluating the
10a0: 20 53 51 4c 20 28 62 75 74 0a 2a 2a 20 6e 6f 74   SQL (but.** not
10b0: 20 77 68 69 6c 65 20 65 78 65 63 75 74 69 6e 67   while executing
10c0: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 29 20 74   the callback) t
10d0: 68 65 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61  hen an appropria
10e0: 74 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 65 73 73  te error.** mess
10f0: 61 67 65 20 69 73 20 77 72 69 74 74 65 6e 20 69  age is written i
1100: 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69  nto memory obtai
1110: 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f 63 28  ned from malloc(
1120: 29 20 61 6e 64 0a 2a 2a 20 2a 65 72 72 6d 73 67  ) and.** *errmsg
1130: 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e   is made to poin
1140: 74 20 74 6f 20 74 68 61 74 20 6d 65 73 73 61 67  t to that messag
1150: 65 2e 20 20 54 68 65 20 63 61 6c 6c 69 6e 67 20  e.  The calling 
1160: 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69 73 20 72  function.** is r
1170: 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 66  esponsible for f
1180: 72 65 65 69 6e 67 20 74 68 65 20 6d 65 6d 6f 72  reeing the memor
1190: 79 20 74 68 61 74 20 68 6f 6c 64 73 20 74 68 65  y that holds the
11a0: 20 65 72 72 6f 72 0a 2a 2a 20 6d 65 73 73 61 67   error.** messag
11b0: 65 2e 20 20 20 55 73 65 20 73 71 6c 69 74 65 33  e.   Use sqlite3
11c0: 5f 66 72 65 65 28 29 20 66 6f 72 20 74 68 69 73  _free() for this
11d0: 2e 20 20 49 66 20 65 72 72 6d 73 67 3d 3d 4e 55  .  If errmsg==NU
11e0: 4c 4c 2c 0a 2a 2a 20 74 68 65 6e 20 6e 6f 20 65  LL,.** then no e
11f0: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20  rror message is 
1200: 65 76 65 72 20 77 72 69 74 74 65 6e 2e 0a 2a 2a  ever written..**
1210: 0a 2a 2a 20 54 68 65 20 72 65 74 75 72 6e 20 76  .** The return v
1220: 61 6c 75 65 20 69 73 20 69 73 20 53 51 4c 49 54  alue is is SQLIT
1230: 45 5f 4f 4b 20 69 66 20 74 68 65 72 65 20 61 72  E_OK if there ar
1240: 65 20 6e 6f 20 65 72 72 6f 72 73 20 61 6e 64 0a  e no errors and.
1250: 2a 2a 20 73 6f 6d 65 20 6f 74 68 65 72 20 72 65  ** some other re
1260: 74 75 72 6e 20 63 6f 64 65 20 69 66 20 74 68 65  turn code if the
1270: 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2e 20  re is an error. 
1280: 20 54 68 65 20 70 61 72 74 69 63 75 6c 61 72 0a   The particular.
1290: 2a 2a 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  ** return value 
12a0: 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 74  depends on the t
12b0: 79 70 65 20 6f 66 20 65 72 72 6f 72 2e 20 0a 2a  ype of error. .*
12c0: 2a 0a 2a 2a 20 49 66 20 74 68 65 20 71 75 65 72  *.** If the quer
12d0: 79 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 65  y could not be e
12e0: 78 65 63 75 74 65 64 20 62 65 63 61 75 73 65 20  xecuted because 
12f0: 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
1300: 69 73 0a 2a 2a 20 6c 6f 63 6b 65 64 20 6f 72 20  is.** locked or 
1310: 62 75 73 79 2c 20 74 68 65 6e 20 74 68 69 73 20  busy, then this 
1320: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
1330: 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 20 20 28   SQLITE_BUSY.  (
1340: 54 68 69 73 0a 2a 2a 20 62 65 68 61 76 69 6f 72  This.** behavior
1350: 20 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65 64   can be modified
1360: 20 73 6f 6d 65 77 68 61 74 20 75 73 69 6e 67 20   somewhat using 
1370: 74 68 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79  the sqlite3_busy
1380: 5f 68 61 6e 64 6c 65 72 28 29 0a 2a 2a 20 61 6e  _handler().** an
1390: 64 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74  d sqlite3_busy_t
13a0: 69 6d 65 6f 75 74 28 29 20 66 75 6e 63 74 69 6f  imeout() functio
13b0: 6e 73 20 62 65 6c 6f 77 2e 29 0a 2a 2f 0a 69 6e  ns below.).*/.in
13c0: 74 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0a  t sqlite3_exec(.
13d0: 20 20 73 71 6c 69 74 65 33 2a 2c 20 20 20 20 20    sqlite3*,     
13e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f0: 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62  /* An open datab
1400: 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ase */.  const c
1410: 68 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20  har *sql,       
1420: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f         /* SQL to
1430: 20 62 65 20 65 78 65 63 75 74 65 64 20 2a 2f 0a   be executed */.
1440: 20 20 73 71 6c 69 74 65 33 5f 63 61 6c 6c 62 61    sqlite3_callba
1450: 63 6b 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  ck,             
1460: 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  /* Callback func
1470: 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 2a  tion */.  void *
1480: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
1490: 20 20 20 20 20 20 20 20 2f 2a 20 31 73 74 20 61          /* 1st a
14a0: 72 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 62  rgument to callb
14b0: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a  ack function */.
14c0: 20 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 20    char **errmsg 
14d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e0: 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69  /* Error msg wri
14f0: 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a  tten here */.);.
1500: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 76 61  ./*.** Return va
1510: 6c 75 65 73 20 66 6f 72 20 73 71 6c 69 74 65 33  lues for sqlite3
1520: 5f 65 78 65 63 28 29 20 61 6e 64 20 73 71 6c 69  _exec() and sqli
1530: 74 65 33 5f 73 74 65 70 28 29 0a 2a 2f 0a 23 64  te3_step().*/.#d
1540: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 20  efine SQLITE_OK 
1550: 20 20 20 20 20 20 20 20 20 20 30 20 20 20 2f 2a            0   /*
1560: 20 53 75 63 63 65 73 73 66 75 6c 20 72 65 73 75   Successful resu
1570: 6c 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  lt */.#define SQ
1580: 4c 49 54 45 5f 45 52 52 4f 52 20 20 20 20 20 20  LITE_ERROR      
1590: 20 20 31 20 20 20 2f 2a 20 53 51 4c 20 65 72 72    1   /* SQL err
15a0: 6f 72 20 6f 72 20 6d 69 73 73 69 6e 67 20 64 61  or or missing da
15b0: 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66 69 6e  tabase */.#defin
15c0: 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 4e 41  e SQLITE_INTERNA
15d0: 4c 20 20 20 20 20 32 20 20 20 2f 2a 20 41 6e 20  L     2   /* An 
15e0: 69 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20 65  internal logic e
15f0: 72 72 6f 72 20 69 6e 20 53 51 4c 69 74 65 20 2a  rror in SQLite *
1600: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1610: 5f 50 45 52 4d 20 20 20 20 20 20 20 20 20 33 20  _PERM         3 
1620: 20 20 2f 2a 20 41 63 63 65 73 73 20 70 65 72 6d    /* Access perm
1630: 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 20 2a 2f  ission denied */
1640: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1650: 41 42 4f 52 54 20 20 20 20 20 20 20 20 34 20 20  ABORT        4  
1660: 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 72 6f 75   /* Callback rou
1670: 74 69 6e 65 20 72 65 71 75 65 73 74 65 64 20 61  tine requested a
1680: 6e 20 61 62 6f 72 74 20 2a 2f 0a 23 64 65 66 69  n abort */.#defi
1690: 6e 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20  ne SQLITE_BUSY  
16a0: 20 20 20 20 20 20 20 35 20 20 20 2f 2a 20 54 68         5   /* Th
16b0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
16c0: 69 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65  is locked */.#de
16d0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
16e0: 45 44 20 20 20 20 20 20 20 36 20 20 20 2f 2a 20  ED       6   /* 
16f0: 41 20 74 61 62 6c 65 20 69 6e 20 74 68 65 20 64  A table in the d
1700: 61 74 61 62 61 73 65 20 69 73 20 6c 6f 63 6b 65  atabase is locke
1710: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
1720: 49 54 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20  ITE_NOMEM       
1730: 20 37 20 20 20 2f 2a 20 41 20 6d 61 6c 6c 6f 63   7   /* A malloc
1740: 28 29 20 66 61 69 6c 65 64 20 2a 2f 0a 23 64 65  () failed */.#de
1750: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44  fine SQLITE_READ
1760: 4f 4e 4c 59 20 20 20 20 20 38 20 20 20 2f 2a 20  ONLY     8   /* 
1770: 41 74 74 65 6d 70 74 20 74 6f 20 77 72 69 74 65  Attempt to write
1780: 20 61 20 72 65 61 64 6f 6e 6c 79 20 64 61 74 61   a readonly data
1790: 62 61 73 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  base */.#define 
17a0: 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54  SQLITE_INTERRUPT
17b0: 20 20 20 20 39 20 20 20 2f 2a 20 4f 70 65 72 61      9   /* Opera
17c0: 74 69 6f 6e 20 74 65 72 6d 69 6e 61 74 65 64 20  tion terminated 
17d0: 62 79 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  by sqlite3_inter
17e0: 72 75 70 74 28 29 2a 2f 0a 23 64 65 66 69 6e 65  rupt()*/.#define
17f0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 20 20   SQLITE_IOERR   
1800: 20 20 20 20 31 30 20 20 20 2f 2a 20 53 6f 6d 65      10   /* Some
1810: 20 6b 69 6e 64 20 6f 66 20 64 69 73 6b 20 49 2f   kind of disk I/
1820: 4f 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64  O error occurred
1830: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1840: 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20 31  TE_CORRUPT     1
1850: 31 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62  1   /* The datab
1860: 61 73 65 20 64 69 73 6b 20 69 6d 61 67 65 20 69  ase disk image i
1870: 73 20 6d 61 6c 66 6f 72 6d 65 64 20 2a 2f 0a 23  s malformed */.#
1880: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f  define SQLITE_NO
1890: 54 46 4f 55 4e 44 20 20 20 20 31 32 20 20 20 2f  TFOUND    12   /
18a0: 2a 20 28 49 6e 74 65 72 6e 61 6c 20 4f 6e 6c 79  * (Internal Only
18b0: 29 20 54 61 62 6c 65 20 6f 72 20 72 65 63 6f 72  ) Table or recor
18c0: 64 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 2f 0a 23  d not found */.#
18d0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55  define SQLITE_FU
18e0: 4c 4c 20 20 20 20 20 20 20 20 31 33 20 20 20 2f  LL        13   /
18f0: 2a 20 49 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c  * Insertion fail
1900: 65 64 20 62 65 63 61 75 73 65 20 64 61 74 61 62  ed because datab
1910: 61 73 65 20 69 73 20 66 75 6c 6c 20 2a 2f 0a 23  ase is full */.#
1920: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41  define SQLITE_CA
1930: 4e 54 4f 50 45 4e 20 20 20 20 31 34 20 20 20 2f  NTOPEN    14   /
1940: 2a 20 55 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e  * Unable to open
1950: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
1960: 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  le */.#define SQ
1970: 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 20 20  LITE_PROTOCOL   
1980: 20 31 35 20 20 20 2f 2a 20 44 61 74 61 62 61 73   15   /* Databas
1990: 65 20 6c 6f 63 6b 20 70 72 6f 74 6f 63 6f 6c 20  e lock protocol 
19a0: 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65  error */.#define
19b0: 20 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20   SQLITE_EMPTY   
19c0: 20 20 20 20 31 36 20 20 20 2f 2a 20 44 61 74 61      16   /* Data
19d0: 62 61 73 65 20 69 73 20 65 6d 70 74 79 20 2a 2f  base is empty */
19e0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
19f0: 53 43 48 45 4d 41 20 20 20 20 20 20 31 37 20 20  SCHEMA      17  
1a00: 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73 65   /* The database
1a10: 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 64 20   schema changed 
1a20: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1a30: 45 5f 54 4f 4f 42 49 47 20 20 20 20 20 20 31 38  E_TOOBIG      18
1a40: 20 20 20 2f 2a 20 54 6f 6f 20 6d 75 63 68 20 64     /* Too much d
1a50: 61 74 61 20 66 6f 72 20 6f 6e 65 20 72 6f 77 20  ata for one row 
1a60: 6f 66 20 61 20 74 61 62 6c 65 20 2a 2f 0a 23 64  of a table */.#d
1a70: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1a80: 53 54 52 41 49 4e 54 20 20 31 39 20 20 20 2f 2a  STRAINT  19   /*
1a90: 20 41 62 6f 72 74 20 64 75 65 20 74 6f 20 63 6f   Abort due to co
1aa0: 6e 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  ntraint violatio
1ab0: 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  n */.#define SQL
1ac0: 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20 20 20  ITE_MISMATCH    
1ad0: 32 30 20 20 20 2f 2a 20 44 61 74 61 20 74 79 70  20   /* Data typ
1ae0: 65 20 6d 69 73 6d 61 74 63 68 20 2a 2f 0a 23 64  e mismatch */.#d
1af0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53  efine SQLITE_MIS
1b00: 55 53 45 20 20 20 20 20 20 32 31 20 20 20 2f 2a  USE      21   /*
1b10: 20 4c 69 62 72 61 72 79 20 75 73 65 64 20 69 6e   Library used in
1b20: 63 6f 72 72 65 63 74 6c 79 20 2a 2f 0a 23 64 65  correctly */.#de
1b30: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4c 46  fine SQLITE_NOLF
1b40: 53 20 20 20 20 20 20 20 32 32 20 20 20 2f 2a 20  S       22   /* 
1b50: 55 73 65 73 20 4f 53 20 66 65 61 74 75 72 65 73  Uses OS features
1b60: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f   not supported o
1b70: 6e 20 68 6f 73 74 20 2a 2f 0a 23 64 65 66 69 6e  n host */.#defin
1b80: 65 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20  e SQLITE_AUTH   
1b90: 20 20 20 20 20 32 33 20 20 20 2f 2a 20 41 75 74       23   /* Aut
1ba0: 68 6f 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69 65  horization denie
1bb0: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
1bc0: 49 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20  ITE_FORMAT      
1bd0: 32 34 20 20 20 2f 2a 20 41 75 78 69 6c 69 61 72  24   /* Auxiliar
1be0: 79 20 64 61 74 61 62 61 73 65 20 66 6f 72 6d 61  y database forma
1bf0: 74 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69  t error */.#defi
1c00: 6e 65 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20  ne SQLITE_RANGE 
1c10: 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20 32 6e        25   /* 2n
1c20: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  d parameter to s
1c30: 71 6c 69 74 65 33 5f 62 69 6e 64 20 6f 75 74 20  qlite3_bind out 
1c40: 6f 66 20 72 61 6e 67 65 20 2a 2f 0a 23 64 65 66  of range */.#def
1c50: 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 41 44  ine SQLITE_NOTAD
1c60: 42 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20 46  B      26   /* F
1c70: 69 6c 65 20 6f 70 65 6e 65 64 20 74 68 61 74 20  ile opened that 
1c80: 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61 73  is not a databas
1c90: 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e  e file */.#defin
1ca0: 65 20 53 51 4c 49 54 45 5f 52 4f 57 20 20 20 20  e SQLITE_ROW    
1cb0: 20 20 20 20 20 31 30 30 20 20 2f 2a 20 73 71 6c       100  /* sql
1cc0: 69 74 65 33 5f 73 74 65 70 28 29 20 68 61 73 20  ite3_step() has 
1cd0: 61 6e 6f 74 68 65 72 20 72 6f 77 20 72 65 61 64  another row read
1ce0: 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
1cf0: 49 54 45 5f 44 4f 4e 45 20 20 20 20 20 20 20 20  ITE_DONE        
1d00: 31 30 31 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f  101  /* sqlite3_
1d10: 73 74 65 70 28 29 20 68 61 73 20 66 69 6e 69 73  step() has finis
1d20: 68 65 64 20 65 78 65 63 75 74 69 6e 67 20 2a 2f  hed executing */
1d30: 0a 0a 2f 2a 0a 2a 2a 20 45 61 63 68 20 65 6e 74  ../*.** Each ent
1d40: 72 79 20 69 6e 20 61 6e 20 53 51 4c 69 74 65 20  ry in an SQLite 
1d50: 74 61 62 6c 65 20 68 61 73 20 61 20 75 6e 69 71  table has a uniq
1d60: 75 65 20 69 6e 74 65 67 65 72 20 6b 65 79 2e 20  ue integer key. 
1d70: 20 28 54 68 65 20 6b 65 79 20 69 73 0a 2a 2a 20   (The key is.** 
1d80: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
1d90: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
1da0: 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69 66 20 74   KEY column if t
1db0: 68 65 72 65 20 69 73 20 73 75 63 68 20 61 20 63  here is such a c
1dc0: 6f 6c 75 6d 6e 2c 0a 2a 2a 20 6f 74 68 65 72 77  olumn,.** otherw
1dd0: 69 73 65 20 74 68 65 20 6b 65 79 20 69 73 20 67  ise the key is g
1de0: 65 6e 65 72 61 74 65 64 20 61 74 20 72 61 6e 64  enerated at rand
1df0: 6f 6d 2e 20 20 54 68 65 20 75 6e 69 71 75 65 20  om.  The unique 
1e00: 6b 65 79 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a  key is always.**
1e10: 20 61 76 61 69 6c 61 62 6c 65 20 61 73 20 74 68   available as th
1e20: 65 20 52 4f 57 49 44 2c 20 4f 49 44 2c 20 6f 72  e ROWID, OID, or
1e30: 20 5f 52 4f 57 49 44 5f 20 63 6f 6c 75 6d 6e 2e   _ROWID_ column.
1e40: 29 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  )  The following
1e50: 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 72 65 74 75   routine.** retu
1e60: 72 6e 73 20 74 68 65 20 69 6e 74 65 67 65 72 20  rns the integer 
1e70: 6b 65 79 20 6f 66 20 74 68 65 20 6d 6f 73 74 20  key of the most 
1e80: 72 65 63 65 6e 74 20 69 6e 73 65 72 74 20 69 6e  recent insert in
1e90: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 2a   the database..*
1ea0: 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69  *.** This functi
1eb0: 6f 6e 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  on is similar to
1ec0: 20 74 68 65 20 6d 79 73 71 6c 5f 69 6e 73 65 72   the mysql_inser
1ed0: 74 5f 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 20  t_id() function 
1ee0: 66 72 6f 6d 20 4d 79 53 51 4c 2e 0a 2a 2f 0a 73  from MySQL..*/.s
1ef0: 71 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c 69  qlite_int64 sqli
1f00: 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
1f10: 72 6f 77 69 64 28 73 71 6c 69 74 65 33 2a 29 3b  rowid(sqlite3*);
1f20: 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e  ../*.** This fun
1f30: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68  ction returns th
1f40: 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61  e number of data
1f50: 62 61 73 65 20 72 6f 77 73 20 74 68 61 74 20 77  base rows that w
1f60: 65 72 65 20 63 68 61 6e 67 65 64 0a 2a 2a 20 28  ere changed.** (
1f70: 6f 72 20 69 6e 73 65 72 74 65 64 20 6f 72 20 64  or inserted or d
1f80: 65 6c 65 74 65 64 29 20 62 79 20 74 68 65 20 6d  eleted) by the m
1f90: 6f 73 74 20 72 65 63 65 6e 74 20 63 61 6c 6c 65  ost recent calle
1fa0: 64 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  d sqlite3_exec()
1fb0: 2e 0a 2a 2a 0a 2a 2a 20 41 6c 6c 20 63 68 61 6e  ..**.** All chan
1fc0: 67 65 73 20 61 72 65 20 63 6f 75 6e 74 65 64 2c  ges are counted,
1fd0: 20 65 76 65 6e 20 69 66 20 74 68 65 79 20 77 65   even if they we
1fe0: 72 65 20 6c 61 74 65 72 20 75 6e 64 6f 6e 65 20  re later undone 
1ff0: 62 79 20 61 0a 2a 2a 20 52 4f 4c 4c 42 41 43 4b  by a.** ROLLBACK
2000: 20 6f 72 20 41 42 4f 52 54 2e 20 20 45 78 63 65   or ABORT.  Exce
2010: 70 74 2c 20 63 68 61 6e 67 65 73 20 61 73 73 6f  pt, changes asso
2020: 63 69 61 74 65 64 20 77 69 74 68 20 63 72 65 61  ciated with crea
2030: 74 69 6e 67 20 61 6e 64 0a 2a 2a 20 64 72 6f 70  ting and.** drop
2040: 70 69 6e 67 20 74 61 62 6c 65 73 20 61 72 65 20  ping tables are 
2050: 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a  not counted..**.
2060: 2a 2a 20 49 66 20 61 20 63 61 6c 6c 62 61 63 6b  ** If a callback
2070: 20 69 6e 76 6f 6b 65 73 20 73 71 6c 69 74 65 33   invokes sqlite3
2080: 5f 65 78 65 63 28 29 20 72 65 63 75 72 73 69 76  _exec() recursiv
2090: 65 6c 79 2c 20 74 68 65 6e 20 74 68 65 20 63 68  ely, then the ch
20a0: 61 6e 67 65 73 0a 2a 2a 20 69 6e 20 74 68 65 20  anges.** in the 
20b0: 69 6e 6e 65 72 2c 20 72 65 63 75 72 73 69 76 65  inner, recursive
20c0: 20 63 61 6c 6c 20 61 72 65 20 63 6f 75 6e 74 65   call are counte
20d0: 64 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20  d together with 
20e0: 74 68 65 20 63 68 61 6e 67 65 73 0a 2a 2a 20 69  the changes.** i
20f0: 6e 20 74 68 65 20 6f 75 74 65 72 20 63 61 6c 6c  n the outer call
2100: 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 69  ..**.** SQLite i
2110: 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 63 6f  mplements the co
2120: 6d 6d 61 6e 64 20 22 44 45 4c 45 54 45 20 46 52  mmand "DELETE FR
2130: 4f 4d 20 74 61 62 6c 65 22 20 77 69 74 68 6f 75  OM table" withou
2140: 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  t a WHERE clause
2150: 0a 2a 2a 20 62 79 20 64 72 6f 70 70 69 6e 67 20  .** by dropping 
2160: 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 74  and recreating t
2170: 68 65 20 74 61 62 6c 65 2e 20 20 28 54 68 69 73  he table.  (This
2180: 20 69 73 20 6d 75 63 68 20 66 61 73 74 65 72 20   is much faster 
2190: 74 68 61 6e 20 67 6f 69 6e 67 0a 2a 2a 20 74 68  than going.** th
21a0: 72 6f 75 67 68 20 61 6e 64 20 64 65 6c 65 74 69  rough and deleti
21b0: 6e 67 20 69 6e 64 69 76 69 64 75 61 6c 20 65 6c  ng individual el
21c0: 65 6d 65 6e 74 73 20 66 6f 72 6d 20 74 68 65 20  ements form the 
21d0: 74 61 62 6c 65 2e 29 20 20 42 65 63 61 75 73 65  table.)  Because
21e0: 20 6f 66 0a 2a 2a 20 74 68 69 73 20 6f 70 74 69   of.** this opti
21f0: 6d 69 7a 61 74 69 6f 6e 2c 20 74 68 65 20 63 68  mization, the ch
2200: 61 6e 67 65 20 63 6f 75 6e 74 20 66 6f 72 20 22  ange count for "
2210: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 61 62 6c  DELETE FROM tabl
2220: 65 22 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 7a 65  e" will be.** ze
2230: 72 6f 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66  ro regardless of
2240: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65   the number of e
2250: 6c 65 6d 65 6e 74 73 20 74 68 61 74 20 77 65 72  lements that wer
2260: 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 69 6e 20  e originally in 
2270: 74 68 65 0a 2a 2a 20 74 61 62 6c 65 2e 20 54 6f  the.** table. To
2280: 20 67 65 74 20 61 6e 20 61 63 63 75 72 61 74 65   get an accurate
2290: 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75   count of the nu
22a0: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 64 65 6c  mber of rows del
22b0: 65 74 65 64 2c 20 75 73 65 0a 2a 2a 20 22 44 45  eted, use.** "DE
22c0: 4c 45 54 45 20 46 52 4f 4d 20 74 61 62 6c 65 20  LETE FROM table 
22d0: 57 48 45 52 45 20 31 22 20 69 6e 73 74 65 61 64  WHERE 1" instead
22e0: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
22f0: 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33  _changes(sqlite3
2300: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20  *);../*.** This 
2310: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
2320: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64   the number of d
2330: 61 74 61 62 61 73 65 20 72 6f 77 73 20 74 68 61  atabase rows tha
2340: 74 20 68 61 76 65 20 62 65 65 6e 0a 2a 2a 20 6d  t have been.** m
2350: 6f 64 69 66 69 65 64 20 62 79 20 49 4e 53 45 52  odified by INSER
2360: 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c  T, UPDATE or DEL
2370: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20 73  ETE statements s
2380: 69 6e 63 65 20 74 68 65 20 64 61 74 61 62 61 73  ince the databas
2390: 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 77 61 73 20  e handle.** was 
23a0: 6f 70 65 6e 65 64 2e 20 54 68 69 73 20 69 6e 63  opened. This inc
23b0: 6c 75 64 65 73 20 55 50 44 41 54 45 2c 20 49 4e  ludes UPDATE, IN
23c0: 53 45 52 54 20 61 6e 64 20 44 45 4c 45 54 45 20  SERT and DELETE 
23d0: 73 74 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75  statements execu
23e0: 74 65 64 0a 2a 2a 20 61 73 20 70 61 72 74 20 6f  ted.** as part o
23f0: 66 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  f trigger progra
2400: 6d 73 2e 20 41 6c 6c 20 63 68 61 6e 67 65 73 20  ms. All changes 
2410: 61 72 65 20 63 6f 75 6e 74 65 64 20 61 73 20 73  are counted as s
2420: 6f 6f 6e 20 61 73 20 74 68 65 0a 2a 2a 20 73 74  oon as the.** st
2430: 61 74 65 6d 65 6e 74 20 74 68 61 74 20 6d 61 6b  atement that mak
2440: 65 73 20 74 68 65 6d 20 69 73 20 63 6f 6d 70 6c  es them is compl
2450: 65 74 65 64 20 28 77 68 65 6e 20 74 68 65 20 73  eted (when the s
2460: 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20  tatement handle 
2470: 69 73 0a 2a 2a 20 70 61 73 73 65 64 20 74 6f 20  is.** passed to 
2480: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20  sqlite3_reset() 
2490: 6f 72 20 73 71 6c 69 74 65 5f 66 69 6e 61 6c 69  or sqlite_finali
24a0: 73 65 28 29 29 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c  se())..**.** SQL
24b0: 69 74 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ite implements t
24c0: 68 65 20 63 6f 6d 6d 61 6e 64 20 22 44 45 4c 45  he command "DELE
24d0: 54 45 20 46 52 4f 4d 20 74 61 62 6c 65 22 20 77  TE FROM table" w
24e0: 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63  ithout a WHERE c
24f0: 6c 61 75 73 65 0a 2a 2a 20 62 79 20 64 72 6f 70  lause.** by drop
2500: 70 69 6e 67 20 61 6e 64 20 72 65 63 72 65 61 74  ping and recreat
2510: 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 20 20  ing the table.  
2520: 28 54 68 69 73 20 69 73 20 6d 75 63 68 20 66 61  (This is much fa
2530: 73 74 65 72 20 74 68 61 6e 20 67 6f 69 6e 67 0a  ster than going.
2540: 2a 2a 20 74 68 72 6f 75 67 68 20 61 6e 64 20 64  ** through and d
2550: 65 6c 65 74 69 6e 67 20 69 6e 64 69 76 69 64 75  eleting individu
2560: 61 6c 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72 6d  al elements form
2570: 20 74 68 65 20 74 61 62 6c 65 2e 29 20 20 42 65   the table.)  Be
2580: 63 61 75 73 65 20 6f 66 0a 2a 2a 20 74 68 69 73  cause of.** this
2590: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2c 20 74   optimization, t
25a0: 68 65 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 20  he change count 
25b0: 66 6f 72 20 22 44 45 4c 45 54 45 20 46 52 4f 4d  for "DELETE FROM
25c0: 20 74 61 62 6c 65 22 20 77 69 6c 6c 20 62 65 0a   table" will be.
25d0: 2a 2a 20 7a 65 72 6f 20 72 65 67 61 72 64 6c 65  ** zero regardle
25e0: 73 73 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72  ss of the number
25f0: 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 74 68 61   of elements tha
2600: 74 20 77 65 72 65 20 6f 72 69 67 69 6e 61 6c 6c  t were originall
2610: 79 20 69 6e 20 74 68 65 0a 2a 2a 20 74 61 62 6c  y in the.** tabl
2620: 65 2e 20 54 6f 20 67 65 74 20 61 6e 20 61 63 63  e. To get an acc
2630: 75 72 61 74 65 20 63 6f 75 6e 74 20 6f 66 20 74  urate count of t
2640: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
2650: 73 20 64 65 6c 65 74 65 64 2c 20 75 73 65 0a 2a  s deleted, use.*
2660: 2a 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20 74  * "DELETE FROM t
2670: 61 62 6c 65 20 57 48 45 52 45 20 31 22 20 69 6e  able WHERE 1" in
2680: 73 74 65 61 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71  stead..*/.int sq
2690: 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
26a0: 67 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a  ges(sqlite3*);..
26b0: 2f 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  /* This function
26c0: 20 63 61 75 73 65 73 20 61 6e 79 20 70 65 6e 64   causes any pend
26d0: 69 6e 67 20 64 61 74 61 62 61 73 65 20 6f 70 65  ing database ope
26e0: 72 61 74 69 6f 6e 20 74 6f 20 61 62 6f 72 74 20  ration to abort 
26f0: 61 6e 64 0a 2a 2a 20 72 65 74 75 72 6e 20 61 74  and.** return at
2700: 20 69 74 73 20 65 61 72 6c 69 65 73 74 20 6f 70   its earliest op
2710: 70 6f 72 74 75 6e 69 74 79 2e 20 20 54 68 69 73  portunity.  This
2720: 20 72 6f 75 74 69 6e 65 20 69 73 20 74 79 70 69   routine is typi
2730: 63 61 6c 6c 79 0a 2a 2a 20 63 61 6c 6c 65 64 20  cally.** called 
2740: 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61  in response to a
2750: 20 75 73 65 72 20 61 63 74 69 6f 6e 20 73 75 63   user action suc
2760: 68 20 61 73 20 70 72 65 73 73 69 6e 67 20 22 43  h as pressing "C
2770: 61 6e 63 65 6c 22 0a 2a 2a 20 6f 72 20 43 74 72  ancel".** or Ctr
2780: 6c 2d 43 20 77 68 65 72 65 20 74 68 65 20 75 73  l-C where the us
2790: 65 72 20 77 61 6e 74 73 20 61 20 6c 6f 6e 67 20  er wants a long 
27a0: 71 75 65 72 79 20 6f 70 65 72 61 74 69 6f 6e 20  query operation 
27b0: 74 6f 20 68 61 6c 74 0a 2a 2a 20 69 6d 6d 65 64  to halt.** immed
27c0: 69 61 74 65 6c 79 2e 0a 2a 2f 0a 76 6f 69 64 20  iately..*/.void 
27d0: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
27e0: 74 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 0a 2f  t(sqlite3*);.../
27f0: 2a 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e  * These function
2800: 73 20 72 65 74 75 72 6e 20 74 72 75 65 20 69 66  s return true if
2810: 20 74 68 65 20 67 69 76 65 6e 20 69 6e 70 75 74   the given input
2820: 20 73 74 72 69 6e 67 20 63 6f 6d 70 72 69 73 65   string comprise
2830: 73 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  s.** one or more
2840: 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c 20 73 74   complete SQL st
2850: 61 74 65 6d 65 6e 74 73 2e 20 46 6f 72 20 74 68  atements. For th
2860: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65  e sqlite3_comple
2870: 74 65 28 29 20 63 61 6c 6c 2c 0a 2a 2a 20 74 68  te() call,.** th
2880: 65 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  e parameter must
2890: 20 62 65 20 61 20 6e 75 6c 2d 74 65 72 6d 69 6e   be a nul-termin
28a0: 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
28b0: 67 2e 20 46 6f 72 0a 2a 2a 20 73 71 6c 69 74 65  g. For.** sqlite
28c0: 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 2c 20  3_complete16(), 
28d0: 61 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 65 64  a nul-terminated
28e0: 20 6d 61 63 68 69 6e 65 20 62 79 74 65 20 6f 72   machine byte or
28f0: 64 65 72 20 55 54 46 2d 31 36 20 73 74 72 69 6e  der UTF-16 strin
2900: 67 0a 2a 2a 20 69 73 20 72 65 71 75 69 72 65 64  g.** is required
2910: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 6c 67 6f  ..**.** The algo
2920: 72 69 74 68 6d 20 69 73 20 73 69 6d 70 6c 65 2e  rithm is simple.
2930: 20 20 49 66 20 74 68 65 20 6c 61 73 74 20 74 6f    If the last to
2940: 6b 65 6e 20 6f 74 68 65 72 20 74 68 61 6e 20 73  ken other than s
2950: 70 61 63 65 73 0a 2a 2a 20 61 6e 64 20 63 6f 6d  paces.** and com
2960: 6d 65 6e 74 73 20 69 73 20 61 20 73 65 6d 69 63  ments is a semic
2970: 6f 6c 6f 6e 2c 20 74 68 65 6e 20 72 65 74 75 72  olon, then retur
2980: 6e 20 74 72 75 65 2e 20 20 6f 74 68 65 72 77 69  n true.  otherwi
2990: 73 65 20 72 65 74 75 72 6e 0a 2a 2a 20 66 61 6c  se return.** fal
29a0: 73 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  se..*/.int sqlit
29b0: 65 33 5f 63 6f 6d 70 6c 65 74 65 28 63 6f 6e 73  e3_complete(cons
29c0: 74 20 63 68 61 72 20 2a 73 71 6c 29 3b 0a 69 6e  t char *sql);.in
29d0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65  t sqlite3_comple
29e0: 74 65 31 36 28 63 6f 6e 73 74 20 76 6f 69 64 20  te16(const void 
29f0: 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  *sql);../*.** Th
2a00: 69 73 20 72 6f 75 74 69 6e 65 20 69 64 65 6e 74  is routine ident
2a10: 69 66 69 65 73 20 61 20 63 61 6c 6c 62 61 63 6b  ifies a callback
2a20: 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69   function that i
2a30: 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 77 68 65  s invoked.** whe
2a40: 6e 65 76 65 72 20 61 6e 20 61 74 74 65 6d 70 74  never an attempt
2a50: 20 69 73 20 6d 61 64 65 20 74 6f 20 6f 70 65 6e   is made to open
2a60: 20 61 20 64 61 74 61 62 61 73 65 20 74 61 62 6c   a database tabl
2a70: 65 20 74 68 61 74 20 69 73 0a 2a 2a 20 63 75 72  e that is.** cur
2a80: 72 65 6e 74 6c 79 20 6c 6f 63 6b 65 64 20 62 79  rently locked by
2a90: 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 73   another process
2aa0: 20 6f 72 20 74 68 72 65 61 64 2e 20 20 49 66 20   or thread.  If 
2ab0: 74 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63  the busy callbac
2ac0: 6b 0a 2a 2a 20 69 73 20 4e 55 4c 4c 2c 20 74 68  k.** is NULL, th
2ad0: 65 6e 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  en sqlite3_exec(
2ae0: 29 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45  ) returns SQLITE
2af0: 5f 42 55 53 59 20 69 6d 6d 65 64 69 61 74 65 6c  _BUSY immediatel
2b00: 79 20 69 66 0a 2a 2a 20 69 74 20 66 69 6e 64 73  y if.** it finds
2b10: 20 61 20 6c 6f 63 6b 65 64 20 74 61 62 6c 65 2e   a locked table.
2b20: 20 20 49 66 20 74 68 65 20 62 75 73 79 20 63 61    If the busy ca
2b30: 6c 6c 62 61 63 6b 20 69 73 20 6e 6f 74 20 4e 55  llback is not NU
2b40: 4c 4c 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69  LL, then.** sqli
2b50: 74 65 33 5f 65 78 65 63 28 29 20 69 6e 76 6f 6b  te3_exec() invok
2b60: 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  es the callback 
2b70: 77 69 74 68 20 74 68 72 65 65 20 61 72 67 75 6d  with three argum
2b80: 65 6e 74 73 2e 20 20 54 68 65 0a 2a 2a 20 73 65  ents.  The.** se
2b90: 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73  cond argument is
2ba0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2bb0: 20 6c 6f 63 6b 65 64 20 74 61 62 6c 65 20 61 6e   locked table an
2bc0: 64 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 61  d the third.** a
2bd0: 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 6e  rgument is the n
2be0: 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 74  umber of times t
2bf0: 68 65 20 74 61 62 6c 65 20 68 61 73 20 62 65 65  he table has bee
2c00: 6e 20 62 75 73 79 2e 20 20 49 66 20 74 68 65 0a  n busy.  If the.
2c10: 2a 2a 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  ** busy callback
2c20: 20 72 65 74 75 72 6e 73 20 30 2c 20 74 68 65 6e   returns 0, then
2c30: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
2c40: 69 6d 6d 65 64 69 61 74 65 6c 79 20 72 65 74 75  immediately retu
2c50: 72 6e 73 0a 2a 2a 20 53 51 4c 49 54 45 5f 42 55  rns.** SQLITE_BU
2c60: 53 59 2e 20 20 49 66 20 74 68 65 20 63 61 6c 6c  SY.  If the call
2c70: 62 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e  back returns non
2c80: 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 73 71 6c 69  -zero, then sqli
2c90: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 74 72  te3_exec().** tr
2ca0: 69 65 73 20 74 6f 20 6f 70 65 6e 20 74 68 65 20  ies to open the 
2cb0: 74 61 62 6c 65 20 61 67 61 69 6e 20 61 6e 64 20  table again and 
2cc0: 74 68 65 20 63 79 63 6c 65 20 72 65 70 65 61 74  the cycle repeat
2cd0: 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 64 65 66  s..**.** The def
2ce0: 61 75 6c 74 20 62 75 73 79 20 63 61 6c 6c 62 61  ault busy callba
2cf0: 63 6b 20 69 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a  ck is NULL..**.*
2d00: 2a 20 53 71 6c 69 74 65 20 69 73 20 72 65 2d 65  * Sqlite is re-e
2d10: 6e 74 72 61 6e 74 2c 20 73 6f 20 74 68 65 20 62  ntrant, so the b
2d20: 75 73 79 20 68 61 6e 64 6c 65 72 20 6d 61 79 20  usy handler may 
2d30: 73 74 61 72 74 20 61 20 6e 65 77 20 71 75 65 72  start a new quer
2d40: 79 2e 20 0a 2a 2a 20 28 49 74 20 69 73 20 6e 6f  y. .** (It is no
2d50: 74 20 63 6c 65 61 72 20 77 68 79 20 61 6e 79 6f  t clear why anyo
2d60: 6e 65 20 77 6f 75 6c 64 20 65 76 65 72 79 20 77  ne would every w
2d70: 61 6e 74 20 74 6f 20 64 6f 20 74 68 69 73 2c 20  ant to do this, 
2d80: 62 75 74 20 69 74 0a 2a 2a 20 69 73 20 61 6c 6c  but it.** is all
2d90: 6f 77 65 64 2c 20 69 6e 20 74 68 65 6f 72 79 2e  owed, in theory.
2da0: 29 20 20 42 75 74 20 74 68 65 20 62 75 73 79 20  )  But the busy 
2db0: 68 61 6e 64 6c 65 72 20 6d 61 79 20 6e 6f 74 20  handler may not 
2dc0: 63 6c 6f 73 65 20 74 68 65 0a 2a 2a 20 64 61 74  close the.** dat
2dd0: 61 62 61 73 65 2e 20 20 43 6c 6f 73 69 6e 67 20  abase.  Closing 
2de0: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 72 6f  the database fro
2df0: 6d 20 61 20 62 75 73 79 20 68 61 6e 64 6c 65 72  m a busy handler
2e00: 20 77 69 6c 6c 20 64 65 6c 65 74 65 20 0a 2a 2a   will delete .**
2e10: 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 73   data structures
2e20: 20 6f 75 74 20 66 72 6f 6d 20 75 6e 64 65 72 20   out from under 
2e30: 74 68 65 20 65 78 65 63 75 74 69 6e 67 20 71 75  the executing qu
2e40: 65 72 79 20 61 6e 64 20 77 69 6c 6c 20 0a 2a 2a  ery and will .**
2e50: 20 70 72 6f 62 61 62 6c 79 20 72 65 73 75 6c 74   probably result
2e60: 20 69 6e 20 61 20 63 6f 72 65 64 75 6d 70 2e 0a   in a coredump..
2e70: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  */.int sqlite3_b
2e80: 75 73 79 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69  usy_handler(sqli
2e90: 74 65 33 2a 2c 20 69 6e 74 28 2a 29 28 76 6f 69  te3*, int(*)(voi
2ea0: 64 2a 2c 69 6e 74 29 2c 20 76 6f 69 64 2a 29 3b  d*,int), void*);
2eb0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75  ../*.** This rou
2ec0: 74 69 6e 65 20 73 65 74 73 20 61 20 62 75 73 79  tine sets a busy
2ed0: 20 68 61 6e 64 6c 65 72 20 74 68 61 74 20 73 6c   handler that sl
2ee0: 65 65 70 73 20 66 6f 72 20 61 20 77 68 69 6c 65  eeps for a while
2ef0: 20 77 68 65 6e 20 61 0a 2a 2a 20 74 61 62 6c 65   when a.** table
2f00: 20 69 73 20 6c 6f 63 6b 65 64 2e 20 20 54 68 65   is locked.  The
2f10: 20 68 61 6e 64 6c 65 72 20 77 69 6c 6c 20 73 6c   handler will sl
2f20: 65 65 70 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d  eep multiple tim
2f30: 65 73 20 75 6e 74 69 6c 20 0a 2a 2a 20 61 74 20  es until .** at 
2f40: 6c 65 61 73 74 20 22 6d 73 22 20 6d 69 6c 6c 65  least "ms" mille
2f50: 73 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70  seconds of sleep
2f60: 69 6e 67 20 68 61 76 65 20 62 65 65 6e 20 64 6f  ing have been do
2f70: 6e 65 2e 20 20 41 66 74 65 72 0a 2a 2a 20 22 6d  ne.  After.** "m
2f80: 73 22 20 6d 69 6c 6c 65 73 65 63 6f 6e 64 73 20  s" milleseconds 
2f90: 6f 66 20 73 6c 65 65 70 69 6e 67 2c 20 74 68 65  of sleeping, the
2fa0: 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 73   handler returns
2fb0: 20 30 20 77 68 69 63 68 0a 2a 2a 20 63 61 75 73   0 which.** caus
2fc0: 65 73 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  es sqlite3_exec(
2fd0: 29 20 74 6f 20 72 65 74 75 72 6e 20 53 51 4c 49  ) to return SQLI
2fe0: 54 45 5f 42 55 53 59 2e 0a 2a 2a 0a 2a 2a 20 43  TE_BUSY..**.** C
2ff0: 61 6c 6c 69 6e 67 20 74 68 69 73 20 72 6f 75 74  alling this rout
3000: 69 6e 65 20 77 69 74 68 20 61 6e 20 61 72 67 75  ine with an argu
3010: 6d 65 6e 74 20 6c 65 73 73 20 74 68 61 6e 20 6f  ment less than o
3020: 72 20 65 71 75 61 6c 20 74 6f 20 7a 65 72 6f 0a  r equal to zero.
3030: 2a 2a 20 74 75 72 6e 73 20 6f 66 66 20 61 6c 6c  ** turns off all
3040: 20 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2e 0a   busy handlers..
3050: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  */.int sqlite3_b
3060: 75 73 79 5f 74 69 6d 65 6f 75 74 28 73 71 6c 69  usy_timeout(sqli
3070: 74 65 33 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a  te3*, int ms);..
3080: 2f 2a 0a 2a 2a 20 54 68 69 73 20 6e 65 78 74 20  /*.** This next 
3090: 72 6f 75 74 69 6e 65 20 69 73 20 72 65 61 6c 6c  routine is reall
30a0: 79 20 6a 75 73 74 20 61 20 77 72 61 70 70 65 72  y just a wrapper
30b0: 20 61 72 6f 75 6e 64 20 73 71 6c 69 74 65 33 5f   around sqlite3_
30c0: 65 78 65 63 28 29 2e 0a 2a 2a 20 49 6e 73 74 65  exec()..** Inste
30d0: 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 61  ad of invoking a
30e0: 20 75 73 65 72 2d 73 75 70 70 6c 69 65 64 20 63   user-supplied c
30f0: 61 6c 6c 62 61 63 6b 20 66 6f 72 20 65 61 63 68  allback for each
3100: 20 72 6f 77 20 6f 66 20 74 68 65 0a 2a 2a 20 72   row of the.** r
3110: 65 73 75 6c 74 2c 20 74 68 69 73 20 72 6f 75 74  esult, this rout
3120: 69 6e 65 20 72 65 6d 65 6d 62 65 72 73 20 65 61  ine remembers ea
3130: 63 68 20 72 6f 77 20 6f 66 20 74 68 65 20 72 65  ch row of the re
3140: 73 75 6c 74 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a  sult in memory.*
3150: 2a 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  * obtained from 
3160: 6d 61 6c 6c 6f 63 28 29 2c 20 74 68 65 6e 20 72  malloc(), then r
3170: 65 74 75 72 6e 73 20 61 6c 6c 20 6f 66 20 74 68  eturns all of th
3180: 65 20 72 65 73 75 6c 74 20 61 66 74 65 72 20 74  e result after t
3190: 68 65 0a 2a 2a 20 71 75 65 72 79 20 68 61 73 20  he.** query has 
31a0: 66 69 6e 69 73 68 65 64 2e 20 0a 2a 2a 0a 2a 2a  finished. .**.**
31b0: 20 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c 20   As an example, 
31c0: 73 75 70 70 6f 73 65 20 74 68 65 20 71 75 65 72  suppose the quer
31d0: 79 20 72 65 73 75 6c 74 20 77 68 65 72 65 20 74  y result where t
31e0: 68 69 73 20 74 61 62 6c 65 3a 0a 2a 2a 0a 2a 2a  his table:.**.**
31f0: 20 20 20 20 20 20 20 20 4e 61 6d 65 20 20 20 20          Name    
3200: 20 20 20 20 7c 20 41 67 65 0a 2a 2a 20 20 20 20      | Age.**    
3210: 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d      ------------
3220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20  -----------.**  
3230: 20 20 20 20 20 20 41 6c 69 63 65 20 20 20 20 20        Alice     
3240: 20 20 7c 20 34 33 0a 2a 2a 20 20 20 20 20 20 20    | 43.**       
3250: 20 42 6f 62 20 20 20 20 20 20 20 20 20 7c 20 32   Bob         | 2
3260: 38 0a 2a 2a 20 20 20 20 20 20 20 20 43 69 6e 64  8.**        Cind
3270: 79 20 20 20 20 20 20 20 7c 20 32 31 0a 2a 2a 0a  y       | 21.**.
3280: 2a 2a 20 49 66 20 74 68 65 20 33 72 64 20 61 72  ** If the 3rd ar
3290: 67 75 6d 65 6e 74 20 77 65 72 65 20 26 61 7a 52  gument were &azR
32a0: 65 73 75 6c 74 20 74 68 65 6e 20 61 66 74 65 72  esult then after
32b0: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65   the function re
32c0: 74 75 72 6e 73 0a 2a 2a 20 61 7a 52 65 73 75 6c  turns.** azResul
32d0: 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74  t will contain t
32e0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 61 74  he following dat
32f0: 61 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20  a:.**.**        
3300: 61 7a 52 65 73 75 6c 74 5b 30 5d 20 3d 20 22 4e  azResult[0] = "N
3310: 61 6d 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  ame";.**        
3320: 61 7a 52 65 73 75 6c 74 5b 31 5d 20 3d 20 22 41  azResult[1] = "A
3330: 67 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61  ge";.**        a
3340: 7a 52 65 73 75 6c 74 5b 32 5d 20 3d 20 22 41 6c  zResult[2] = "Al
3350: 69 63 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  ice";.**        
3360: 61 7a 52 65 73 75 6c 74 5b 33 5d 20 3d 20 22 34  azResult[3] = "4
3370: 33 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  3";.**        az
3380: 52 65 73 75 6c 74 5b 34 5d 20 3d 20 22 42 6f 62  Result[4] = "Bob
3390: 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  ";.**        azR
33a0: 65 73 75 6c 74 5b 35 5d 20 3d 20 22 32 38 22 3b  esult[5] = "28";
33b0: 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
33c0: 75 6c 74 5b 36 5d 20 3d 20 22 43 69 6e 64 79 22  ult[6] = "Cindy"
33d0: 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
33e0: 73 75 6c 74 5b 37 5d 20 3d 20 22 32 31 22 3b 0a  sult[7] = "21";.
33f0: 2a 2a 0a 2a 2a 20 4e 6f 74 69 63 65 20 74 68 61  **.** Notice tha
3400: 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 65 78  t there is an ex
3410: 74 72 61 20 72 6f 77 20 6f 66 20 64 61 74 61 20  tra row of data 
3420: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63  containing the c
3430: 6f 6c 75 6d 6e 0a 2a 2a 20 68 65 61 64 65 72 73  olumn.** headers
3440: 2e 20 20 42 75 74 20 74 68 65 20 2a 6e 72 6f 77  .  But the *nrow
3450: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73   return value is
3460: 20 73 74 69 6c 6c 20 33 2e 20 20 2a 6e 63 6f 6c   still 3.  *ncol
3470: 75 6d 6e 20 69 73 0a 2a 2a 20 73 65 74 20 74 6f  umn is.** set to
3480: 20 32 2e 20 20 49 6e 20 67 65 6e 65 72 61 6c 2c   2.  In general,
3490: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76   the number of v
34a0: 61 6c 75 65 73 20 69 6e 73 65 72 74 65 64 20 69  alues inserted i
34b0: 6e 74 6f 20 61 7a 52 65 73 75 6c 74 0a 2a 2a 20  nto azResult.** 
34c0: 77 69 6c 6c 20 62 65 20 28 28 2a 6e 72 6f 77 29  will be ((*nrow)
34d0: 20 2b 20 31 29 2a 28 2a 6e 63 6f 6c 75 6d 6e 29   + 1)*(*ncolumn)
34e0: 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 74 68  ..**.** After th
34f0: 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74 69  e calling functi
3500: 6f 6e 20 68 61 73 20 66 69 6e 69 73 68 65 64 20  on has finished 
3510: 75 73 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74  using the result
3520: 2c 20 69 74 20 73 68 6f 75 6c 64 20 0a 2a 2a 20  , it should .** 
3530: 70 61 73 73 20 74 68 65 20 72 65 73 75 6c 74 20  pass the result 
3540: 64 61 74 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  data pointer to 
3550: 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
3560: 6c 65 28 29 20 69 6e 20 6f 72 64 65 72 20 74 6f  le() in order to
3570: 20 0a 2a 2a 20 72 65 6c 65 61 73 65 20 74 68 65   .** release the
3580: 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 61 73   memory that was
3590: 20 6d 61 6c 6c 6f 63 2d 65 64 2e 20 20 42 65 63   malloc-ed.  Bec
35a0: 61 75 73 65 20 6f 66 20 74 68 65 20 77 61 79 20  ause of the way 
35b0: 74 68 65 20 0a 2a 2a 20 6d 61 6c 6c 6f 63 28 29  the .** malloc()
35c0: 20 68 61 70 70 65 6e 73 2c 20 74 68 65 20 63 61   happens, the ca
35d0: 6c 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 6d  lling function m
35e0: 75 73 74 20 6e 6f 74 20 74 72 79 20 74 6f 20 63  ust not try to c
35f0: 61 6c 6c 20 0a 2a 2a 20 66 72 65 65 28 29 20 64  all .** free() d
3600: 69 72 65 63 74 6c 79 2e 20 20 4f 6e 6c 79 20 73  irectly.  Only s
3610: 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
3620: 65 28 29 20 69 73 20 61 62 6c 65 20 74 6f 20 72  e() is able to r
3630: 65 6c 65 61 73 65 20 0a 2a 2a 20 74 68 65 20 6d  elease .** the m
3640: 65 6d 6f 72 79 20 70 72 6f 70 65 72 6c 79 20 61  emory properly a
3650: 6e 64 20 73 61 66 65 6c 79 2e 0a 2a 2a 0a 2a 2a  nd safely..**.**
3660: 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   The return valu
3670: 65 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69 6e  e of this routin
3680: 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73  e is the same as
3690: 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 65 78   from sqlite3_ex
36a0: 65 63 28 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  ec()..*/.int sql
36b0: 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 0a  ite3_get_table(.
36c0: 20 20 73 71 6c 69 74 65 33 2a 2c 20 20 20 20 20    sqlite3*,     
36d0: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41 6e 20            /* An 
36e0: 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 2a 2f  open database */
36f0: 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  .  const char *s
3700: 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ql,       /* SQL
3710: 20 74 6f 20 62 65 20 65 78 65 63 75 74 65 64 20   to be executed 
3720: 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 2a 72 65 73  */.  char ***res
3730: 75 6c 74 70 2c 20 20 20 20 20 20 20 2f 2a 20 52  ultp,       /* R
3740: 65 73 75 6c 74 20 77 72 69 74 74 65 6e 20 74 6f  esult written to
3750: 20 61 20 63 68 61 72 20 2a 5b 5d 20 20 74 68 61   a char *[]  tha
3760: 74 20 74 68 69 73 20 70 6f 69 6e 74 73 20 74 6f  t this points to
3770: 20 2a 2f 0a 20 20 69 6e 74 20 2a 6e 72 6f 77 2c   */.  int *nrow,
3780: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
3790: 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74  Number of result
37a0: 20 72 6f 77 73 20 77 72 69 74 74 65 6e 20 68 65   rows written he
37b0: 72 65 20 2a 2f 0a 20 20 69 6e 74 20 2a 6e 63 6f  re */.  int *nco
37c0: 6c 75 6d 6e 2c 20 20 20 20 20 20 20 20 20 20 2f  lumn,          /
37d0: 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75  * Number of resu
37e0: 6c 74 20 63 6f 6c 75 6d 6e 73 20 77 72 69 74 74  lt columns writt
37f0: 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20 63 68 61  en here */.  cha
3800: 72 20 2a 2a 65 72 72 6d 73 67 20 20 20 20 20 20  r **errmsg      
3810: 20 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67      /* Error msg
3820: 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f   written here */
3830: 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 61 6c 6c 20  .);../*.** Call 
3840: 74 68 69 73 20 72 6f 75 74 69 6e 65 20 74 6f 20  this routine to 
3850: 66 72 65 65 20 74 68 65 20 6d 65 6d 6f 72 79 20  free the memory 
3860: 74 68 61 74 20 73 71 6c 69 74 65 33 5f 67 65 74  that sqlite3_get
3870: 5f 74 61 62 6c 65 28 29 20 61 6c 6c 6f 63 61 74  _table() allocat
3880: 65 64 2e 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69  ed..*/.void sqli
3890: 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 63  te3_free_table(c
38a0: 68 61 72 20 2a 2a 72 65 73 75 6c 74 29 3b 0a 0a  har **result);..
38b0: 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c 6f 77  /*.** The follow
38c0: 69 6e 67 20 72 6f 75 74 69 6e 65 73 20 61 72 65  ing routines are
38d0: 20 76 61 72 69 61 6e 74 73 20 6f 66 20 74 68 65   variants of the
38e0: 20 22 73 70 72 69 6e 74 66 28 29 22 20 66 72 6f   "sprintf()" fro
38f0: 6d 20 74 68 65 0a 2a 2a 20 73 74 61 6e 64 61 72  m the.** standar
3900: 64 20 43 20 6c 69 62 72 61 72 79 2e 20 20 54 68  d C library.  Th
3910: 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69  e resulting stri
3920: 6e 67 20 69 73 20 77 72 69 74 74 65 6e 20 69 6e  ng is written in
3930: 74 6f 20 6d 65 6d 6f 72 79 0a 2a 2a 20 6f 62 74  to memory.** obt
3940: 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c 6f  ained from mallo
3950: 63 28 29 20 73 6f 20 74 68 61 74 20 74 68 65 72  c() so that ther
3960: 65 20 69 73 20 6e 65 76 65 72 20 61 20 70 6f 73  e is never a pos
3970: 73 69 62 6c 69 74 79 20 6f 66 20 62 75 66 66 65  siblity of buffe
3980: 72 0a 2a 2a 20 6f 76 65 72 66 6c 6f 77 2e 20 20  r.** overflow.  
3990: 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61  These routines a
39a0: 6c 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 73 6f  lso implement so
39b0: 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 6f  me additional fo
39c0: 72 6d 61 74 74 69 6e 67 0a 2a 2a 20 6f 70 74 69  rmatting.** opti
39d0: 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ons that are use
39e0: 66 75 6c 20 66 6f 72 20 63 6f 6e 73 74 72 75 63  ful for construc
39f0: 74 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65  ting SQL stateme
3a00: 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  nts..**.** The s
3a10: 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64 20  trings returned 
3a20: 62 79 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65  by these routine
3a30: 73 20 73 68 6f 75 6c 64 20 62 65 20 66 72 65 65  s should be free
3a40: 64 20 62 79 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20  d by calling.** 
3a50: 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 2e 0a  sqlite3_free()..
3a60: 2a 2a 0a 2a 2a 20 41 6c 6c 20 6f 66 20 74 68 65  **.** All of the
3a70: 20 75 73 75 61 6c 20 70 72 69 6e 74 66 20 66 6f   usual printf fo
3a80: 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73  rmatting options
3a90: 20 61 70 70 6c 79 2e 20 20 49 6e 20 61 64 64 69   apply.  In addi
3aa0: 74 69 6f 6e 2c 20 74 68 65 72 65 0a 2a 2a 20 69  tion, there.** i
3ab0: 73 20 61 20 22 25 71 22 20 6f 70 74 69 6f 6e 2e  s a "%q" option.
3ac0: 20 20 25 71 20 77 6f 72 6b 73 20 6c 69 6b 65 20    %q works like 
3ad0: 25 73 20 69 6e 20 74 68 61 74 20 69 74 20 73 75  %s in that it su
3ae0: 62 73 74 69 74 75 74 65 73 20 61 20 6e 75 6c 6c  bstitutes a null
3af0: 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 73  -terminated.** s
3b00: 74 72 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 61  tring from the a
3b10: 72 67 75 6d 65 6e 74 20 6c 69 73 74 2e 20 20 42  rgument list.  B
3b20: 75 74 20 25 71 20 61 6c 73 6f 20 64 6f 75 62 6c  ut %q also doubl
3b30: 65 73 20 65 76 65 72 79 20 27 5c 27 27 20 63 68  es every '\'' ch
3b40: 61 72 61 63 74 65 72 2e 0a 2a 2a 20 25 71 20 69  aracter..** %q i
3b50: 73 20 64 65 73 69 67 6e 65 64 20 66 6f 72 20 75  s designed for u
3b60: 73 65 20 69 6e 73 69 64 65 20 61 20 73 74 72 69  se inside a stri
3b70: 6e 67 20 6c 69 74 65 72 61 6c 2e 20 20 42 79 20  ng literal.  By 
3b80: 64 6f 75 62 6c 69 6e 67 20 65 61 63 68 20 27 5c  doubling each '\
3b90: 27 27 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 20  ''.** character 
3ba0: 69 74 20 65 73 63 61 70 65 73 20 74 68 61 74 20  it escapes that 
3bb0: 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 61 6c  character and al
3bc0: 6c 6f 77 73 20 69 74 20 74 6f 20 62 65 20 69 6e  lows it to be in
3bd0: 73 65 72 74 65 64 20 69 6e 74 6f 0a 2a 2a 20 74  serted into.** t
3be0: 68 65 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a  he string..**.**
3bf0: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 73 6f   For example, so
3c00: 20 73 6f 6d 65 20 73 74 72 69 6e 67 20 76 61 72   some string var
3c10: 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73 20 74  iable contains t
3c20: 65 78 74 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a  ext as follows:.
3c30: 2a 2a 0a 2a 2a 20 20 20 20 20 20 63 68 61 72 20  **.**      char 
3c40: 2a 7a 54 65 78 74 20 3d 20 22 49 74 27 73 20 61  *zText = "It's a
3c50: 20 68 61 70 70 79 20 64 61 79 21 22 3b 0a 2a 2a   happy day!";.**
3c60: 0a 2a 2a 20 57 65 20 63 61 6e 20 75 73 65 20 74  .** We can use t
3c70: 68 69 73 20 74 65 78 74 20 69 6e 20 61 6e 20 53  his text in an S
3c80: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 73 20  QL statement as 
3c90: 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 20  follows:.**.**  
3ca0: 20 20 20 20 73 71 6c 69 74 65 33 5f 65 78 65 63      sqlite3_exec
3cb0: 5f 70 72 69 6e 74 66 28 64 62 2c 20 22 49 4e 53  _printf(db, "INS
3cc0: 45 52 54 20 49 4e 54 4f 20 74 61 62 6c 65 20 56  ERT INTO table V
3cd0: 41 4c 55 45 53 28 27 25 71 27 29 22 2c 0a 2a 2a  ALUES('%q')",.**
3ce0: 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61            callba
3cf0: 63 6b 31 2c 20 30 2c 20 30 2c 20 7a 54 65 78 74  ck1, 0, 0, zText
3d00: 29 3b 0a 2a 2a 0a 2a 2a 20 42 65 63 61 75 73 65  );.**.** Because
3d10: 20 74 68 65 20 25 71 20 66 6f 72 6d 61 74 20 73   the %q format s
3d20: 74 72 69 6e 67 20 69 73 20 75 73 65 64 2c 20 74  tring is used, t
3d30: 68 65 20 27 5c 27 27 20 63 68 61 72 61 63 74 65  he '\'' characte
3d40: 72 20 69 6e 20 7a 54 65 78 74 0a 2a 2a 20 69 73  r in zText.** is
3d50: 20 65 73 63 61 70 65 64 20 61 6e 64 20 74 68 65   escaped and the
3d60: 20 53 51 4c 20 67 65 6e 65 72 61 74 65 64 20 69   SQL generated i
3d70: 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a  s as follows:.**
3d80: 0a 2a 2a 20 20 20 20 20 20 49 4e 53 45 52 54 20  .**      INSERT 
3d90: 49 4e 54 4f 20 74 61 62 6c 65 31 20 56 41 4c 55  INTO table1 VALU
3da0: 45 53 28 27 49 74 27 27 73 20 61 20 68 61 70 70  ES('It''s a happ
3db0: 79 20 64 61 79 21 27 29 0a 2a 2a 0a 2a 2a 20 54  y day!').**.** T
3dc0: 68 69 73 20 69 73 20 63 6f 72 72 65 63 74 2e 20  his is correct. 
3dd0: 20 48 61 64 20 77 65 20 75 73 65 64 20 25 73 20   Had we used %s 
3de0: 69 6e 73 74 65 61 64 20 6f 66 20 25 71 2c 20 74  instead of %q, t
3df0: 68 65 20 67 65 6e 65 72 61 74 65 64 20 53 51 4c  he generated SQL
3e00: 0a 2a 2a 20 77 6f 75 6c 64 20 68 61 76 65 20 6c  .** would have l
3e10: 6f 6f 6b 65 64 20 6c 69 6b 65 20 74 68 69 73 3a  ooked like this:
3e20: 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 49 4e 53 45  .**.**      INSE
3e30: 52 54 20 49 4e 54 4f 20 74 61 62 6c 65 31 20 56  RT INTO table1 V
3e40: 41 4c 55 45 53 28 27 49 74 27 73 20 61 20 68 61  ALUES('It's a ha
3e50: 70 70 79 20 64 61 79 21 27 29 3b 0a 2a 2a 0a 2a  ppy day!');.**.*
3e60: 2a 20 54 68 69 73 20 73 65 63 6f 6e 64 20 65 78  * This second ex
3e70: 61 6d 70 6c 65 20 69 73 20 61 6e 20 53 51 4c 20  ample is an SQL 
3e80: 73 79 6e 74 61 78 20 65 72 72 6f 72 2e 20 20 41  syntax error.  A
3e90: 73 20 61 20 67 65 6e 65 72 61 6c 20 72 75 6c 65  s a general rule
3ea0: 20 79 6f 75 0a 2a 2a 20 73 68 6f 75 6c 64 20 61   you.** should a
3eb0: 6c 77 61 79 73 20 75 73 65 20 25 71 20 69 6e 73  lways use %q ins
3ec0: 74 65 61 64 20 6f 66 20 25 73 20 77 68 65 6e 20  tead of %s when 
3ed0: 69 6e 73 65 72 74 69 6e 67 20 74 65 78 74 20 69  inserting text i
3ee0: 6e 74 6f 20 61 20 73 74 72 69 6e 67 20 0a 2a 2a  nto a string .**
3ef0: 20 6c 69 74 65 72 61 6c 2e 0a 2a 2f 0a 63 68 61   literal..*/.cha
3f00: 72 20 2a 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  r *sqlite3_mprin
3f10: 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 2e  tf(const char*,.
3f20: 2e 2e 29 3b 0a 63 68 61 72 20 2a 73 71 6c 69 74  ..);.char *sqlit
3f30: 65 33 5f 76 6d 70 72 69 6e 74 66 28 63 6f 6e 73  e3_vmprintf(cons
3f40: 74 20 63 68 61 72 2a 2c 20 76 61 5f 6c 69 73 74  t char*, va_list
3f50: 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  );.void sqlite3_
3f60: 66 72 65 65 28 63 68 61 72 20 2a 7a 29 3b 0a 63  free(char *z);.c
3f70: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 6e 70  har *sqlite3_snp
3f80: 72 69 6e 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c  rintf(int,char*,
3f90: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 2e 2e 2e  const char*, ...
3fa0: 29 3b 0a 0a 23 69 66 6e 64 65 66 20 53 51 4c 49  );..#ifndef SQLI
3fb0: 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a  TE_OMIT_AUTHORIZ
3fc0: 41 54 49 4f 4e 0a 2f 2a 0a 2a 2a 20 54 68 69 73  ATION./*.** This
3fd0: 20 72 6f 75 74 69 6e 65 20 72 65 67 69 73 74 65   routine registe
3fe0: 72 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 77 69  rs a callback wi
3ff0: 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  th the SQLite li
4000: 62 72 61 72 79 2e 20 20 54 68 65 0a 2a 2a 20 63  brary.  The.** c
4010: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
4020: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
4030: 69 6d 65 2c 20 6e 6f 74 20 61 74 20 72 75 6e 2d  ime, not at run-
4040: 74 69 6d 65 29 20 66 6f 72 20 65 61 63 68 0a 2a  time) for each.*
4050: 2a 20 61 74 74 65 6d 70 74 20 74 6f 20 61 63 63  * attempt to acc
4060: 65 73 73 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20  ess a column of 
4070: 61 20 74 61 62 6c 65 20 69 6e 20 74 68 65 20 64  a table in the d
4080: 61 74 61 62 61 73 65 2e 20 20 54 68 65 20 63 61  atabase.  The ca
4090: 6c 6c 62 61 63 6b 0a 2a 2a 20 72 65 74 75 72 6e  llback.** return
40a0: 73 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61  s SQLITE_OK if a
40b0: 63 63 65 73 73 20 69 73 20 61 6c 6c 6f 77 65 64  ccess is allowed
40c0: 2c 20 53 51 4c 49 54 45 5f 44 45 4e 59 20 69 66  , SQLITE_DENY if
40d0: 20 74 68 65 20 65 6e 74 69 72 65 0a 2a 2a 20 53   the entire.** S
40e0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 73 68 6f  QL statement sho
40f0: 75 6c 64 20 62 65 20 61 62 6f 72 74 65 64 20 77  uld be aborted w
4100: 69 74 68 20 61 6e 20 65 72 72 6f 72 20 61 6e 64  ith an error and
4110: 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 0a 2a   SQLITE_IGNORE.*
4120: 2a 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  * if the column 
4130: 73 68 6f 75 6c 64 20 62 65 20 74 72 65 61 74 65  should be treate
4140: 64 20 61 73 20 61 20 4e 55 4c 4c 20 76 61 6c 75  d as a NULL valu
4150: 65 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  e..*/.int sqlite
4160: 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
4170: 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20  (.  sqlite3*,.  
4180: 69 6e 74 20 28 2a 78 41 75 74 68 29 28 76 6f 69  int (*xAuth)(voi
4190: 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68 61  d*,int,const cha
41a0: 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63  r*,const char*,c
41b0: 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74  onst char*,const
41c0: 20 63 68 61 72 2a 29 2c 0a 20 20 76 6f 69 64 20   char*),.  void 
41d0: 2a 70 55 73 65 72 44 61 74 61 0a 29 3b 0a 23 65  *pUserData.);.#e
41e0: 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  ndif../*.** The 
41f0: 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
4200: 20 74 6f 20 74 68 65 20 61 63 63 65 73 73 20 61   to the access a
4210: 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 66 75 6e  uthorization fun
4220: 63 74 69 6f 6e 20 61 62 6f 76 65 20 77 69 6c 6c  ction above will
4230: 0a 2a 2a 20 62 65 20 6f 6e 65 20 6f 66 20 74 68  .** be one of th
4240: 65 20 76 61 6c 75 65 73 20 62 65 6c 6f 77 2e 20  e values below. 
4250: 20 54 68 65 73 65 20 76 61 6c 75 65 73 20 73 69   These values si
4260: 67 6e 69 66 79 20 77 68 61 74 20 6b 69 6e 64 20  gnify what kind 
4270: 6f 66 20 6f 70 65 72 61 74 69 6f 6e 0a 2a 2a 20  of operation.** 
4280: 69 73 20 74 6f 20 62 65 20 61 75 74 68 6f 72 69  is to be authori
4290: 7a 65 64 2e 20 20 54 68 65 20 33 72 64 20 61 6e  zed.  The 3rd an
42a0: 64 20 34 74 68 20 70 61 72 61 6d 65 74 65 72 73  d 4th parameters
42b0: 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a   to the authoriz
42c0: 61 74 69 6f 6e 0a 2a 2a 20 66 75 6e 63 74 69 6f  ation.** functio
42d0: 6e 20 77 69 6c 6c 20 62 65 20 70 61 72 61 6d 65  n will be parame
42e0: 74 65 72 73 20 6f 72 20 4e 55 4c 4c 20 64 65 70  ters or NULL dep
42f0: 65 6e 64 69 6e 67 20 6f 6e 20 77 68 69 63 68 20  ending on which 
4300: 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  of the following
4310: 0a 2a 2a 20 63 6f 64 65 73 20 69 73 20 75 73 65  .** codes is use
4320: 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20  d as the second 
4330: 70 61 72 61 6d 65 74 65 72 2e 20 20 54 68 65 20  parameter.  The 
4340: 35 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  5th parameter is
4350: 20 74 68 65 20 6e 61 6d 65 0a 2a 2a 20 6f 66 20   the name.** of 
4360: 74 68 65 20 64 61 74 61 62 61 73 65 20 28 22 6d  the database ("m
4370: 61 69 6e 22 2c 20 22 74 65 6d 70 22 2c 20 65 74  ain", "temp", et
4380: 63 2e 29 20 69 66 20 61 70 70 6c 69 63 61 62 6c  c.) if applicabl
4390: 65 2e 20 20 54 68 65 20 36 74 68 20 70 61 72 61  e.  The 6th para
43a0: 6d 65 74 65 72 0a 2a 2a 20 69 73 20 74 68 65 20  meter.** is the 
43b0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 69 6e 6e 65  name of the inne
43c0: 72 2d 6d 6f 73 74 20 74 72 69 67 67 65 72 20 6f  r-most trigger o
43d0: 72 20 76 69 65 77 20 74 68 61 74 20 69 73 20 72  r view that is r
43e0: 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0a 2a  esponsible for.*
43f0: 2a 20 74 68 65 20 61 63 63 65 73 73 20 61 74 74  * the access att
4400: 65 6d 70 74 20 6f 72 20 4e 55 4c 4c 20 69 66 20  empt or NULL if 
4410: 74 68 69 73 20 61 63 63 65 73 73 20 61 74 74 65  this access atte
4420: 6d 70 74 20 69 73 20 64 69 72 65 63 74 6c 79 20  mpt is directly 
4430: 66 72 6f 6d 20 0a 2a 2a 20 69 6e 70 75 74 20 53  from .** input S
4440: 51 4c 20 63 6f 64 65 2e 0a 2a 2a 0a 2a 2a 20 20  QL code..**.**  
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4470: 20 20 20 20 20 20 20 20 41 72 67 2d 33 20 20 20          Arg-3   
4480: 20 20 20 20 20 20 20 20 41 72 67 2d 34 0a 2a 2f          Arg-4.*/
4490: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
44a0: 43 4f 50 59 20 20 20 20 20 20 20 20 20 20 20 20  COPY            
44b0: 20 20 20 20 20 20 30 20 20 20 2f 2a 20 54 61 62        0   /* Tab
44c0: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 46 69 6c  le Name      Fil
44d0: 65 20 4e 61 6d 65 20 20 20 20 20 20 20 2a 2f 0a  e Name       */.
44e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
44f0: 52 45 41 54 45 5f 49 4e 44 45 58 20 20 20 20 20  REATE_INDEX     
4500: 20 20 20 20 20 31 20 20 20 2f 2a 20 49 6e 64 65       1   /* Inde
4510: 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c  x Name      Tabl
4520: 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
4530: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
4540: 45 41 54 45 5f 54 41 42 4c 45 20 20 20 20 20 20  EATE_TABLE      
4550: 20 20 20 20 32 20 20 20 2f 2a 20 54 61 62 6c 65      2   /* Table
4560: 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
4570: 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
4580: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45  efine SQLITE_CRE
4590: 41 54 45 5f 54 45 4d 50 5f 49 4e 44 45 58 20 20  ATE_TEMP_INDEX  
45a0: 20 20 20 33 20 20 20 2f 2a 20 49 6e 64 65 78 20     3   /* Index 
45b0: 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20  Name      Table 
45c0: 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
45d0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
45e0: 54 45 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20 20  TE_TEMP_TABLE   
45f0: 20 20 34 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e    4   /* Table N
4600: 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  ame      NULL   
4610: 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
4620: 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
4630: 45 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20 20  E_TEMP_TRIGGER  
4640: 20 35 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20   5   /* Trigger 
4650: 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61  Name    Table Na
4660: 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
4670: 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
4680: 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20 20  _TEMP_VIEW      
4690: 36 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65  6   /* View Name
46a0: 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
46b0: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
46c0: 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
46d0: 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20 37  TRIGGER        7
46e0: 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61     /* Trigger Na
46f0: 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65  me    Table Name
4700: 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
4710: 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 56   SQLITE_CREATE_V
4720: 49 45 57 20 20 20 20 20 20 20 20 20 20 20 38 20  IEW           8 
4730: 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20    /* View Name  
4740: 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
4750: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
4760: 53 51 4c 49 54 45 5f 44 45 4c 45 54 45 20 20 20  SQLITE_DELETE   
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 39 20 20               9  
4780: 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
4790: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
47a0: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
47b0: 51 4c 49 54 45 5f 44 52 4f 50 5f 49 4e 44 45 58  QLITE_DROP_INDEX
47c0: 20 20 20 20 20 20 20 20 20 20 20 31 30 20 20 20             10   
47d0: 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20  /* Index Name   
47e0: 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
47f0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
4800: 4c 49 54 45 5f 44 52 4f 50 5f 54 41 42 4c 45 20  LITE_DROP_TABLE 
4810: 20 20 20 20 20 20 20 20 20 20 31 31 20 20 20 2f            11   /
4820: 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
4830: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
4840: 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
4850: 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 49 4e  ITE_DROP_TEMP_IN
4860: 44 45 58 20 20 20 20 20 20 31 32 20 20 20 2f 2a  DEX      12   /*
4870: 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20   Index Name     
4880: 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
4890: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
48a0: 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 41 42  TE_DROP_TEMP_TAB
48b0: 4c 45 20 20 20 20 20 20 31 33 20 20 20 2f 2a 20  LE      13   /* 
48c0: 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
48d0: 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
48e0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
48f0: 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 52 49 47  E_DROP_TEMP_TRIG
4900: 47 45 52 20 20 20 20 31 34 20 20 20 2f 2a 20 54  GER    14   /* T
4910: 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54  rigger Name    T
4920: 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
4930: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
4940: 5f 44 52 4f 50 5f 54 45 4d 50 5f 56 49 45 57 20  _DROP_TEMP_VIEW 
4950: 20 20 20 20 20 20 31 35 20 20 20 2f 2a 20 56 69        15   /* Vi
4960: 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55  ew Name       NU
4970: 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
4980: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
4990: 44 52 4f 50 5f 54 52 49 47 47 45 52 20 20 20 20  DROP_TRIGGER    
49a0: 20 20 20 20 20 31 36 20 20 20 2f 2a 20 54 72 69       16   /* Tri
49b0: 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62  gger Name    Tab
49c0: 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a  le Name      */.
49d0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
49e0: 52 4f 50 5f 56 49 45 57 20 20 20 20 20 20 20 20  ROP_VIEW        
49f0: 20 20 20 20 31 37 20 20 20 2f 2a 20 56 69 65 77      17   /* View
4a00: 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c   Name       NULL
4a10: 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
4a20: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
4a30: 53 45 52 54 20 20 20 20 20 20 20 20 20 20 20 20  SERT            
4a40: 20 20 20 31 38 20 20 20 2f 2a 20 54 61 62 6c 65     18   /* Table
4a50: 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
4a60: 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
4a70: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 41  efine SQLITE_PRA
4a80: 47 4d 41 20 20 20 20 20 20 20 20 20 20 20 20 20  GMA             
4a90: 20 20 31 39 20 20 20 2f 2a 20 50 72 61 67 6d 61    19   /* Pragma
4aa0: 20 4e 61 6d 65 20 20 20 20 20 31 73 74 20 61 72   Name     1st ar
4ab0: 67 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 23 64 65  g or NULL */.#de
4ac0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44  fine SQLITE_READ
4ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ae0: 20 32 30 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e   20   /* Table N
4af0: 61 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20  ame      Column 
4b00: 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66  Name     */.#def
4b10: 69 6e 65 20 53 51 4c 49 54 45 5f 53 45 4c 45 43  ine SQLITE_SELEC
4b20: 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  T               
4b30: 32 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20  21   /* NULL    
4b40: 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20          NULL    
4b50: 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
4b60: 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 4e 53 41  ne SQLITE_TRANSA
4b70: 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20 32  CTION          2
4b80: 32 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20  2   /* NULL     
4b90: 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
4ba0: 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
4bb0: 65 20 53 51 4c 49 54 45 5f 55 50 44 41 54 45 20  e SQLITE_UPDATE 
4bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 33                23
4bd0: 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
4be0: 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d        Column Nam
4bf0: 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65  e     */.#define
4c00: 20 53 51 4c 49 54 45 5f 41 54 54 41 43 48 20 20   SQLITE_ATTACH  
4c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 32 34 20               24 
4c20: 20 20 2f 2a 20 46 69 6c 65 6e 61 6d 65 20 20 20    /* Filename   
4c30: 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
4c40: 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
4c50: 53 51 4c 49 54 45 5f 44 45 54 41 43 48 20 20 20  SQLITE_DETACH   
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 32 35 20 20              25  
4c70: 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61 6d   /* Database Nam
4c80: 65 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20  e   NULL        
4c90: 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
4ca0: 51 4c 49 54 45 5f 41 4c 54 45 52 5f 54 41 42 4c  QLITE_ALTER_TABL
4cb0: 45 20 20 20 20 20 20 20 20 20 20 32 36 20 20 20  E          26   
4cc0: 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61 6d 65  /* Database Name
4cd0: 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
4ce0: 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
4cf0: 4c 49 54 45 5f 52 45 49 4e 44 45 58 20 20 20 20  LITE_REINDEX    
4d00: 20 20 20 20 20 20 20 20 20 20 32 37 20 20 20 2f            27   /
4d10: 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20  * Index Name    
4d20: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
4d30: 20 20 2a 2f 0a 0a 0a 2f 2a 0a 2a 2a 20 54 68 65    */.../*.** The
4d40: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66   return value of
4d50: 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69   the authorizati
4d60: 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75  on function shou
4d70: 6c 64 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 65  ld be one of the
4d80: 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f  .** following co
4d90: 6e 73 74 61 6e 74 73 3a 0a 2a 2f 0a 2f 2a 20 23  nstants:.*/./* #
4da0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b  define SQLITE_OK
4db0: 20 20 30 20 20 20 2f 2f 20 41 6c 6c 6f 77 20 61    0   // Allow a
4dc0: 63 63 65 73 73 20 28 54 68 69 73 20 69 73 20 61  ccess (This is a
4dd0: 63 74 75 61 6c 6c 79 20 64 65 66 69 6e 65 64 20  ctually defined 
4de0: 61 62 6f 76 65 29 20 2a 2f 0a 23 64 65 66 69 6e  above) */.#defin
4df0: 65 20 53 51 4c 49 54 45 5f 44 45 4e 59 20 20 20  e SQLITE_DENY   
4e00: 31 20 20 20 2f 2a 20 41 62 6f 72 74 20 74 68 65  1   /* Abort the
4e10: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77   SQL statement w
4e20: 69 74 68 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a  ith an error */.
4e30: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
4e40: 47 4e 4f 52 45 20 32 20 20 20 2f 2a 20 44 6f 6e  GNORE 2   /* Don
4e50: 27 74 20 61 6c 6c 6f 77 20 61 63 63 65 73 73 2c  't allow access,
4e60: 20 62 75 74 20 64 6f 6e 27 74 20 67 65 6e 65 72   but don't gener
4e70: 61 74 65 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a  ate an error */.
4e80: 0a 2f 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 20  ./*.** Register 
4e90: 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20  a function that 
4ea0: 69 73 20 63 61 6c 6c 65 64 20 61 74 20 65 76 65  is called at eve
4eb0: 72 79 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66  ry invocation of
4ec0: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a   sqlite3_exec().
4ed0: 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33 5f 70 72  ** or sqlite3_pr
4ee0: 65 70 61 72 65 28 29 2e 20 20 54 68 69 73 20 66  epare().  This f
4ef0: 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75  unction can be u
4f00: 73 65 64 20 28 66 6f 72 20 65 78 61 6d 70 6c 65  sed (for example
4f10: 29 20 74 6f 20 67 65 6e 65 72 61 74 65 0a 2a 2a  ) to generate.**
4f20: 20 61 20 6c 6f 67 20 66 69 6c 65 20 6f 66 20 61   a log file of a
4f30: 6c 6c 20 53 51 4c 20 65 78 65 63 75 74 65 64 20  ll SQL executed 
4f40: 61 67 61 69 6e 73 74 20 61 20 64 61 74 61 62 61  against a databa
4f50: 73 65 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  se..*/.void *sql
4f60: 69 74 65 33 5f 74 72 61 63 65 28 73 71 6c 69 74  ite3_trace(sqlit
4f70: 65 33 2a 2c 20 76 6f 69 64 28 2a 78 54 72 61 63  e3*, void(*xTrac
4f80: 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63  e)(void*,const c
4f90: 68 61 72 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a  har*), void*);..
4fa0: 2f 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69  /*.** This routi
4fb0: 6e 65 20 63 6f 6e 66 69 67 75 72 65 73 20 61 20  ne configures a 
4fc0: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
4fd0: 6e 20 2d 20 74 68 65 20 70 72 6f 67 72 65 73 73  n - the progress
4fe0: 20 63 61 6c 6c 62 61 63 6b 20 2d 20 74 68 61 74   callback - that
4ff0: 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65 64 20 70  .** is invoked p
5000: 65 72 69 6f 64 69 63 61 6c 6c 79 20 64 75 72 69  eriodically duri
5010: 6e 67 20 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20  ng long running 
5020: 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
5030: 5f 65 78 65 63 28 29 2c 0a 2a 2a 20 73 71 6c 69  _exec(),.** sqli
5040: 74 65 33 5f 73 74 65 70 28 29 20 61 6e 64 20 73  te3_step() and s
5050: 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
5060: 28 29 2e 20 41 6e 20 65 78 61 6d 70 6c 65 20 75  (). An example u
5070: 73 65 20 66 6f 72 20 74 68 69 73 20 41 50 49 20  se for this API 
5080: 69 73 20 74 6f 20 0a 2a 2a 20 6b 65 65 70 20 61  is to .** keep a
5090: 20 47 55 49 20 75 70 64 61 74 65 64 20 64 75 72   GUI updated dur
50a0: 69 6e 67 20 61 20 6c 61 72 67 65 20 71 75 65 72  ing a large quer
50b0: 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 6f  y..**.** The pro
50c0: 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 69  gress callback i
50d0: 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66  s invoked once f
50e0: 6f 72 20 65 76 65 72 79 20 4e 20 76 69 72 74 75  or every N virtu
50f0: 61 6c 20 6d 61 63 68 69 6e 65 20 6f 70 63 6f 64  al machine opcod
5100: 65 73 2c 0a 2a 2a 20 77 68 65 72 65 20 4e 20 69  es,.** where N i
5110: 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  s the second arg
5120: 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 66 75  ument to this fu
5130: 6e 63 74 69 6f 6e 2e 20 54 68 65 20 70 72 6f 67  nction. The prog
5140: 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  ress callback.**
5150: 20 69 74 73 65 6c 66 20 69 73 20 69 64 65 6e 74   itself is ident
5160: 69 66 69 65 64 20 62 79 20 74 68 65 20 74 68 69  ified by the thi
5170: 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  rd argument to t
5180: 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68  his function. Th
5190: 65 20 66 6f 75 72 74 68 0a 2a 2a 20 61 72 67 75  e fourth.** argu
51a0: 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 66 75 6e  ment to this fun
51b0: 63 74 69 6f 6e 20 69 73 20 61 20 76 6f 69 64 20  ction is a void 
51c0: 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20 74  pointer passed t
51d0: 6f 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 63  o the progress c
51e0: 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74  allback.** funct
51f0: 69 6f 6e 20 65 61 63 68 20 74 69 6d 65 20 69 74  ion each time it
5200: 20 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a   is invoked..**.
5210: 2a 2a 20 49 66 20 61 20 63 61 6c 6c 20 74 6f 20  ** If a call to 
5220: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 2c 20  sqlite3_exec(), 
5230: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 6f  sqlite3_step() o
5240: 72 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61  r sqlite3_get_ta
5250: 62 6c 65 28 29 20 72 65 73 75 6c 74 73 20 0a 2a  ble() results .*
5260: 2a 20 69 6e 20 6c 65 73 73 20 74 68 61 6e 20 4e  * in less than N
5270: 20 6f 70 63 6f 64 65 73 20 62 65 69 6e 67 20 65   opcodes being e
5280: 78 65 63 75 74 65 64 2c 20 74 68 65 6e 20 74 68  xecuted, then th
5290: 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62  e progress callb
52a0: 61 63 6b 20 69 73 20 6e 6f 74 0a 2a 2a 20 69 6e  ack is not.** in
52b0: 76 6f 6b 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 54 6f  voked..** .** To
52c0: 20 72 65 6d 6f 76 65 20 74 68 65 20 70 72 6f 67   remove the prog
52d0: 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 61 6c  ress callback al
52e0: 74 6f 67 65 74 68 65 72 2c 20 70 61 73 73 20 4e  together, pass N
52f0: 55 4c 4c 20 61 73 20 74 68 65 20 74 68 69 72 64  ULL as the third
5300: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  .** argument to 
5310: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a  this function..*
5320: 2a 0a 2a 2a 20 49 66 20 74 68 65 20 70 72 6f 67  *.** If the prog
5330: 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20 72 65  ress callback re
5340: 74 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 6f  turns a result o
5350: 74 68 65 72 20 74 68 61 6e 20 30 2c 20 74 68 65  ther than 0, the
5360: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 0a 2a  n the current .*
5370: 2a 20 71 75 65 72 79 20 69 73 20 69 6d 6d 65 64  * query is immed
5380: 69 61 74 65 6c 79 20 74 65 72 6d 69 6e 61 74 65  iately terminate
5390: 64 20 61 6e 64 20 61 6e 79 20 64 61 74 61 62 61  d and any databa
53a0: 73 65 20 63 68 61 6e 67 65 73 20 72 6f 6c 6c 65  se changes rolle
53b0: 64 20 62 61 63 6b 2e 20 49 66 20 74 68 65 0a 2a  d back. If the.*
53c0: 2a 20 71 75 65 72 79 20 77 61 73 20 70 61 72 74  * query was part
53d0: 20 6f 66 20 61 20 6c 61 72 67 65 72 20 74 72 61   of a larger tra
53e0: 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 6e 20 74  nsaction, then t
53f0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  he transaction i
5400: 73 20 6e 6f 74 20 72 6f 6c 6c 65 64 0a 2a 2a 20  s not rolled.** 
5410: 62 61 63 6b 20 61 6e 64 20 72 65 6d 61 69 6e 73  back and remains
5420: 20 61 63 74 69 76 65 2e 20 54 68 65 20 73 71 6c   active. The sql
5430: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
5440: 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f   returns SQLITE_
5450: 41 42 4f 52 54 2e 20 0a 2a 2a 0a 2a 2a 2a 2a 2a  ABORT. .**.*****
5460: 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20 45 58  ** THIS IS AN EX
5470: 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49 20 41  PERIMENTAL API A
5480: 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20 54 4f  ND IS SUBJECT TO
5490: 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a 0a 2a   CHANGE ******.*
54a0: 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70  /.void sqlite3_p
54b0: 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
54c0: 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 2c 20 69  sqlite3*, int, i
54d0: 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76 6f  nt(*)(void*), vo
54e0: 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 67  id*);../*.** Reg
54f0: 69 73 74 65 72 20 61 20 63 61 6c 6c 62 61 63 6b  ister a callback
5500: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
5510: 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76 65 72  invoked whenever
5520: 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69   a new transacti
5530: 6f 6e 0a 2a 2a 20 69 73 20 63 6f 6d 6d 69 74 74  on.** is committ
5540: 65 64 2e 20 20 54 68 65 20 70 41 72 67 20 61 72  ed.  The pArg ar
5550: 67 75 6d 65 6e 74 20 69 73 20 70 61 73 73 65 64  gument is passed
5560: 20 74 68 72 6f 75 67 68 20 74 6f 20 74 68 65 20   through to the 
5570: 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 63 61 6c  callback..** cal
5580: 6c 62 61 63 6b 2e 20 20 49 66 20 74 68 65 20 63  lback.  If the c
5590: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
55a0: 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   returns non-zer
55b0: 6f 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d  o, then the comm
55c0: 69 74 0a 2a 2a 20 69 73 20 63 6f 6e 76 65 72 74  it.** is convert
55d0: 65 64 20 69 6e 74 6f 20 61 20 72 6f 6c 6c 62 61  ed into a rollba
55e0: 63 6b 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 6f  ck..**.** If ano
55f0: 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 20 77 61  ther function wa
5600: 73 20 70 72 65 76 69 6f 75 73 6c 79 20 72 65 67  s previously reg
5610: 69 73 74 65 72 65 64 2c 20 69 74 73 20 70 41 72  istered, its pAr
5620: 67 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  g value is retur
5630: 6e 65 64 2e 0a 2a 2a 20 4f 74 68 65 72 77 69 73  ned..** Otherwis
5640: 65 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e  e NULL is return
5650: 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74  ed..**.** Regist
5660: 65 72 69 6e 67 20 61 20 4e 55 4c 4c 20 66 75 6e  ering a NULL fun
5670: 63 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ction disables t
5680: 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a  he callback..**.
5690: 2a 2a 2a 2a 2a 2a 2a 20 54 48 49 53 20 49 53 20  ******* THIS IS 
56a0: 41 4e 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20  AN EXPERIMENTAL 
56b0: 41 50 49 20 41 4e 44 20 49 53 20 53 55 42 4a 45  API AND IS SUBJE
56c0: 43 54 20 54 4f 20 43 48 41 4e 47 45 20 2a 2a 2a  CT TO CHANGE ***
56d0: 2a 2a 2a 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c  ***.*/.void *sql
56e0: 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b  ite3_commit_hook
56f0: 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 28 2a  (sqlite3*, int(*
5700: 29 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29  )(void*), void*)
5710: 3b 0a 0a 2f 2a 0a 2a 2a 20 4f 70 65 6e 20 74 68  ;../*.** Open th
5720: 65 20 73 71 6c 69 74 65 20 64 61 74 61 62 61 73  e sqlite databas
5730: 65 20 66 69 6c 65 20 22 66 69 6c 65 6e 61 6d 65  e file "filename
5740: 22 2e 20 20 54 68 65 20 22 66 69 6c 65 6e 61 6d  ".  The "filenam
5750: 65 22 20 69 73 20 55 54 46 2d 38 0a 2a 2a 20 65  e" is UTF-8.** e
5760: 6e 63 6f 64 65 64 20 66 6f 72 20 73 71 6c 69 74  ncoded for sqlit
5770: 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 55 54  e3_open() and UT
5780: 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 69 6e 20  F-16 encoded in 
5790: 74 68 65 20 6e 61 74 69 76 65 20 62 79 74 65 20  the native byte 
57a0: 6f 72 64 65 72 0a 2a 2a 20 66 6f 72 20 73 71 6c  order.** for sql
57b0: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 20 20  ite3_open16().  
57c0: 41 6e 20 73 71 6c 69 74 65 33 2a 20 68 61 6e 64  An sqlite3* hand
57d0: 6c 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  le is returned i
57e0: 6e 20 2a 70 70 44 62 2c 20 65 76 65 6e 0a 2a 2a  n *ppDb, even.**
57f0: 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63   if an error occ
5800: 75 72 73 2e 20 49 66 20 74 68 65 20 64 61 74 61  urs. If the data
5810: 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 28  base is opened (
5820: 6f 72 20 63 72 65 61 74 65 64 29 20 73 75 63 63  or created) succ
5830: 65 73 73 66 75 6c 6c 79 2c 0a 2a 2a 20 74 68 65  essfully,.** the
5840: 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 73 20 72  n SQLITE_OK is r
5850: 65 74 75 72 6e 65 64 2e 20 4f 74 68 65 72 77 69  eturned. Otherwi
5860: 73 65 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65  se an error code
5870: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68   is returned. Th
5880: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 72 72  e.** sqlite3_err
5890: 6d 73 67 28 29 20 6f 72 20 73 71 6c 69 74 65 33  msg() or sqlite3
58a0: 5f 65 72 72 6d 73 67 31 36 28 29 20 20 72 6f 75  _errmsg16()  rou
58b0: 74 69 6e 65 73 20 63 61 6e 20 62 65 20 75 73 65  tines can be use
58c0: 64 20 74 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61  d to obtain.** a
58d0: 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61  n English langua
58e0: 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f  ge description o
58f0: 66 20 74 68 65 20 65 72 72 6f 72 2e 0a 2a 2a 0a  f the error..**.
5900: 2a 2a 20 49 66 20 74 68 65 20 64 61 74 61 62 61  ** If the databa
5910: 73 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74  se file does not
5920: 20 65 78 69 73 74 2c 20 74 68 65 6e 20 61 20 6e   exist, then a n
5930: 65 77 20 64 61 74 61 62 61 73 65 20 69 73 20 63  ew database is c
5940: 72 65 61 74 65 64 2e 0a 2a 2a 20 54 68 65 20 65  reated..** The e
5950: 6e 63 6f 64 69 6e 67 20 66 6f 72 20 74 68 65 20  ncoding for the 
5960: 64 61 74 61 62 61 73 65 20 69 73 20 55 54 46 2d  database is UTF-
5970: 38 20 69 66 20 73 71 6c 69 74 65 33 5f 6f 70 65  8 if sqlite3_ope
5980: 6e 28 29 20 69 73 20 63 61 6c 6c 65 64 20 61 6e  n() is called an
5990: 64 0a 2a 2a 20 55 54 46 2d 31 36 20 69 66 20 73  d.** UTF-16 if s
59a0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 20 69 73  qlite3_open16 is
59b0: 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 57 68 65   used..**.** Whe
59c0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 65  ther or not an e
59d0: 72 72 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e  rror occurs when
59e0: 20 69 74 20 69 73 20 6f 70 65 6e 65 64 2c 20 72   it is opened, r
59f0: 65 73 6f 75 72 63 65 73 20 61 73 73 6f 63 69 61  esources associa
5a00: 74 65 64 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ted.** with the 
5a10: 73 71 6c 69 74 65 33 2a 20 68 61 6e 64 6c 65 20  sqlite3* handle 
5a20: 73 68 6f 75 6c 64 20 62 65 20 72 65 6c 65 61 73  should be releas
5a30: 65 64 20 62 79 20 70 61 73 73 69 6e 67 20 69 74  ed by passing it
5a40: 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63   to.** sqlite3_c
5a50: 6c 6f 73 65 28 29 20 77 68 65 6e 20 69 74 20 69  lose() when it i
5a60: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75  s no longer requ
5a70: 69 72 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  ired..*/.int sql
5a80: 69 74 65 33 5f 6f 70 65 6e 28 0a 20 20 63 6f 6e  ite3_open(.  con
5a90: 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d  st char *filenam
5aa0: 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  e,   /* Database
5ab0: 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38   filename (UTF-8
5ac0: 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a  ) */.  sqlite3 *
5ad0: 2a 70 70 44 62 20 20 20 20 20 20 20 20 20 20 2f  *ppDb          /
5ae0: 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62  * OUT: SQLite db
5af0: 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 69 6e   handle */.);.in
5b00: 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  t sqlite3_open16
5b10: 28 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  (.  const void *
5b20: 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44  filename,   /* D
5b30: 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65  atabase filename
5b40: 20 28 55 54 46 2d 31 36 29 20 2a 2f 0a 20 20 73   (UTF-16) */.  s
5b50: 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 20 20 20  qlite3 **ppDb   
5b60: 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53         /* OUT: S
5b70: 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c 65 20  QLite db handle 
5b80: 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  */.);../*.** Ret
5b90: 75 72 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  urn the error co
5ba0: 64 65 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20  de for the most 
5bb0: 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a  recent sqlite3_*
5bc0: 20 41 50 49 20 63 61 6c 6c 20 61 73 73 6f 63 69   API call associ
5bd0: 61 74 65 64 0a 2a 2a 20 77 69 74 68 20 73 71 6c  ated.** with sql
5be0: 69 74 65 33 20 68 61 6e 64 6c 65 20 27 64 62 27  ite3 handle 'db'
5bf0: 2e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 73 20 72  . SQLITE_OK is r
5c00: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 6d  eturned if the m
5c10: 6f 73 74 20 72 65 63 65 6e 74 20 0a 2a 2a 20 41  ost recent .** A
5c20: 50 49 20 63 61 6c 6c 20 77 61 73 20 73 75 63 63  PI call was succ
5c30: 65 73 73 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 43 61  essful..**.** Ca
5c40: 6c 6c 73 20 74 6f 20 6d 61 6e 79 20 73 71 6c 69  lls to many sqli
5c50: 74 65 33 5f 2a 20 66 75 6e 63 74 69 6f 6e 73 20  te3_* functions 
5c60: 73 65 74 20 74 68 65 20 65 72 72 6f 72 20 63 6f  set the error co
5c70: 64 65 20 61 6e 64 20 73 74 72 69 6e 67 20 72 65  de and string re
5c80: 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20 73 71 6c  turned.** by sql
5c90: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 2c 20  ite3_errcode(), 
5ca0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29  sqlite3_errmsg()
5cb0: 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65 72 72   and sqlite3_err
5cc0: 6d 73 67 31 36 28 29 0a 2a 2a 20 28 6f 76 65 72  msg16().** (over
5cd0: 77 72 69 74 69 6e 67 20 74 68 65 20 70 72 65 76  writing the prev
5ce0: 69 6f 75 73 20 76 61 6c 75 65 73 29 2e 20 4e 6f  ious values). No
5cf0: 74 65 20 74 68 61 74 20 63 61 6c 6c 73 20 74 6f  te that calls to
5d00: 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
5d10: 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65  (),.** sqlite3_e
5d20: 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71 6c 69  rrmsg() and sqli
5d30: 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 20 74  te3_errmsg16() t
5d40: 68 65 6d 73 65 6c 76 65 73 20 64 6f 20 6e 6f 74  hemselves do not
5d50: 20 61 66 66 65 63 74 20 74 68 65 0a 2a 2a 20 72   affect the.** r
5d60: 65 73 75 6c 74 73 20 6f 66 20 66 75 74 75 72 65  esults of future
5d70: 20 69 6e 76 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a   invocations..**
5d80: 0a 2a 2a 20 41 73 73 75 6d 69 6e 67 20 6e 6f 20  .** Assuming no 
5d90: 6f 74 68 65 72 20 69 6e 74 65 72 76 65 6e 69 6e  other intervenin
5da0: 67 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49 20  g sqlite3_* API 
5db0: 63 61 6c 6c 73 20 61 72 65 20 6d 61 64 65 2c 20  calls are made, 
5dc0: 74 68 65 20 65 72 72 6f 72 0a 2a 2a 20 63 6f 64  the error.** cod
5dd0: 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
5de0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  is function is a
5df0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
5e00: 68 65 20 73 61 6d 65 20 65 72 72 6f 72 20 61 73  he same error as
5e10: 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 73 20  .** the strings 
5e20: 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c   returned by sql
5e30: 69 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e  ite3_errmsg() an
5e40: 64 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  d sqlite3_errmsg
5e50: 31 36 28 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  16()..*/.int sql
5e60: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 73 71 6c  ite3_errcode(sql
5e70: 69 74 65 33 20 2a 64 62 29 3b 0a 0a 2f 2a 0a 2a  ite3 *db);../*.*
5e80: 2a 20 52 65 74 75 72 6e 20 61 20 70 6f 69 6e 74  * Return a point
5e90: 65 72 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e  er to a UTF-8 en
5ea0: 63 6f 64 65 64 20 73 74 72 69 6e 67 20 64 65 73  coded string des
5eb0: 63 72 69 62 69 6e 67 20 69 6e 20 65 6e 67 6c 69  cribing in engli
5ec0: 73 68 20 74 68 65 0a 2a 2a 20 65 72 72 6f 72 20  sh the.** error 
5ed0: 63 6f 6e 64 69 74 69 6f 6e 20 66 6f 72 20 74 68  condition for th
5ee0: 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 73 71  e most recent sq
5ef0: 6c 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c  lite3_* API call
5f00: 2e 20 54 68 65 20 72 65 74 75 72 6e 65 64 0a 2a  . The returned.*
5f10: 2a 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77 61  * string is alwa
5f20: 79 73 20 74 65 72 6d 69 6e 61 74 65 64 20 62 79  ys terminated by
5f30: 20 61 6e 20 30 78 30 30 20 62 79 74 65 2e 0a 2a   an 0x00 byte..*
5f40: 2a 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67 20  *.** The string 
5f50: 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 20 69  "not an error" i
5f60: 73 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20  s returned when 
5f70: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
5f80: 41 50 49 20 63 61 6c 6c 20 77 61 73 0a 2a 2a 20  API call was.** 
5f90: 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a 63  successful..*/.c
5fa0: 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
5fb0: 65 33 5f 65 72 72 6d 73 67 28 73 71 6c 69 74 65  e3_errmsg(sqlite
5fc0: 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  3*);../*.** Retu
5fd0: 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  rn a pointer to 
5fe0: 61 20 55 54 46 2d 31 36 20 6e 61 74 69 76 65 20  a UTF-16 native 
5ff0: 62 79 74 65 20 6f 72 64 65 72 20 65 6e 63 6f 64  byte order encod
6000: 65 64 20 73 74 72 69 6e 67 20 64 65 73 63 72 69  ed string descri
6010: 62 69 6e 67 0a 2a 2a 20 69 6e 20 65 6e 67 6c 69  bing.** in engli
6020: 73 68 20 74 68 65 20 65 72 72 6f 72 20 63 6f 6e  sh the error con
6030: 64 69 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6d  dition for the m
6040: 6f 73 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74  ost recent sqlit
6050: 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c 2e 0a 2a  e3_* API call..*
6060: 2a 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73  * The returned s
6070: 74 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 20  tring is always 
6080: 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 61 20  terminated by a 
6090: 70 61 69 72 20 6f 66 20 30 78 30 30 20 62 79 74  pair of 0x00 byt
60a0: 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 74  es..**.** The st
60b0: 72 69 6e 67 20 22 6e 6f 74 20 61 6e 20 65 72 72  ring "not an err
60c0: 6f 72 22 20 69 73 20 72 65 74 75 72 6e 65 64 20  or" is returned 
60d0: 77 68 65 6e 20 74 68 65 20 6d 6f 73 74 20 72 65  when the most re
60e0: 63 65 6e 74 20 41 50 49 20 63 61 6c 6c 20 77 61  cent API call wa
60f0: 73 0a 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 2e  s.** successful.
6100: 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a  .*/.const void *
6110: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
6120: 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a  (sqlite3*);../*.
6130: 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ** An instance o
6140: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
6150: 6f 70 61 71 75 65 20 73 74 72 75 63 74 75 72 65  opaque structure
6160: 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 70 72   is used to repr
6170: 65 73 65 6e 74 0a 2a 2a 20 61 20 63 6f 6d 70 69  esent.** a compi
6180: 6c 65 64 20 53 51 4c 20 73 74 61 74 6d 65 6e 74  led SQL statment
6190: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
61a0: 75 63 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  uct sqlite3_stmt
61b0: 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 3b 0a 0a   sqlite3_stmt;..
61c0: 2f 2a 0a 2a 2a 20 54 6f 20 65 78 65 63 75 74 65  /*.** To execute
61d0: 20 61 6e 20 53 51 4c 20 71 75 65 72 79 2c 20 69   an SQL query, i
61e0: 74 20 6d 75 73 74 20 66 69 72 73 74 20 62 65 20  t must first be 
61f0: 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 61 20  compiled into a 
6200: 62 79 74 65 2d 63 6f 64 65 0a 2a 2a 20 70 72 6f  byte-code.** pro
6210: 67 72 61 6d 20 75 73 69 6e 67 20 6f 6e 65 20 6f  gram using one o
6220: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
6230: 72 6f 75 74 69 6e 65 73 2e 20 54 68 65 20 6f 6e  routines. The on
6240: 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  ly difference be
6250: 74 77 65 65 6e 0a 2a 2a 20 74 68 65 6d 20 69 73  tween.** them is
6260: 20 74 68 61 74 20 74 68 65 20 73 65 63 6f 6e 64   that the second
6270: 20 61 72 67 75 6d 65 6e 74 2c 20 73 70 65 63 69   argument, speci
6280: 66 79 69 6e 67 20 74 68 65 20 53 51 4c 20 73 74  fying the SQL st
6290: 61 74 65 6d 65 6e 74 20 74 6f 0a 2a 2a 20 63 6f  atement to.** co
62a0: 6d 70 69 6c 65 2c 20 69 73 20 61 73 73 75 6d 65  mpile, is assume
62b0: 64 20 74 6f 20 62 65 20 65 6e 63 6f 64 65 64 20  d to be encoded 
62c0: 69 6e 20 55 54 46 2d 38 20 66 6f 72 20 74 68 65  in UTF-8 for the
62d0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
62e0: 28 29 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 61  ().** function a
62f0: 6e 64 20 55 54 46 2d 31 36 20 66 6f 72 20 73 71  nd UTF-16 for sq
6300: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
6310: 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72  )..**.** The fir
6320: 73 74 20 70 61 72 61 6d 65 74 65 72 20 22 64 62  st parameter "db
6330: 22 20 69 73 20 61 6e 20 53 51 4c 69 74 65 20 64  " is an SQLite d
6340: 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 2e 20  atabase handle. 
6350: 54 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 70 61  The second.** pa
6360: 72 61 6d 65 74 65 72 20 22 7a 53 71 6c 22 20 69  rameter "zSql" i
6370: 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  s the statement 
6380: 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 2c 20  to be compiled, 
6390: 65 6e 63 6f 64 65 64 20 61 73 20 65 69 74 68 65  encoded as eithe
63a0: 72 0a 2a 2a 20 55 54 46 2d 38 20 6f 72 20 55 54  r.** UTF-8 or UT
63b0: 46 2d 31 36 20 28 73 65 65 20 61 62 6f 76 65 29  F-16 (see above)
63c0: 2e 20 49 66 20 74 68 65 20 6e 65 78 74 20 70 61  . If the next pa
63d0: 72 61 6d 65 74 65 72 2c 20 22 6e 42 79 74 65 73  rameter, "nBytes
63e0: 22 2c 20 69 73 20 6c 65 73 73 0a 2a 2a 20 74 68  ", is less.** th
63f0: 61 6e 20 7a 65 72 6f 2c 20 74 68 65 6e 20 7a 53  an zero, then zS
6400: 71 6c 20 69 73 20 72 65 61 64 20 75 70 20 74 6f  ql is read up to
6410: 20 74 68 65 20 66 69 72 73 74 20 6e 75 6c 20 74   the first nul t
6420: 65 72 6d 69 6e 61 74 6f 72 2e 20 20 49 66 0a 2a  erminator.  If.*
6430: 2a 20 22 6e 42 79 74 65 73 22 20 69 73 20 6e 6f  * "nBytes" is no
6440: 74 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f  t less than zero
6450: 2c 20 74 68 65 6e 20 69 74 20 69 73 20 74 68 65  , then it is the
6460: 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 73   length of the s
6470: 74 72 69 6e 67 20 7a 53 71 6c 0a 2a 2a 20 69 6e  tring zSql.** in
6480: 20 62 79 74 65 73 20 28 6e 6f 74 20 63 68 61 72   bytes (not char
6490: 61 63 74 65 72 73 29 2e 0a 2a 2a 0a 2a 2a 20 2a  acters)..**.** *
64a0: 70 7a 54 61 69 6c 20 69 73 20 6d 61 64 65 20 74  pzTail is made t
64b0: 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 66  o point to the f
64c0: 69 72 73 74 20 62 79 74 65 20 70 61 73 74 20 74  irst byte past t
64d0: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 66 69  he end of the fi
64e0: 72 73 74 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  rst.** SQL state
64f0: 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2e 20 20 54  ment in zSql.  T
6500: 68 69 73 20 72 6f 75 74 69 6e 65 20 6f 6e 6c 79  his routine only
6510: 20 63 6f 6d 70 69 6c 65 73 20 74 68 65 20 66 69   compiles the fi
6520: 72 73 74 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  rst statement.**
6530: 20 69 6e 20 7a 53 71 6c 2c 20 73 6f 20 2a 70 7a   in zSql, so *pz
6540: 54 61 69 6c 20 69 73 20 6c 65 66 74 20 70 6f 69  Tail is left poi
6550: 6e 74 69 6e 67 20 74 6f 20 77 68 61 74 20 72 65  nting to what re
6560: 6d 61 69 6e 73 20 75 6e 63 6f 6d 70 69 6c 65 64  mains uncompiled
6570: 2e 0a 2a 2a 0a 2a 2a 20 2a 70 70 53 74 6d 74 20  ..**.** *ppStmt 
6580: 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67  is left pointing
6590: 20 74 6f 20 61 20 63 6f 6d 70 69 6c 65 64 20 53   to a compiled S
65a0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  QL statement tha
65b0: 74 20 63 61 6e 20 62 65 0a 2a 2a 20 65 78 65 63  t can be.** exec
65c0: 75 74 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74  uted using sqlit
65d0: 65 33 5f 73 74 65 70 28 29 2e 20 20 4f 72 20 69  e3_step().  Or i
65e0: 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 65 72  f there is an er
65f0: 72 6f 72 2c 20 2a 70 70 53 74 6d 74 20 6d 61 79  ror, *ppStmt may
6600: 20 62 65 0a 2a 2a 20 73 65 74 20 74 6f 20 4e 55   be.** set to NU
6610: 4c 4c 2e 20 20 49 66 20 74 68 65 20 69 6e 70 75  LL.  If the inpu
6620: 74 20 74 65 78 74 20 63 6f 6e 74 61 69 6e 65 64  t text contained
6630: 20 6e 6f 20 53 51 4c 20 28 69 66 20 74 68 65 20   no SQL (if the 
6640: 69 6e 70 75 74 20 69 73 20 61 6e 64 0a 2a 2a 20  input is and.** 
6650: 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20  empty string or 
6660: 61 20 63 6f 6d 6d 65 6e 74 29 20 74 68 65 6e 20  a comment) then 
6670: 2a 70 70 53 74 6d 74 20 69 73 20 73 65 74 20 74  *ppStmt is set t
6680: 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 4f 6e  o NULL..**.** On
6690: 20 73 75 63 63 65 73 73 2c 20 53 51 4c 49 54 45   success, SQLITE
66a0: 5f 4f 4b 20 69 73 20 72 65 74 75 72 6e 65 64 2e  _OK is returned.
66b0: 20 20 4f 74 68 65 72 77 69 73 65 20 61 6e 20 65    Otherwise an e
66c0: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 72 65 74  rror code is ret
66d0: 75 72 6e 65 64 2e 0a 2a 2f 0a 69 6e 74 20 73 71  urned..*/.int sq
66e0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 0a 20  lite3_prepare(. 
66f0: 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
6700: 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
6710: 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
6720: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71   const char *zSq
6730: 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
6740: 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38  statement, UTF-8
6750: 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e   encoded */.  in
6760: 74 20 6e 42 79 74 65 73 2c 20 20 20 20 20 20 20  t nBytes,       
6770: 20 20 20 20 20 20 2f 2a 20 4c 65 6e 67 74 68 20        /* Length 
6780: 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
6790: 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  . */.  sqlite3_s
67a0: 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
67b0: 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
67c0: 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
67d0: 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c  st char **pzTail
67e0: 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
67f0: 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
6800: 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
6810: 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  /.);.int sqlite3
6820: 5f 70 72 65 70 61 72 65 31 36 28 0a 20 20 73 71  _prepare16(.  sq
6830: 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
6840: 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73        /* Databas
6850: 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  e handle */.  co
6860: 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20  nst void *zSql, 
6870: 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61        /* SQL sta
6880: 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65  tement, UTF-16 e
6890: 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20  ncoded */.  int 
68a0: 6e 42 79 74 65 73 2c 20 20 20 20 20 20 20 20 20  nBytes,         
68b0: 20 20 20 20 2f 2a 20 4c 65 6e 67 74 68 20 6f 66      /* Length of
68c0: 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20   zSql in bytes. 
68d0: 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
68e0: 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
68f0: 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
6900: 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
6910: 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20   void **pzTail  
6920: 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
6930: 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
6940: 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
6950: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 50 6f 69 6e 74 65  );../*.** Pointe
6960: 72 73 20 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77  rs to the follow
6970: 69 6e 67 20 74 77 6f 20 6f 70 61 71 75 65 20 73  ing two opaque s
6980: 74 72 75 63 74 75 72 65 73 20 61 72 65 20 75 73  tructures are us
6990: 65 64 20 74 6f 20 63 6f 6d 6d 75 6e 69 63 61 74  ed to communicat
69a0: 65 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 69 6d  e.** with the im
69b0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66  plementations of
69c0: 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75   user-defined fu
69d0: 6e 63 74 69 6f 6e 73 2e 0a 2a 2f 0a 74 79 70 65  nctions..*/.type
69e0: 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
69f0: 65 33 5f 63 6f 6e 74 65 78 74 20 73 71 6c 69 74  e3_context sqlit
6a00: 65 33 5f 63 6f 6e 74 65 78 74 3b 0a 74 79 70 65  e3_context;.type
6a10: 64 65 66 20 73 74 72 75 63 74 20 4d 65 6d 20 73  def struct Mem s
6a20: 71 6c 69 74 65 33 5f 76 61 6c 75 65 3b 0a 0a 2f  qlite3_value;../
6a30: 2a 0a 2a 2a 20 49 6e 20 74 68 65 20 53 51 4c 20  *.** In the SQL 
6a40: 73 74 72 69 6e 67 73 20 69 6e 70 75 74 20 74 6f  strings input to
6a50: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
6a60: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70  () and sqlite3_p
6a70: 72 65 70 61 72 65 31 36 28 29 2c 0a 2a 2a 20 6f  repare16(),.** o
6a80: 6e 65 20 6f 72 20 6d 6f 72 65 20 6c 69 74 65 72  ne or more liter
6a90: 61 6c 73 20 63 61 6e 20 62 65 20 72 65 70 6c 61  als can be repla
6aa0: 63 65 20 62 79 20 70 61 72 61 6d 65 74 65 72 73  ce by parameters
6ab0: 20 22 3f 22 20 6f 72 20 22 3a 41 41 41 22 20 6f   "?" or ":AAA" o
6ac0: 72 0a 2a 2a 20 22 24 56 56 56 22 20 77 68 65 72  r.** "$VVV" wher
6ad0: 65 20 41 41 41 20 69 73 20 61 6e 20 69 64 65 6e  e AAA is an iden
6ae0: 74 69 66 65 72 20 61 6e 64 20 56 56 56 20 69 73  tifer and VVV is
6af0: 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65   a variable name
6b00: 20 61 63 63 6f 72 64 69 6e 67 0a 2a 2a 20 74 6f   according.** to
6b10: 20 74 68 65 20 73 79 6e 74 61 78 20 72 75 6c 65   the syntax rule
6b20: 73 20 6f 66 20 74 68 65 20 54 43 4c 20 70 72 6f  s of the TCL pro
6b30: 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67  gramming languag
6b40: 65 2e 0a 2a 2a 20 54 68 65 20 76 61 6c 75 65 20  e..** The value 
6b50: 6f 66 20 74 68 65 73 65 20 70 61 72 61 6d 65 74  of these paramet
6b60: 65 72 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64  ers (also called
6b70: 20 22 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72   "host parameter
6b80: 20 6e 61 6d 65 73 22 29 20 63 61 6e 0a 2a 2a 20   names") can.** 
6b90: 62 65 20 73 65 74 20 75 73 69 6e 67 20 74 68 65  be set using the
6ba0: 20 72 6f 75 74 69 6e 65 73 20 6c 69 73 74 65 64   routines listed
6bb0: 20 62 65 6c 6f 77 2e 0a 2a 2a 0a 2a 2a 20 49 6e   below..**.** In
6bc0: 20 65 76 65 72 79 20 63 61 73 65 2c 20 74 68 65   every case, the
6bd0: 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
6be0: 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
6bf0: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d   the sqlite3_stm
6c00: 74 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 72  t.** structure r
6c10: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 73 71 6c  eturned from sql
6c20: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 2e 20  ite3_prepare(). 
6c30: 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
6c40: 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20  meter is the.** 
6c50: 69 6e 64 65 78 20 6f 66 20 74 68 65 20 70 61 72  index of the par
6c60: 61 6d 65 74 65 72 2e 20 20 54 68 65 20 66 69 72  ameter.  The fir
6c70: 73 74 20 70 61 72 61 6d 65 74 65 72 20 61 73 20  st parameter as 
6c80: 61 6e 20 69 6e 64 65 78 20 6f 66 20 31 2e 20 20  an index of 1.  
6c90: 46 6f 72 0a 2a 2a 20 6e 61 6d 65 64 20 70 61 72  For.** named par
6ca0: 61 6d 65 74 65 72 73 20 28 22 3a 41 41 41 22 20  ameters (":AAA" 
6cb0: 6f 72 20 22 24 56 56 56 22 29 20 79 6f 75 20 63  or "$VVV") you c
6cc0: 61 6e 20 75 73 65 20 0a 2a 2a 20 73 71 6c 69 74  an use .** sqlit
6cd0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
6ce0: 72 5f 69 6e 64 65 78 28 29 20 74 6f 20 67 65 74  r_index() to get
6cf0: 20 74 68 65 20 63 6f 72 72 65 63 74 20 69 6e 64   the correct ind
6d00: 65 78 20 76 61 6c 75 65 20 67 69 76 65 6e 0a 2a  ex value given.*
6d10: 2a 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73  * the parameters
6d20: 20 6e 61 6d 65 2e 20 20 49 66 20 74 68 65 20 73   name.  If the s
6d30: 61 6d 65 20 6e 61 6d 65 64 20 70 61 72 61 6d 65  ame named parame
6d40: 74 65 72 20 6f 63 63 75 72 73 20 6d 6f 72 65 20  ter occurs more 
6d50: 74 68 61 6e 0a 2a 2a 20 6f 6e 63 65 2c 20 69 74  than.** once, it
6d60: 20 69 73 20 61 73 73 69 67 6e 65 64 20 74 68 65   is assigned the
6d70: 20 73 61 6d 65 20 69 6e 64 65 78 20 65 61 63 68   same index each
6d80: 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   time..**.** The
6d90: 20 66 69 66 74 68 20 70 61 72 61 6d 65 74 65 72   fifth parameter
6da0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
6db0: 5f 62 6c 6f 62 28 29 2c 20 73 71 6c 69 74 65 33  _blob(), sqlite3
6dc0: 5f 62 69 6e 64 5f 74 65 78 74 28 29 2c 20 61 6e  _bind_text(), an
6dd0: 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 62 69 6e  d.** sqlite3_bin
6de0: 64 5f 74 65 78 74 31 36 28 29 20 69 73 20 61 20  d_text16() is a 
6df0: 64 65 73 74 72 75 63 74 6f 72 20 75 73 65 64 20  destructor used 
6e00: 74 6f 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68  to dispose of th
6e10: 65 20 42 4c 4f 42 20 6f 72 0a 2a 2a 20 74 65 78  e BLOB or.** tex
6e20: 74 20 61 66 74 65 72 20 53 51 4c 69 74 65 20 68  t after SQLite h
6e30: 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68  as finished with
6e40: 20 69 74 2e 20 20 49 66 20 74 68 65 20 66 69 66   it.  If the fif
6e50: 74 68 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  th argument is t
6e60: 68 65 0a 2a 2a 20 73 70 65 63 69 61 6c 20 76 61  he.** special va
6e70: 6c 75 65 20 53 51 4c 49 54 45 5f 53 54 41 54 49  lue SQLITE_STATI
6e80: 43 2c 20 74 68 65 6e 20 74 68 65 20 6c 69 62 72  C, then the libr
6e90: 61 72 79 20 61 73 73 75 6d 65 73 20 74 68 61 74  ary assumes that
6ea0: 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   the information
6eb0: 0a 2a 2a 20 69 73 20 69 6e 20 73 74 61 74 69 63  .** is in static
6ec0: 2c 20 75 6e 6d 61 6e 61 67 65 64 20 73 70 61 63  , unmanaged spac
6ed0: 65 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6e  e and does not n
6ee0: 65 65 64 20 74 6f 20 62 65 20 66 72 65 65 64 2e  eed to be freed.
6ef0: 20 20 49 66 20 74 68 65 0a 2a 2a 20 66 69 66 74    If the.** fift
6f00: 68 20 61 72 67 75 6d 65 6e 74 20 68 61 73 20 74  h argument has t
6f10: 68 65 20 76 61 6c 75 65 20 53 51 4c 49 54 45 5f  he value SQLITE_
6f20: 54 52 41 4e 53 49 45 4e 54 2c 20 74 68 65 6e 20  TRANSIENT, then 
6f30: 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 69 74 73  SQLite makes its
6f40: 0a 2a 2a 20 6f 77 6e 20 70 72 69 76 61 74 65 20  .** own private 
6f50: 63 6f 70 79 20 6f 66 20 74 68 65 20 64 61 74 61  copy of the data
6f60: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
6f70: 74 65 33 5f 62 69 6e 64 5f 2a 20 72 6f 75 74 69  te3_bind_* routi
6f80: 6e 65 20 6d 75 73 74 20 62 65 20 63 61 6c 6c 65  ne must be calle
6f90: 64 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33  d before sqlite3
6fa0: 5f 73 74 65 70 28 29 20 61 66 74 65 72 0a 2a 2a  _step() after.**
6fb0: 20 61 6e 20 73 71 6c 69 74 65 33 5f 70 72 65 70   an sqlite3_prep
6fc0: 61 72 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33  are() or sqlite3
6fd0: 5f 72 65 73 65 74 28 29 2e 20 20 55 6e 62 6f 75  _reset().  Unbou
6fe0: 6e 64 20 70 61 72 61 6d 65 74 65 72 73 73 20 61  nd parameterss a
6ff0: 72 65 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 65  re.** interprete
7000: 64 20 61 73 20 4e 55 4c 4c 2e 0a 2a 2f 0a 69 6e  d as NULL..*/.in
7010: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62  t sqlite3_bind_b
7020: 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  lob(sqlite3_stmt
7030: 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f  *, int, const vo
7040: 69 64 2a 2c 20 69 6e 74 20 6e 2c 20 76 6f 69 64  id*, int n, void
7050: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 69 6e 74  (*)(void*));.int
7060: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
7070: 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  uble(sqlite3_stm
7080: 74 2a 2c 20 69 6e 74 2c 20 64 6f 75 62 6c 65 29  t*, int, double)
7090: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  ;.int sqlite3_bi
70a0: 6e 64 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 73  nd_int(sqlite3_s
70b0: 74 6d 74 2a 2c 20 69 6e 74 2c 20 69 6e 74 29 3b  tmt*, int, int);
70c0: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e  .int sqlite3_bin
70d0: 64 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33 5f  d_int64(sqlite3_
70e0: 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 73 71 6c 69  stmt*, int, sqli
70f0: 74 65 5f 69 6e 74 36 34 29 3b 0a 69 6e 74 20 73  te_int64);.int s
7100: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
7110: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
7120: 69 6e 74 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  int);.int sqlite
7130: 33 5f 62 69 6e 64 5f 74 65 78 74 28 73 71 6c 69  3_bind_text(sqli
7140: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20  te3_stmt*, int, 
7150: 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74  const char*, int
7160: 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64   n, void(*)(void
7170: 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  *));.int sqlite3
7180: 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 73 71 6c  _bind_text16(sql
7190: 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
71a0: 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e   const void*, in
71b0: 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  t, void(*)(void*
71c0: 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  ));.int sqlite3_
71d0: 62 69 6e 64 5f 76 61 6c 75 65 28 73 71 6c 69 74  bind_value(sqlit
71e0: 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63  e3_stmt*, int, c
71f0: 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  onst sqlite3_val
7200: 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  ue*);../*.** Ret
7210: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
7220: 66 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20  f parameters in 
7230: 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73  a compiled SQL s
7240: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 69 73 0a  tatement.  This.
7250: 2a 2a 20 72 6f 75 74 69 6e 65 20 77 61 73 20 61  ** routine was a
7260: 64 64 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20  dded to support 
7270: 44 42 44 3a 3a 53 51 4c 69 74 65 2e 0a 2a 2f 0a  DBD::SQLite..*/.
7280: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
7290: 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74  _parameter_count
72a0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b  (sqlite3_stmt*);
72b0: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
72c0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69  he name of the i
72d0: 2d 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20 20  -th parameter.  
72e0: 4f 72 64 69 6e 61 72 79 20 70 61 72 61 6d 65 74  Ordinary paramet
72f0: 65 72 73 20 22 3f 22 20 61 72 65 0a 2a 2a 20 6e  ers "?" are.** n
7300: 61 6d 65 6c 65 73 73 20 61 6e 64 20 61 20 4e 55  ameless and a NU
7310: 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20  LL is returned. 
7320: 20 46 6f 72 20 70 61 72 61 6d 65 74 65 72 73 20   For parameters 
7330: 6f 66 20 74 68 65 20 66 6f 72 6d 20 3a 41 41 41  of the form :AAA
7340: 20 6f 72 0a 2a 2a 20 24 56 56 56 20 74 68 65 20   or.** $VVV the 
7350: 63 6f 6d 70 6c 65 74 65 20 74 65 78 74 20 6f 66  complete text of
7360: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6e   the parameter n
7370: 61 6d 65 20 69 73 20 72 65 74 75 72 6e 65 64 2c  ame is returned,
7380: 20 69 6e 63 6c 75 64 69 6e 67 0a 2a 2a 20 74 68   including.** th
7390: 65 20 69 6e 69 74 69 61 6c 20 22 3a 22 20 6f 72  e initial ":" or
73a0: 20 22 24 22 2e 20 20 4e 55 4c 4c 20 69 73 20 72   "$".  NULL is r
73b0: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 69  eturned if the i
73c0: 6e 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72  ndex is out of r
73d0: 61 6e 67 65 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63  ange..*/.const c
73e0: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 62 69 6e  har *sqlite3_bin
73f0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
7400: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
7410: 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74  int);../*.** Ret
7420: 75 72 6e 20 74 68 65 20 69 6e 64 65 78 20 6f 66  urn the index of
7430: 20 61 20 70 61 72 61 6d 65 74 65 72 20 77 69 74   a parameter wit
7440: 68 20 74 68 65 20 67 69 76 65 6e 20 6e 61 6d 65  h the given name
7450: 2e 20 20 54 68 65 20 6e 61 6d 65 0a 2a 2a 20 6d  .  The name.** m
7460: 75 73 74 20 6d 61 74 63 68 20 65 78 61 63 74 6c  ust match exactl
7470: 79 2e 20 20 49 66 20 6e 6f 20 70 61 72 61 6d 65  y.  If no parame
7480: 74 65 72 20 77 69 74 68 20 74 68 65 20 67 69 76  ter with the giv
7490: 65 6e 20 6e 61 6d 65 20 69 73 20 66 6f 75 6e 64  en name is found
74a0: 2c 0a 2a 2a 20 72 65 74 75 72 6e 20 30 2e 0a 2a  ,.** return 0..*
74b0: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  /.int sqlite3_bi
74c0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
74d0: 65 78 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  ex(sqlite3_stmt*
74e0: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
74f0: 61 6d 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 65 74  ame);../*.** Set
7500: 20 61 6c 6c 20 74 68 65 20 70 61 72 61 6d 65 74   all the paramet
7510: 65 72 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 69  ers in the compi
7520: 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  led SQL statemen
7530: 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a  t to NULL..**.**
7540: 2a 2a 2a 2a 2a 20 54 48 49 53 20 49 53 20 41 4e  ***** THIS IS AN
7550: 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 41 50   EXPERIMENTAL AP
7560: 49 20 41 4e 44 20 49 53 20 53 55 42 4a 45 43 54  I AND IS SUBJECT
7570: 20 54 4f 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a   TO CHANGE *****
7580: 2a 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  *.*/.int sqlite3
7590: 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28  _clear_bindings(
75a0: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a  sqlite3_stmt*);.
75b0: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74 68  ./*.** Return th
75c0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
75d0: 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
75e0: 74 20 73 65 74 20 72 65 74 75 72 6e 65 64 20 62  t set returned b
75f0: 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 0a 2a  y the compiled.*
7600: 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  * SQL statement.
7610: 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   This routine re
7620: 74 75 72 6e 73 20 30 20 69 66 20 70 53 74 6d 74  turns 0 if pStmt
7630: 20 69 73 20 61 6e 20 53 51 4c 20 73 74 61 74 65   is an SQL state
7640: 6d 65 6e 74 0a 2a 2a 20 74 68 61 74 20 64 6f 65  ment.** that doe
7650: 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 64 61 74  s not return dat
7660: 61 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 61  a (for example a
7670: 6e 20 55 50 44 41 54 45 29 2e 0a 2a 2f 0a 69 6e  n UPDATE)..*/.in
7680: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
7690: 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 73  _count(sqlite3_s
76a0: 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a  tmt *pStmt);../*
76b0: 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 61  .** The first pa
76c0: 72 61 6d 65 74 65 72 20 69 73 20 61 20 63 6f 6d  rameter is a com
76d0: 70 69 6c 65 64 20 53 51 4c 20 73 74 61 74 65 6d  piled SQL statem
76e0: 65 6e 74 2e 20 54 68 69 73 20 66 75 6e 63 74 69  ent. This functi
76f0: 6f 6e 20 72 65 74 75 72 6e 73 0a 2a 2a 20 74 68  on returns.** th
7700: 65 20 63 6f 6c 75 6d 6e 20 68 65 61 64 69 6e 67  e column heading
7710: 20 66 6f 72 20 74 68 65 20 4e 74 68 20 63 6f 6c   for the Nth col
7720: 75 6d 6e 20 6f 66 20 74 68 61 74 20 73 74 61 74  umn of that stat
7730: 65 6d 65 6e 74 2c 20 77 68 65 72 65 20 4e 20 69  ement, where N i
7740: 73 20 74 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20  s the.** second 
7750: 66 75 6e 63 74 69 6f 6e 20 70 61 72 61 6d 65 74  function paramet
7760: 65 72 2e 20 20 54 68 65 20 73 74 72 69 6e 67 20  er.  The string 
7770: 72 65 74 75 72 6e 65 64 20 69 73 20 55 54 46 2d  returned is UTF-
7780: 38 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  8 for.** sqlite3
7790: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 29 20 61  _column_name() a
77a0: 6e 64 20 55 54 46 2d 31 36 20 66 6f 72 20 73 71  nd UTF-16 for sq
77b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
77c0: 65 31 36 28 29 2e 0a 2a 2f 0a 63 6f 6e 73 74 20  e16()..*/.const 
77d0: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f  char *sqlite3_co
77e0: 6c 75 6d 6e 5f 6e 61 6d 65 28 73 71 6c 69 74 65  lumn_name(sqlite
77f0: 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f  3_stmt*,int);.co
7800: 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
7810: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28  3_column_name16(
7820: 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e  sqlite3_stmt*,in
7830: 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66  t);../*.** The f
7840: 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
7850: 73 20 61 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  s a compiled SQL
7860: 20 73 74 61 74 65 6d 65 6e 74 2e 20 49 66 20 74   statement. If t
7870: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  his statement.**
7880: 20 69 73 20 61 20 53 45 4c 45 43 54 20 73 74 61   is a SELECT sta
7890: 74 65 6d 65 6e 74 2c 20 74 68 65 20 4e 74 68 20  tement, the Nth 
78a0: 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65  column of the re
78b0: 74 75 72 6e 65 64 20 72 65 73 75 6c 74 20 73 65  turned result se
78c0: 74 20 0a 2a 2a 20 6f 66 20 74 68 65 20 53 45 4c  t .** of the SEL
78d0: 45 43 54 20 69 73 20 61 20 74 61 62 6c 65 20 63  ECT is a table c
78e0: 6f 6c 75 6d 6e 20 74 68 65 6e 20 74 68 65 20 64  olumn then the d
78f0: 65 63 6c 61 72 65 64 20 74 79 70 65 20 6f 66 20  eclared type of 
7900: 74 68 65 20 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c  the table.** col
7910: 75 6d 6e 20 69 73 20 72 65 74 75 72 6e 65 64 2e  umn is returned.
7920: 20 49 66 20 74 68 65 20 4e 74 68 20 63 6f 6c 75   If the Nth colu
7930: 6d 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  mn of the result
7940: 20 73 65 74 20 69 73 20 6e 6f 74 20 61 74 20 74   set is not at t
7950: 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c 20  able.** column, 
7960: 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  then a NULL poin
7970: 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ter is returned.
7980: 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 73 74   The returned st
7990: 72 69 6e 67 20 69 73 20 61 6c 77 61 79 73 0a 2a  ring is always.*
79a0: 2a 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 2e  * UTF-8 encoded.
79b0: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e   For example, in
79c0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
79d0: 68 65 6d 61 3a 0a 2a 2a 0a 2a 2a 20 43 52 45 41  hema:.**.** CREA
79e0: 54 45 20 54 41 42 4c 45 20 74 31 28 63 31 20 56  TE TABLE t1(c1 V
79f0: 41 52 49 41 4e 54 29 3b 0a 2a 2a 0a 2a 2a 20 41  ARIANT);.**.** A
7a00: 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  nd the following
7a10: 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69   statement compi
7a20: 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c 45 43  led:.**.** SELEC
7a30: 54 20 63 31 20 2b 20 31 2c 20 30 20 46 52 4f 4d  T c1 + 1, 0 FROM
7a40: 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 54 68 65 6e 20   t1;.**.** Then 
7a50: 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 6f 75  this routine wou
7a60: 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20 73 74  ld return the st
7a70: 72 69 6e 67 20 22 56 41 52 49 41 4e 54 22 20 66  ring "VARIANT" f
7a80: 6f 72 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a  or the second.**
7a90: 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 28   result column (
7aa0: 69 3d 3d 31 29 2c 20 61 6e 64 20 61 20 4e 55 4c  i==1), and a NUL
7ab0: 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 74 68  L pointer for th
7ac0: 65 20 66 69 72 73 74 20 72 65 73 75 6c 74 20 63  e first result c
7ad0: 6f 6c 75 6d 6e 0a 2a 2a 20 28 69 3d 3d 30 29 2e  olumn.** (i==0).
7ae0: 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a  .*/.const char *
7af0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
7b00: 65 63 6c 74 79 70 65 28 73 71 6c 69 74 65 33 5f  ecltype(sqlite3_
7b10: 73 74 6d 74 20 2a 2c 20 69 6e 74 20 69 29 3b 0a  stmt *, int i);.
7b20: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ./*.** The first
7b30: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
7b40: 63 6f 6d 70 69 6c 65 64 20 53 51 4c 20 73 74 61  compiled SQL sta
7b50: 74 65 6d 65 6e 74 2e 20 49 66 20 74 68 69 73 20  tement. If this 
7b60: 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 69 73 20  statement.** is 
7b70: 61 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  a SELECT stateme
7b80: 6e 74 2c 20 74 68 65 20 4e 74 68 20 63 6f 6c 75  nt, the Nth colu
7b90: 6d 6e 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e  mn of the return
7ba0: 65 64 20 72 65 73 75 6c 74 20 73 65 74 20 0a 2a  ed result set .*
7bb0: 2a 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20  * of the SELECT 
7bc0: 69 73 20 61 20 74 61 62 6c 65 20 63 6f 6c 75 6d  is a table colum
7bd0: 6e 20 74 68 65 6e 20 74 68 65 20 64 65 63 6c 61  n then the decla
7be0: 72 65 64 20 74 79 70 65 20 6f 66 20 74 68 65 20  red type of the 
7bf0: 74 61 62 6c 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 20  table.** column 
7c00: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49 66 20  is returned. If 
7c10: 74 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f  the Nth column o
7c20: 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
7c30: 20 69 73 20 6e 6f 74 20 61 74 20 74 61 62 6c 65   is not at table
7c40: 0a 2a 2a 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e  .** column, then
7c50: 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
7c60: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68 65  is returned. The
7c70: 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67   returned string
7c80: 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20 55 54   is always.** UT
7c90: 46 2d 31 36 20 65 6e 63 6f 64 65 64 2e 20 46 6f  F-16 encoded. Fo
7ca0: 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68  r example, in th
7cb0: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
7cc0: 61 3a 0a 2a 2a 0a 2a 2a 20 43 52 45 41 54 45 20  a:.**.** CREATE 
7cd0: 54 41 42 4c 45 20 74 31 28 63 31 20 49 4e 54 45  TABLE t1(c1 INTE
7ce0: 47 45 52 29 3b 0a 2a 2a 0a 2a 2a 20 41 6e 64 20  GER);.**.** And 
7cf0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74  the following st
7d00: 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65 64  atement compiled
7d10: 3a 0a 2a 2a 0a 2a 2a 20 53 45 4c 45 43 54 20 63  :.**.** SELECT c
7d20: 31 20 2b 20 31 2c 20 30 20 46 52 4f 4d 20 74 31  1 + 1, 0 FROM t1
7d30: 3b 0a 2a 2a 0a 2a 2a 20 54 68 65 6e 20 74 68 69  ;.**.** Then thi
7d40: 73 20 72 6f 75 74 69 6e 65 20 77 6f 75 6c 64 20  s routine would 
7d50: 72 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e  return the strin
7d60: 67 20 22 49 4e 54 45 47 45 52 22 20 66 6f 72 20  g "INTEGER" for 
7d70: 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 72 65  the second.** re
7d80: 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 28 69 3d 3d  sult column (i==
7d90: 31 29 2c 20 61 6e 64 20 61 20 4e 55 4c 4c 20 70  1), and a NULL p
7da0: 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65 20 66  ointer for the f
7db0: 69 72 73 74 20 72 65 73 75 6c 74 20 63 6f 6c 75  irst result colu
7dc0: 6d 6e 0a 2a 2a 20 28 69 3d 3d 30 29 2e 0a 2a 2f  mn.** (i==0)..*/
7dd0: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
7de0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
7df0: 74 79 70 65 31 36 28 73 71 6c 69 74 65 33 5f 73  type16(sqlite3_s
7e00: 74 6d 74 2a 2c 69 6e 74 29 3b 0a 0a 2f 2a 20 0a  tmt*,int);../* .
7e10: 2a 2a 20 41 66 74 65 72 20 61 6e 20 53 51 4c 20  ** After an SQL 
7e20: 71 75 65 72 79 20 68 61 73 20 62 65 65 6e 20 63  query has been c
7e30: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 61 20 63  ompiled with a c
7e40: 61 6c 6c 20 74 6f 20 65 69 74 68 65 72 0a 2a 2a  all to either.**
7e50: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
7e60: 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 70 72  () or sqlite3_pr
7e70: 65 70 61 72 65 31 36 28 29 2c 20 74 68 65 6e 20  epare16(), then 
7e80: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 75  this function mu
7e90: 73 74 20 62 65 0a 2a 2a 20 63 61 6c 6c 65 64 20  st be.** called 
7ea0: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65  one or more time
7eb0: 73 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65  s to execute the
7ec0: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a 0a 2a   statement..**.*
7ed0: 2a 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  * The return val
7ee0: 75 65 20 77 69 6c 6c 20 62 65 20 65 69 74 68 65  ue will be eithe
7ef0: 72 20 53 51 4c 49 54 45 5f 42 55 53 59 2c 20 53  r SQLITE_BUSY, S
7f00: 51 4c 49 54 45 5f 44 4f 4e 45 2c 20 0a 2a 2a 20  QLITE_DONE, .** 
7f10: 53 51 4c 49 54 45 5f 52 4f 57 2c 20 53 51 4c 49  SQLITE_ROW, SQLI
7f20: 54 45 5f 45 52 52 4f 52 2c 20 6f 72 20 53 51 4c  TE_ERROR, or SQL
7f30: 49 54 45 5f 4d 49 53 55 53 45 2e 0a 2a 2a 0a 2a  ITE_MISUSE..**.*
7f40: 2a 20 53 51 4c 49 54 45 5f 42 55 53 59 20 6d 65  * SQLITE_BUSY me
7f50: 61 6e 73 20 74 68 61 74 20 74 68 65 20 64 61 74  ans that the dat
7f60: 61 62 61 73 65 20 65 6e 67 69 6e 65 20 61 74 74  abase engine att
7f70: 65 6d 70 74 65 64 20 74 6f 20 6f 70 65 6e 0a 2a  empted to open.*
7f80: 2a 20 61 20 6c 6f 63 6b 65 64 20 64 61 74 61 62  * a locked datab
7f90: 61 73 65 20 61 6e 64 20 74 68 65 72 65 20 69 73  ase and there is
7fa0: 20 6e 6f 20 62 75 73 79 20 63 61 6c 6c 62 61 63   no busy callbac
7fb0: 6b 20 72 65 67 69 73 74 65 72 65 64 2e 0a 2a 2a  k registered..**
7fc0: 20 43 61 6c 6c 20 73 71 6c 69 74 65 33 5f 73 74   Call sqlite3_st
7fd0: 65 70 28 29 20 61 67 61 69 6e 20 74 6f 20 72 65  ep() again to re
7fe0: 74 72 79 20 74 68 65 20 6f 70 65 6e 2e 0a 2a 2a  try the open..**
7ff0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20  .** SQLITE_DONE 
8000: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 73  means that the s
8010: 74 61 74 65 6d 65 6e 74 20 68 61 73 20 66 69 6e  tatement has fin
8020: 69 73 68 65 64 20 65 78 65 63 75 74 69 6e 67 0a  ished executing.
8030: 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2e  ** successfully.
8040: 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29    sqlite3_step()
8050: 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 63   should not be c
8060: 61 6c 6c 65 64 20 61 67 61 69 6e 20 6f 6e 20 74  alled again on t
8070: 68 69 73 20 76 69 72 74 75 61 6c 0a 2a 2a 20 6d  his virtual.** m
8080: 61 63 68 69 6e 65 2e 0a 2a 2a 0a 2a 2a 20 49 66  achine..**.** If
8090: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
80a0: 6e 74 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  nt being execute
80b0: 64 20 72 65 74 75 72 6e 73 20 61 6e 79 20 64 61  d returns any da
80c0: 74 61 2c 20 74 68 65 6e 20 0a 2a 2a 20 53 51 4c  ta, then .** SQL
80d0: 49 54 45 5f 52 4f 57 20 69 73 20 72 65 74 75 72  ITE_ROW is retur
80e0: 6e 65 64 20 65 61 63 68 20 74 69 6d 65 20 61 20  ned each time a 
80f0: 6e 65 77 20 72 6f 77 20 6f 66 20 64 61 74 61 20  new row of data 
8100: 69 73 20 72 65 61 64 79 0a 2a 2a 20 66 6f 72 20  is ready.** for 
8110: 70 72 6f 63 65 73 73 69 6e 67 20 62 79 20 74 68  processing by th
8120: 65 20 63 61 6c 6c 65 72 2e 20 54 68 65 20 76 61  e caller. The va
8130: 6c 75 65 73 20 6d 61 79 20 62 65 20 61 63 63 65  lues may be acce
8140: 73 73 65 64 20 75 73 69 6e 67 0a 2a 2a 20 74 68  ssed using.** th
8150: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
8160: 5f 2a 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 64  _*() functions d
8170: 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 2e 20  escribed below. 
8180: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 0a 2a  sqlite3_step().*
8190: 2a 20 69 73 20 63 61 6c 6c 65 64 20 61 67 61 69  * is called agai
81a0: 6e 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 68  n to retrieve th
81b0: 65 20 6e 65 78 74 20 72 6f 77 20 6f 66 20 64 61  e next row of da
81c0: 74 61 2e 0a 2a 2a 20 0a 2a 2a 20 53 51 4c 49 54  ta..** .** SQLIT
81d0: 45 5f 45 52 52 4f 52 20 6d 65 61 6e 73 20 74 68  E_ERROR means th
81e0: 61 74 20 61 20 72 75 6e 2d 74 69 6d 65 20 65 72  at a run-time er
81f0: 72 6f 72 20 28 73 75 63 68 20 61 73 20 61 20 63  ror (such as a c
8200: 6f 6e 73 74 72 61 69 6e 74 0a 2a 2a 20 76 69 6f  onstraint.** vio
8210: 6c 61 74 69 6f 6e 29 20 68 61 73 20 6f 63 63 75  lation) has occu
8220: 72 72 65 64 2e 20 20 73 71 6c 69 74 65 33 5f 73  rred.  sqlite3_s
8230: 74 65 70 28 29 20 73 68 6f 75 6c 64 20 6e 6f 74  tep() should not
8240: 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69 6e   be called again
8250: 20 6f 6e 0a 2a 2a 20 74 68 65 20 56 4d 2e 20 4d   on.** the VM. M
8260: 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ore information 
8270: 6d 61 79 20 62 65 20 66 6f 75 6e 64 20 62 79 20  may be found by 
8280: 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  calling sqlite3_
8290: 65 72 72 6d 73 67 28 29 2e 0a 2a 2a 0a 2a 2a 20  errmsg()..**.** 
82a0: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 6d 65  SQLITE_MISUSE me
82b0: 61 6e 73 20 74 68 61 74 20 74 68 65 20 74 68 69  ans that the thi
82c0: 73 20 72 6f 75 74 69 6e 65 20 77 61 73 20 63 61  s routine was ca
82d0: 6c 6c 65 64 20 69 6e 61 70 70 72 6f 70 72 69 61  lled inappropria
82e0: 74 65 6c 79 2e 0a 2a 2a 20 50 65 72 68 61 70 73  tely..** Perhaps
82f0: 20 69 74 20 77 61 73 20 63 61 6c 6c 65 64 20 6f   it was called o
8300: 6e 20 61 20 76 69 72 74 75 61 6c 20 6d 61 63 68  n a virtual mach
8310: 69 6e 65 20 74 68 61 74 20 68 61 64 20 61 6c 72  ine that had alr
8320: 65 61 64 79 20 62 65 65 6e 0a 2a 2a 20 66 69 6e  eady been.** fin
8330: 61 6c 69 7a 65 64 20 6f 72 20 6f 6e 20 6f 6e 65  alized or on one
8340: 20 74 68 61 74 20 68 61 64 20 70 72 65 76 69 6f   that had previo
8350: 75 73 6c 79 20 72 65 74 75 72 6e 65 64 20 53 51  usly returned SQ
8360: 4c 49 54 45 5f 45 52 52 4f 52 20 6f 72 0a 2a 2a  LITE_ERROR or.**
8370: 20 53 51 4c 49 54 45 5f 44 4f 4e 45 2e 20 20 4f   SQLITE_DONE.  O
8380: 72 20 69 74 20 63 6f 75 6c 64 20 62 65 20 74 68  r it could be th
8390: 65 20 63 61 73 65 20 74 68 65 20 74 68 65 20 73  e case the the s
83a0: 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ame database con
83b0: 6e 65 63 74 69 6f 6e 0a 2a 2a 20 69 73 20 62 65  nection.** is be
83c0: 69 6e 67 20 75 73 65 64 20 73 69 6d 75 6c 61 74  ing used simulat
83d0: 61 6e 65 6f 75 73 6c 79 20 62 79 20 74 77 6f 20  aneously by two 
83e0: 6f 72 20 6d 6f 72 65 20 74 68 72 65 61 64 73 2e  or more threads.
83f0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
8400: 73 74 65 70 28 73 71 6c 69 74 65 33 5f 73 74 6d  step(sqlite3_stm
8410: 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  t*);../*.** Retu
8420: 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  rn the number of
8430: 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 63   values in the c
8440: 75 72 72 65 6e 74 20 72 6f 77 20 6f 66 20 74 68  urrent row of th
8450: 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 2a 2a  e result set..**
8460: 0a 2a 2a 20 41 66 74 65 72 20 61 20 63 61 6c 6c  .** After a call
8470: 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 74 65 70   to sqlite3_step
8480: 28 29 20 74 68 61 74 20 72 65 74 75 72 6e 73 20  () that returns 
8490: 53 51 4c 49 54 45 5f 52 4f 57 2c 20 74 68 69 73  SQLITE_ROW, this
84a0: 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 77 69 6c 6c   routine.** will
84b0: 20 72 65 74 75 72 6e 20 74 68 65 20 73 61 6d 65   return the same
84c0: 20 76 61 6c 75 65 20 61 73 20 74 68 65 20 73 71   value as the sq
84d0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
84e0: 6e 74 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a  nt() function..*
84f0: 2a 20 41 66 74 65 72 20 73 71 6c 69 74 65 33 5f  * After sqlite3_
8500: 73 74 65 70 28 29 20 68 61 73 20 72 65 74 75 72  step() has retur
8510: 6e 65 64 20 61 6e 20 53 51 4c 49 54 45 5f 44 4f  ned an SQLITE_DO
8520: 4e 45 2c 20 53 51 4c 49 54 45 5f 42 55 53 59 20  NE, SQLITE_BUSY 
8530: 6f 72 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 64 65  or.** error code
8540: 2c 20 6f 72 20 62 65 66 6f 72 65 20 73 71 6c 69  , or before sqli
8550: 74 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 62  te3_step() has b
8560: 65 65 6e 20 63 61 6c 6c 65 64 20 6f 6e 20 61 20  een called on a 
8570: 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 53 51 4c  .** compiled SQL
8580: 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 69 73   statement, this
8590: 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
85a0: 20 7a 65 72 6f 2e 0a 2a 2f 0a 69 6e 74 20 73 71   zero..*/.int sq
85b0: 6c 69 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74  lite3_data_count
85c0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
85d0: 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 56 61  Stmt);../*.** Va
85e0: 6c 75 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  lues are stored 
85f0: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
8600: 69 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  in one of the fo
8610: 6c 6c 6f 77 69 6e 67 20 66 75 6e 64 61 6d 65 6e  llowing fundamen
8620: 74 61 6c 0a 2a 2a 20 74 79 70 65 73 2e 0a 2a 2f  tal.** types..*/
8630: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
8640: 49 4e 54 45 47 45 52 20 20 31 0a 23 64 65 66 69  INTEGER  1.#defi
8650: 6e 65 20 53 51 4c 49 54 45 5f 46 4c 4f 41 54 20  ne SQLITE_FLOAT 
8660: 20 20 20 32 0a 2f 2a 20 23 64 65 66 69 6e 65 20     2./* #define 
8670: 53 51 4c 49 54 45 5f 54 45 58 54 20 20 33 20 20  SQLITE_TEXT  3  
8680: 2f 2f 20 53 65 65 20 62 65 6c 6f 77 20 2a 2f 0a  // See below */.
8690: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42  #define SQLITE_B
86a0: 4c 4f 42 20 20 20 20 20 34 0a 23 64 65 66 69 6e  LOB     4.#defin
86b0: 65 20 53 51 4c 49 54 45 5f 4e 55 4c 4c 20 20 20  e SQLITE_NULL   
86c0: 20 20 35 0a 0a 2f 2a 0a 2a 2a 20 53 51 4c 69 74    5../*.** SQLit
86d0: 65 20 76 65 72 73 69 6f 6e 20 32 20 64 65 66 69  e version 2 defi
86e0: 6e 65 73 20 53 51 4c 49 54 45 5f 54 45 58 54 20  nes SQLITE_TEXT 
86f0: 64 69 66 66 65 72 65 6e 74 6c 79 2e 20 20 54 6f  differently.  To
8700: 20 61 6c 6c 6f 77 20 62 6f 74 68 0a 2a 2a 20 76   allow both.** v
8710: 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 76 65 72  ersion 2 and ver
8720: 73 69 6f 6e 20 33 20 74 6f 20 62 65 20 69 6e 63  sion 3 to be inc
8730: 6c 75 64 65 64 2c 20 75 6e 64 65 66 69 6e 65 20  luded, undefine 
8740: 74 68 65 6d 20 62 6f 74 68 20 69 66 20 61 0a 2a  them both if a.*
8750: 2a 20 63 6f 6e 66 6c 69 63 74 20 69 73 20 73 65  * conflict is se
8760: 65 6e 2e 20 20 44 65 66 69 6e 65 20 53 51 4c 49  en.  Define SQLI
8770: 54 45 33 5f 54 45 58 54 20 74 6f 20 62 65 20 74  TE3_TEXT to be t
8780: 68 65 20 76 65 72 73 69 6f 6e 20 33 20 76 61 6c  he version 3 val
8790: 75 65 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51  ue..*/.#ifdef SQ
87a0: 4c 49 54 45 5f 54 45 58 54 0a 23 20 75 6e 64 65  LITE_TEXT.# unde
87b0: 66 20 53 51 4c 49 54 45 5f 54 45 58 54 0a 23 65  f SQLITE_TEXT.#e
87c0: 6c 73 65 0a 23 20 64 65 66 69 6e 65 20 53 51 4c  lse.# define SQL
87d0: 49 54 45 5f 54 45 58 54 20 20 20 20 20 33 0a 23  ITE_TEXT     3.#
87e0: 65 6e 64 69 66 0a 23 64 65 66 69 6e 65 20 53 51  endif.#define SQ
87f0: 4c 49 54 45 33 5f 54 45 58 54 20 20 20 20 20 33  LITE3_TEXT     3
8800: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 6e 65 78 74  ../*.** The next
8810: 20 67 72 6f 75 70 20 6f 66 20 72 6f 75 74 69 6e   group of routin
8820: 65 73 20 72 65 74 75 72 6e 73 20 69 6e 66 6f 72  es returns infor
8830: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
8840: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20   information.** 
8850: 69 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  in a single colu
8860: 6d 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  mn of the curren
8870: 74 20 72 65 73 75 6c 74 20 72 6f 77 20 6f 66 20  t result row of 
8880: 61 20 71 75 65 72 79 2e 20 20 49 6e 20 65 76 65  a query.  In eve
8890: 72 79 0a 2a 2a 20 63 61 73 65 20 74 68 65 20 66  ry.** case the f
88a0: 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
88b0: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
88c0: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
88d0: 20 74 68 61 74 20 69 73 20 62 65 69 6e 67 0a 2a   that is being.*
88e0: 2a 20 65 78 65 63 75 74 65 64 20 28 74 68 65 20  * executed (the 
88f0: 73 71 6c 69 74 65 5f 73 74 6d 74 2a 20 74 68 61  sqlite_stmt* tha
8900: 74 20 77 61 73 20 72 65 74 75 72 6e 65 64 20 66  t was returned f
8910: 72 6f 6d 20 73 71 6c 69 74 65 33 5f 70 72 65 70  rom sqlite3_prep
8920: 61 72 65 28 29 29 20 61 6e 64 0a 2a 2a 20 74 68  are()) and.** th
8930: 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
8940: 74 20 69 73 20 74 68 65 20 69 6e 64 65 78 20 6f  t is the index o
8950: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 72  f the column for
8960: 20 77 68 69 63 68 20 69 6e 66 6f 72 6d 61 74 69   which informati
8970: 6f 6e 20 0a 2a 2a 20 73 68 6f 75 6c 64 20 62 65  on .** should be
8980: 20 72 65 74 75 72 6e 65 64 2e 20 20 69 43 6f 6c   returned.  iCol
8990: 20 69 73 20 7a 65 72 6f 2d 69 6e 64 65 78 65 64   is zero-indexed
89a0: 2e 20 20 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74  .  The left-most
89b0: 20 63 6f 6c 75 6d 6e 20 61 73 20 61 6e 0a 2a 2a   column as an.**
89c0: 20 69 6e 64 65 78 20 6f 66 20 30 2e 0a 2a 2a 0a   index of 0..**.
89d0: 2a 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73 74  ** If the SQL st
89e0: 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20 63  atement is not c
89f0: 75 72 72 65 6e 74 6c 79 20 70 6f 69 6e 74 20 74  urrently point t
8a00: 6f 20 61 20 76 61 6c 69 64 20 72 6f 77 2c 20 6f  o a valid row, o
8a10: 72 20 69 66 20 74 68 65 0a 2a 2a 20 74 68 65 20  r if the.** the 
8a20: 63 6f 6c 75 6c 6d 6e 20 69 6e 64 65 78 20 69 73  colulmn index is
8a30: 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2c 20 74   out of range, t
8a40: 68 65 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64  he result is und
8a50: 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  efined..**.** Th
8a60: 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61 74 74  ese routines att
8a70: 65 6d 70 74 20 74 6f 20 63 6f 6e 76 65 72 74 20  empt to convert 
8a80: 74 68 65 20 76 61 6c 75 65 20 77 68 65 72 65 20  the value where 
8a90: 61 70 70 72 6f 70 72 69 61 74 65 2e 20 20 46 6f  appropriate.  Fo
8aa0: 72 0a 2a 2a 20 65 78 61 6d 70 6c 65 2c 20 69 66  r.** example, if
8ab0: 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 72 65   the internal re
8ac0: 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 73 20  presentation is 
8ad0: 46 4c 4f 41 54 20 61 6e 64 20 61 20 74 65 78 74  FLOAT and a text
8ae0: 20 72 65 73 75 6c 74 0a 2a 2a 20 69 73 20 72 65   result.** is re
8af0: 71 75 65 73 74 65 64 2c 20 73 70 72 69 6e 74 66  quested, sprintf
8b00: 28 29 20 69 73 20 75 73 65 64 20 69 6e 74 65 72  () is used inter
8b10: 6e 61 6c 6c 79 20 74 6f 20 64 6f 20 74 68 65 20  nally to do the 
8b20: 63 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a 20 61 75  conversion.** au
8b30: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 54 68  tomatically.  Th
8b40: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62 6c  e following tabl
8b50: 65 20 64 65 74 61 69 6c 73 20 74 68 65 20 63 6f  e details the co
8b60: 6e 76 65 72 73 69 6f 6e 73 20 74 68 61 74 0a 2a  nversions that.*
8b70: 2a 20 61 72 65 20 61 70 70 6c 69 65 64 3a 0a 2a  * are applied:.*
8b80: 2a 0a 2a 2a 20 20 20 20 49 6e 74 65 72 6e 61 6c  *.**    Internal
8b90: 20 54 79 70 65 20 20 20 20 52 65 71 75 65 73 74   Type    Request
8ba0: 65 64 20 54 79 70 65 20 20 20 20 20 43 6f 6e 76  ed Type     Conv
8bb0: 65 72 73 69 6f 6e 0a 2a 2a 20 20 20 20 2d 2d 2d  ersion.**    ---
8bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20 2d 2d  ----------    --
8bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20  ------------    
8be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20  ----------.**   
8c00: 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
8c10: 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20       INTEGER    
8c20: 20 20 20 20 20 52 65 73 75 6c 74 20 69 73 20 30       Result is 0
8c30: 0a 2a 2a 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  .**       NULL  
8c40: 20 20 20 20 20 20 20 20 20 20 20 46 4c 4f 41 54             FLOAT
8c50: 20 20 20 20 20 20 20 20 20 20 20 52 65 73 75 6c             Resul
8c60: 74 20 69 73 20 30 2e 30 0a 2a 2a 20 20 20 20 20  t is 0.0.**     
8c70: 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
8c80: 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20 20     TEXT         
8c90: 20 20 20 52 65 73 75 6c 74 20 69 73 20 61 6e 20     Result is an 
8ca0: 65 6d 70 74 79 20 73 74 72 69 6e 67 0a 2a 2a 20  empty string.** 
8cb0: 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
8cc0: 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20         BLOB     
8cd0: 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 69 73         Result is
8ce0: 20 61 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 42   a zero-length B
8cf0: 4c 4f 42 0a 2a 2a 20 20 20 20 20 20 20 49 4e 54  LOB.**       INT
8d00: 45 47 45 52 20 20 20 20 20 20 20 20 20 20 46 4c  EGER          FL
8d10: 4f 41 54 20 20 20 20 20 20 20 20 20 20 20 43 6f  OAT           Co
8d20: 6e 76 65 72 74 20 66 72 6f 6d 20 69 6e 74 65 67  nvert from integ
8d30: 65 72 20 74 6f 20 66 6c 6f 61 74 0a 2a 2a 20 20  er to float.**  
8d40: 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 20 20       INTEGER    
8d50: 20 20 20 20 20 20 54 45 58 54 20 20 20 20 20 20        TEXT      
8d60: 20 20 20 20 20 20 41 53 43 49 49 20 72 65 6e 64        ASCII rend
8d70: 65 72 69 6e 67 20 6f 66 20 74 68 65 20 69 6e 74  ering of the int
8d80: 65 67 65 72 0a 2a 2a 20 20 20 20 20 20 20 49 4e  eger.**       IN
8d90: 54 45 47 45 52 20 20 20 20 20 20 20 20 20 20 42  TEGER          B
8da0: 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 53  LOB            S
8db0: 61 6d 65 20 61 73 20 66 6f 72 20 49 4e 54 45 47  ame as for INTEG
8dc0: 45 52 2d 3e 54 45 58 54 0a 2a 2a 20 20 20 20 20  ER->TEXT.**     
8dd0: 20 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20    FLOAT         
8de0: 20 20 20 49 4e 54 45 47 45 52 20 20 20 20 20 20     INTEGER      
8df0: 20 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20     Convert from 
8e00: 66 6c 6f 61 74 20 74 6f 20 69 6e 74 65 67 65 72  float to integer
8e10: 0a 2a 2a 20 20 20 20 20 20 20 46 4c 4f 41 54 20  .**       FLOAT 
8e20: 20 20 20 20 20 20 20 20 20 20 20 54 45 58 54 20             TEXT 
8e30: 20 20 20 20 20 20 20 20 20 20 20 41 53 43 49 49             ASCII
8e40: 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68   rendering of th
8e50: 65 20 66 6c 6f 61 74 0a 2a 2a 20 20 20 20 20 20  e float.**      
8e60: 20 46 4c 4f 41 54 20 20 20 20 20 20 20 20 20 20   FLOAT          
8e70: 20 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20    BLOB          
8e80: 20 20 53 61 6d 65 20 61 73 20 46 4c 4f 41 54 2d    Same as FLOAT-
8e90: 3e 54 45 58 54 0a 2a 2a 20 20 20 20 20 20 20 54  >TEXT.**       T
8ea0: 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20 20  EXT             
8eb0: 49 4e 54 45 47 45 52 20 20 20 20 20 20 20 20 20  INTEGER         
8ec0: 55 73 65 20 61 74 6f 69 28 29 0a 2a 2a 20 20 20  Use atoi().**   
8ed0: 20 20 20 20 54 45 58 54 20 20 20 20 20 20 20 20      TEXT        
8ee0: 20 20 20 20 20 46 4c 4f 41 54 20 20 20 20 20 20       FLOAT      
8ef0: 20 20 20 20 20 55 73 65 20 61 74 6f 66 28 29 0a       Use atof().
8f00: 2a 2a 20 20 20 20 20 20 20 54 45 58 54 20 20 20  **       TEXT   
8f10: 20 20 20 20 20 20 20 20 20 20 42 4c 4f 42 20 20            BLOB  
8f20: 20 20 20 20 20 20 20 20 20 20 4e 6f 20 63 68 61            No cha
8f30: 6e 67 65 0a 2a 2a 20 20 20 20 20 20 20 42 4c 4f  nge.**       BLO
8f40: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4e  B             IN
8f50: 54 45 47 45 52 20 20 20 20 20 20 20 20 20 43 6f  TEGER         Co
8f60: 6e 76 65 72 74 20 74 6f 20 54 45 58 54 20 74 68  nvert to TEXT th
8f70: 65 6e 20 75 73 65 20 61 74 6f 69 28 29 0a 2a 2a  en use atoi().**
8f80: 20 20 20 20 20 20 20 42 4c 4f 42 20 20 20 20 20         BLOB     
8f90: 20 20 20 20 20 20 20 20 46 4c 4f 41 54 20 20 20          FLOAT   
8fa0: 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 20          Convert 
8fb0: 74 6f 20 54 45 58 54 20 74 68 65 6e 20 75 73 65  to TEXT then use
8fc0: 20 61 74 6f 66 28 29 0a 2a 2a 20 20 20 20 20 20   atof().**      
8fd0: 20 42 4c 4f 42 20 20 20 20 20 20 20 20 20 20 20   BLOB           
8fe0: 20 20 54 45 58 54 20 20 20 20 20 20 20 20 20 20    TEXT          
8ff0: 20 20 41 64 64 20 61 20 5c 30 30 30 20 74 65 72    Add a \000 ter
9000: 6d 69 6e 61 74 6f 72 20 69 66 20 6e 65 65 64 65  minator if neede
9010: 64 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c  d.**.** The foll
9020: 6f 77 69 6e 67 20 61 63 63 65 73 73 20 72 6f 75  owing access rou
9030: 74 69 6e 65 73 20 61 72 65 20 70 72 6f 76 69 64  tines are provid
9040: 65 64 3a 0a 2a 2a 0a 2a 2a 20 5f 74 79 70 65 28  ed:.**.** _type(
9050: 29 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65  )     Return the
9060: 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68 65   datatype of the
9070: 20 72 65 73 75 6c 74 2e 20 20 54 68 69 73 20 69   result.  This i
9080: 73 20 6f 6e 65 20 6f 66 0a 2a 2a 20 20 20 20 20  s one of.**     
9090: 20 20 20 20 20 20 20 20 53 51 4c 49 54 45 5f 49          SQLITE_I
90a0: 4e 54 45 47 45 52 2c 20 53 51 4c 49 54 45 5f 46  NTEGER, SQLITE_F
90b0: 4c 4f 41 54 2c 20 53 51 4c 49 54 45 5f 54 45 58  LOAT, SQLITE_TEX
90c0: 54 2c 20 53 51 4c 49 54 45 5f 42 4c 4f 42 2c 0a  T, SQLITE_BLOB,.
90d0: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 6f  **             o
90e0: 72 20 53 51 4c 49 54 45 5f 4e 55 4c 4c 2e 0a 2a  r SQLITE_NULL..*
90f0: 2a 20 5f 62 6c 6f 62 28 29 20 20 20 20 20 52 65  * _blob()     Re
9100: 74 75 72 6e 20 74 68 65 20 76 61 6c 75 65 20 6f  turn the value o
9110: 66 20 61 20 42 4c 4f 42 2e 0a 2a 2a 20 5f 62 79  f a BLOB..** _by
9120: 74 65 73 28 29 20 20 20 20 52 65 74 75 72 6e 20  tes()    Return 
9130: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
9140: 74 65 73 20 69 6e 20 61 20 42 4c 4f 42 20 76 61  tes in a BLOB va
9150: 6c 75 65 20 6f 72 20 74 68 65 20 6e 75 6d 62 65  lue or the numbe
9160: 72 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  r.**            
9170: 20 6f 66 20 62 79 74 65 73 20 69 6e 20 61 20 54   of bytes in a T
9180: 45 58 54 20 76 61 6c 75 65 20 72 65 70 72 65 73  EXT value repres
9190: 65 6e 74 65 64 20 61 73 20 55 54 46 2d 38 2e 20  ented as UTF-8. 
91a0: 20 54 68 65 20 5c 30 30 30 0a 2a 2a 20 20 20 20   The \000.**    
91b0: 20 20 20 20 20 20 20 20 20 74 65 72 6d 69 6e 61           termina
91c0: 74 6f 72 20 69 73 20 69 6e 63 6c 75 64 65 64 20  tor is included 
91d0: 69 6e 20 74 68 65 20 62 79 74 65 20 63 6f 75 6e  in the byte coun
91e0: 74 20 66 6f 72 20 54 45 58 54 20 76 61 6c 75 65  t for TEXT value
91f0: 73 2e 0a 2a 2a 20 5f 62 79 74 65 73 31 36 28 29  s..** _bytes16()
9200: 20 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d    Return the num
9210: 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20  ber of bytes in 
9220: 61 20 42 4c 4f 42 20 76 61 6c 75 65 20 6f 72 20  a BLOB value or 
9230: 74 68 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 20 20  the number.**   
9240: 20 20 20 20 20 20 20 20 20 20 6f 66 20 62 79 74            of byt
9250: 65 73 20 69 6e 20 61 20 54 45 58 54 20 76 61 6c  es in a TEXT val
9260: 75 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 61  ue represented a
9270: 73 20 55 54 46 2d 31 36 2e 20 20 54 68 65 20 5c  s UTF-16.  The \
9280: 75 30 30 30 30 0a 2a 2a 20 20 20 20 20 20 20 20  u0000.**        
9290: 20 20 20 20 20 74 65 72 6d 69 6e 61 74 6f 72 20       terminator 
92a0: 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  is included in t
92b0: 68 65 20 62 79 74 65 20 63 6f 75 6e 74 20 66 6f  he byte count fo
92c0: 72 20 54 45 58 54 20 76 61 6c 75 65 73 2e 0a 2a  r TEXT values..*
92d0: 2a 20 5f 64 6f 75 62 6c 65 28 29 20 20 20 52 65  * _double()   Re
92e0: 74 75 72 6e 20 61 20 46 4c 4f 41 54 20 76 61 6c  turn a FLOAT val
92f0: 75 65 2e 0a 2a 2a 20 5f 69 6e 74 28 29 20 20 20  ue..** _int()   
9300: 20 20 20 52 65 74 75 72 6e 20 61 6e 20 49 4e 54     Return an INT
9310: 45 47 45 52 20 76 61 6c 75 65 20 69 6e 20 74 68  EGER value in th
9320: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 27  e host computer'
9330: 73 20 6e 61 74 69 76 65 0a 2a 2a 20 20 20 20 20  s native.**     
9340: 20 20 20 20 20 20 20 20 69 6e 74 65 67 65 72 20          integer 
9350: 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 2e 20  representation. 
9360: 20 54 68 69 73 20 6d 69 67 68 74 20 62 65 20 65   This might be e
9370: 69 74 68 65 72 20 61 20 33 32 2d 20 6f 72 20 36  ither a 32- or 6
9380: 34 2d 62 69 74 0a 2a 2a 20 20 20 20 20 20 20 20  4-bit.**        
9390: 20 20 20 20 20 69 6e 74 65 67 65 72 20 64 65 70       integer dep
93a0: 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 68 6f  ending on the ho
93b0: 73 74 2e 0a 2a 2a 20 5f 69 6e 74 36 34 28 29 20  st..** _int64() 
93c0: 20 20 20 52 65 74 75 72 6e 20 61 6e 20 49 4e 54     Return an INT
93d0: 45 47 45 52 20 76 61 6c 75 65 20 61 73 20 61 20  EGER value as a 
93e0: 36 34 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e  64-bit signed in
93f0: 74 65 67 65 72 2e 0a 2a 2a 20 5f 74 65 78 74 28  teger..** _text(
9400: 29 20 20 20 20 20 52 65 74 75 72 6e 20 74 68 65  )     Return the
9410: 20 76 61 6c 75 65 20 61 73 20 55 54 46 2d 38 20   value as UTF-8 
9420: 74 65 78 74 2e 0a 2a 2a 20 5f 74 65 78 74 31 36  text..** _text16
9430: 28 29 20 20 20 52 65 74 75 72 6e 20 74 68 65 20  ()   Return the 
9440: 76 61 6c 75 65 20 61 73 20 55 54 46 2d 31 36 20  value as UTF-16 
9450: 74 65 78 74 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76  text..*/.const v
9460: 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  oid *sqlite3_col
9470: 75 6d 6e 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33  umn_blob(sqlite3
9480: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
9490: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
94a0: 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 73 71 6c 69  olumn_bytes(sqli
94b0: 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
94c0: 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  Col);.int sqlite
94d0: 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36  3_column_bytes16
94e0: 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
94f0: 69 6e 74 20 69 43 6f 6c 29 3b 0a 64 6f 75 62 6c  int iCol);.doubl
9500: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
9510: 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f  _double(sqlite3_
9520: 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29  stmt*, int iCol)
9530: 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  ;.int sqlite3_co
9540: 6c 75 6d 6e 5f 69 6e 74 28 73 71 6c 69 74 65 33  lumn_int(sqlite3
9550: 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
9560: 29 3b 0a 73 71 6c 69 74 65 5f 69 6e 74 36 34 20  );.sqlite_int64 
9570: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
9580: 6e 74 36 34 28 73 71 6c 69 74 65 33 5f 73 74 6d  nt64(sqlite3_stm
9590: 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 63  t*, int iCol);.c
95a0: 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68  onst unsigned ch
95b0: 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ar *sqlite3_colu
95c0: 6d 6e 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f  mn_text(sqlite3_
95d0: 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29  stmt*, int iCol)
95e0: 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  ;.const void *sq
95f0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
9600: 74 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  t16(sqlite3_stmt
9610: 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e  *, int iCol);.in
9620: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
9630: 5f 74 79 70 65 28 73 71 6c 69 74 65 33 5f 73 74  _type(sqlite3_st
9640: 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a  mt*, int iCol);.
9650: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  ./*.** The sqlit
9660: 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 66 75  e3_finalize() fu
9670: 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64  nction is called
9680: 20 74 6f 20 64 65 6c 65 74 65 20 61 20 63 6f 6d   to delete a com
9690: 70 69 6c 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61  piled.** SQL sta
96a0: 74 65 6d 65 6e 74 20 6f 62 74 61 69 6e 65 64 20  tement obtained 
96b0: 62 79 20 61 20 70 72 65 76 69 6f 75 73 20 63 61  by a previous ca
96c0: 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 70 72  ll to sqlite3_pr
96d0: 65 70 61 72 65 28 29 0a 2a 2a 20 6f 72 20 73 71  epare().** or sq
96e0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
96f0: 29 2e 20 49 66 20 74 68 65 20 73 74 61 74 65 6d  ). If the statem
9700: 65 6e 74 20 77 61 73 20 65 78 65 63 75 74 65 64  ent was executed
9710: 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 6f   successfully, o
9720: 72 0a 2a 2a 20 6e 6f 74 20 65 78 65 63 75 74 65  r.** not execute
9730: 64 20 61 74 20 61 6c 6c 2c 20 74 68 65 6e 20 53  d at all, then S
9740: 51 4c 49 54 45 5f 4f 4b 20 69 73 20 72 65 74 75  QLITE_OK is retu
9750: 72 6e 65 64 2e 20 49 66 20 65 78 65 63 75 74 69  rned. If executi
9760: 6f 6e 20 6f 66 20 74 68 65 0a 2a 2a 20 73 74 61  on of the.** sta
9770: 74 65 6d 65 6e 74 20 66 61 69 6c 65 64 20 74 68  tement failed th
9780: 65 6e 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65  en an error code
9790: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 0a 2a   is returned. .*
97a0: 2a 0a 2a 2a 20 54 68 69 73 20 72 6f 75 74 69 6e  *.** This routin
97b0: 65 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20  e can be called 
97c0: 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 64 75 72  at any point dur
97d0: 69 6e 67 20 74 68 65 20 65 78 65 63 75 74 69 6f  ing the executio
97e0: 6e 20 6f 66 20 74 68 65 0a 2a 2a 20 76 69 72 74  n of the.** virt
97f0: 75 61 6c 20 6d 61 63 68 69 6e 65 2e 20 20 49 66  ual machine.  If
9800: 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d 61 63   the virtual mac
9810: 68 69 6e 65 20 68 61 73 20 6e 6f 74 20 63 6f 6d  hine has not com
9820: 70 6c 65 74 65 64 20 65 78 65 63 75 74 69 6f 6e  pleted execution
9830: 0a 2a 2a 20 77 68 65 6e 20 74 68 69 73 20 72 6f  .** when this ro
9840: 75 74 69 6e 65 20 69 73 20 63 61 6c 6c 65 64 2c  utine is called,
9850: 20 74 68 61 74 20 69 73 20 6c 69 6b 65 20 65 6e   that is like en
9860: 63 6f 75 6e 74 65 72 69 6e 67 20 61 6e 20 65 72  countering an er
9870: 72 6f 72 20 6f 72 0a 2a 2a 20 61 6e 20 69 6e 74  ror or.** an int
9880: 65 72 72 75 70 74 2e 20 20 28 53 65 65 20 73 71  errupt.  (See sq
9890: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
98a0: 29 2e 29 20 20 49 6e 63 6f 6d 70 6c 65 74 65 20  ).)  Incomplete 
98b0: 75 70 64 61 74 65 73 20 6d 61 79 20 62 65 0a 2a  updates may be.*
98c0: 2a 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 6e  * rolled back an
98d0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63  d transactions c
98e0: 61 6e 63 65 6c 6c 65 64 2c 20 20 64 65 70 65 6e  ancelled,  depen
98f0: 64 69 6e 67 20 6f 6e 20 74 68 65 20 63 69 72 63  ding on the circ
9900: 75 6d 73 74 61 6e 63 65 73 2c 0a 2a 2a 20 61 6e  umstances,.** an
9910: 64 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 64  d the result cod
9920: 65 20 72 65 74 75 72 6e 65 64 20 77 69 6c 6c 20  e returned will 
9930: 62 65 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 2e  be SQLITE_ABORT.
9940: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
9950: 66 69 6e 61 6c 69 7a 65 28 73 71 6c 69 74 65 33  finalize(sqlite3
9960: 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a  _stmt *pStmt);..
9970: 2f 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  /*.** The sqlite
9980: 33 5f 72 65 73 65 74 28 29 20 66 75 6e 63 74 69  3_reset() functi
9990: 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 74 6f 20  on is called to 
99a0: 72 65 73 65 74 20 61 20 63 6f 6d 70 69 6c 65 64  reset a compiled
99b0: 20 53 51 4c 0a 2a 2a 20 73 74 61 74 65 6d 65 6e   SQL.** statemen
99c0: 74 20 6f 62 74 61 69 6e 65 64 20 62 79 20 61 20  t obtained by a 
99d0: 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f  previous call to
99e0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
99f0: 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  () or.** sqlite3
9a00: 5f 70 72 65 70 61 72 65 31 36 28 29 20 62 61 63  _prepare16() bac
9a10: 6b 20 74 6f 20 69 74 27 73 20 69 6e 69 74 69 61  k to it's initia
9a20: 6c 20 73 74 61 74 65 2c 20 72 65 61 64 79 20 74  l state, ready t
9a30: 6f 20 62 65 20 72 65 2d 65 78 65 63 75 74 65 64  o be re-executed
9a40: 2e 0a 2a 2a 20 41 6e 79 20 53 51 4c 20 73 74 61  ..** Any SQL sta
9a50: 74 65 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  tement variables
9a60: 20 74 68 61 74 20 68 61 64 20 76 61 6c 75 65 73   that had values
9a70: 20 62 6f 75 6e 64 20 74 6f 20 74 68 65 6d 20 75   bound to them u
9a80: 73 69 6e 67 0a 2a 2a 20 74 68 65 20 73 71 6c 69  sing.** the sqli
9a90: 74 65 33 5f 62 69 6e 64 5f 2a 28 29 20 41 50 49  te3_bind_*() API
9aa0: 20 72 65 74 61 69 6e 20 74 68 65 69 72 20 76 61   retain their va
9ab0: 6c 75 65 73 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  lues..*/.int sql
9ac0: 69 74 65 33 5f 72 65 73 65 74 28 73 71 6c 69 74  ite3_reset(sqlit
9ad0: 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b  e3_stmt *pStmt);
9ae0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 66 6f 6c 6c  ../*.** The foll
9af0: 6f 77 69 6e 67 20 74 77 6f 20 66 75 6e 63 74 69  owing two functi
9b00: 6f 6e 73 20 61 72 65 20 75 73 65 64 20 74 6f 20  ons are used to 
9b10: 61 64 64 20 75 73 65 72 20 66 75 6e 63 74 69 6f  add user functio
9b20: 6e 73 20 6f 72 20 61 67 67 72 65 67 61 74 65 73  ns or aggregates
9b30: 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  .** implemented 
9b40: 69 6e 20 43 20 74 6f 20 74 68 65 20 53 51 4c 20  in C to the SQL 
9b50: 6c 61 6e 67 61 75 67 65 20 69 6e 74 65 72 70 72  langauge interpr
9b60: 65 74 65 64 20 62 79 20 53 51 4c 69 74 65 2e 20  eted by SQLite. 
9b70: 54 68 65 0a 2a 2a 20 64 69 66 66 65 72 65 6e 63  The.** differenc
9b80: 65 20 6f 6e 6c 79 20 62 65 74 77 65 65 6e 20 74  e only between t
9b90: 68 65 20 74 77 6f 20 69 73 20 74 68 61 74 20 74  he two is that t
9ba0: 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
9bb0: 74 65 72 2c 20 74 68 65 0a 2a 2a 20 6e 61 6d 65  ter, the.** name
9bc0: 20 6f 66 20 74 68 65 20 28 73 63 61 6c 61 72 29   of the (scalar)
9bd0: 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67   function or agg
9be0: 72 65 67 61 74 65 2c 20 69 73 20 65 6e 63 6f 64  regate, is encod
9bf0: 65 64 20 69 6e 20 55 54 46 2d 38 20 66 6f 72 0a  ed in UTF-8 for.
9c00: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  ** sqlite3_creat
9c10: 65 5f 66 75 6e 63 74 69 6f 6e 28 29 20 61 6e 64  e_function() and
9c20: 20 55 54 46 2d 31 36 20 66 6f 72 20 73 71 6c 69   UTF-16 for sqli
9c30: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
9c40: 69 6f 6e 31 36 28 29 2e 0a 2a 2a 0a 2a 2a 20 54  ion16()..**.** T
9c50: 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
9c60: 74 20 69 73 20 74 68 65 20 64 61 74 61 62 61 73  t is the databas
9c70: 65 20 68 61 6e 64 6c 65 20 74 68 61 74 20 74 68  e handle that th
9c80: 65 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 20 6f  e new function o
9c90: 72 0a 2a 2a 20 61 67 67 72 65 67 61 74 65 20 69  r.** aggregate i
9ca0: 73 20 74 6f 20 62 65 20 61 64 64 65 64 20 74 6f  s to be added to
9cb0: 2e 20 49 66 20 61 20 73 69 6e 67 6c 65 20 70 72  . If a single pr
9cc0: 6f 67 72 61 6d 20 75 73 65 73 20 6d 6f 72 65 20  ogram uses more 
9cd0: 74 68 61 6e 20 6f 6e 65 0a 2a 2a 20 64 61 74 61  than one.** data
9ce0: 62 61 73 65 20 68 61 6e 64 6c 65 20 69 6e 74 65  base handle inte
9cf0: 72 6e 61 6c 6c 79 2c 20 74 68 65 6e 20 75 73 65  rnally, then use
9d00: 72 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 61  r functions or a
9d10: 67 67 72 65 67 61 74 65 73 20 6d 75 73 74 20 0a  ggregates must .
9d20: 2a 2a 20 62 65 20 61 64 64 65 64 20 69 6e 64 69  ** be added indi
9d30: 76 69 64 75 61 6c 6c 79 20 74 6f 20 65 61 63 68  vidually to each
9d40: 20 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   database handle
9d50: 20 77 69 74 68 20 77 68 69 63 68 20 74 68 65 79   with which they
9d60: 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 75 73 65 64   will be.** used
9d70: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 68 69 72  ..**.** The thir
9d80: 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  d parameter is t
9d90: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
9da0: 75 6d 65 6e 74 73 20 74 68 61 74 20 74 68 65 20  uments that the 
9db0: 66 75 6e 63 74 69 6f 6e 20 6f 72 0a 2a 2a 20 61  function or.** a
9dc0: 67 67 72 65 67 61 74 65 20 74 61 6b 65 73 2e 20  ggregate takes. 
9dd0: 49 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  If this paramete
9de0: 72 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74  r is negative, t
9df0: 68 65 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  hen the function
9e00: 20 6f 72 0a 2a 2a 20 61 67 67 72 65 67 61 74 65   or.** aggregate
9e10: 20 6d 61 79 20 74 61 6b 65 20 61 6e 79 20 6e 75   may take any nu
9e20: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
9e30: 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6f 75  s..**.** The fou
9e40: 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  rth parameter is
9e50: 20 6f 6e 65 20 6f 66 20 53 51 4c 49 54 45 5f 55   one of SQLITE_U
9e60: 54 46 2a 20 76 61 6c 75 65 73 20 64 65 66 69 6e  TF* values defin
9e70: 65 64 20 62 65 6c 6f 77 2c 0a 2a 2a 20 69 6e 64  ed below,.** ind
9e80: 69 63 61 74 69 6e 67 20 74 68 65 20 65 6e 63 6f  icating the enco
9e90: 64 69 6e 67 20 74 68 61 74 20 74 68 65 20 66 75  ding that the fu
9ea0: 6e 63 74 69 6f 6e 20 69 73 20 6d 6f 73 74 20 6c  nction is most l
9eb0: 69 6b 65 6c 79 20 74 6f 20 68 61 6e 64 6c 65 0a  ikely to handle.
9ec0: 2a 2a 20 76 61 6c 75 65 73 20 69 6e 2e 20 20 54  ** values in.  T
9ed0: 68 69 73 20 64 6f 65 73 20 6e 6f 74 20 63 68 61  his does not cha
9ee0: 6e 67 65 20 74 68 65 20 62 65 68 61 76 69 6f 75  nge the behaviou
9ef0: 72 20 6f 66 20 74 68 65 20 70 72 6f 67 72 61 6d  r of the program
9f00: 6d 69 6e 67 0a 2a 2a 20 69 6e 74 65 72 66 61 63  ming.** interfac
9f10: 65 2e 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74  e. However, if t
9f20: 77 6f 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74  wo versions of t
9f30: 68 65 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e  he same function
9f40: 20 61 72 65 20 72 65 67 69 73 74 65 72 65 64 0a   are registered.
9f50: 2a 2a 20 77 69 74 68 20 64 69 66 66 65 72 65 6e  ** with differen
9f60: 74 20 65 6e 63 6f 64 69 6e 67 20 76 61 6c 75 65  t encoding value
9f70: 73 2c 20 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65  s, SQLite invoke
9f80: 73 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6c 69  s the version li
9f90: 6b 65 6c 79 20 74 6f 0a 2a 2a 20 6d 69 6e 69 6d  kely to.** minim
9fa0: 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20  ize conversions 
9fb0: 62 65 74 77 65 65 6e 20 74 65 78 74 20 65 6e 63  between text enc
9fc0: 6f 64 69 6e 67 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  odings..**.** Th
9fd0: 65 20 73 65 76 65 6e 74 68 2c 20 65 69 67 68 74  e seventh, eight
9fe0: 68 20 61 6e 64 20 6e 69 6e 74 68 20 70 61 72 61  h and ninth para
9ff0: 6d 65 74 65 72 73 2c 20 78 46 75 6e 63 2c 20 78  meters, xFunc, x
a000: 53 74 65 70 20 61 6e 64 20 78 46 69 6e 61 6c 2c  Step and xFinal,
a010: 20 61 72 65 0a 2a 2a 20 70 6f 69 6e 74 65 72 73   are.** pointers
a020: 20 74 6f 20 75 73 65 72 20 69 6d 70 6c 65 6d 65   to user impleme
a030: 6e 74 65 64 20 43 20 66 75 6e 63 74 69 6f 6e 73  nted C functions
a040: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 20   that implement 
a050: 74 68 65 20 75 73 65 72 0a 2a 2a 20 66 75 6e 63  the user.** func
a060: 74 69 6f 6e 20 6f 72 20 61 67 67 72 65 67 61 74  tion or aggregat
a070: 65 2e 20 41 20 73 63 61 6c 61 72 20 66 75 6e 63  e. A scalar func
a080: 74 69 6f 6e 20 72 65 71 75 69 72 65 73 20 61 6e  tion requires an
a090: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
a0a0: 6f 66 0a 2a 2a 20 74 68 65 20 78 46 75 6e 63 20  of.** the xFunc 
a0b0: 63 61 6c 6c 62 61 63 6b 20 6f 6e 6c 79 2c 20 4e  callback only, N
a0c0: 55 4c 4c 20 70 6f 69 6e 74 65 72 73 20 73 68 6f  ULL pointers sho
a0d0: 75 6c 64 20 62 65 20 70 61 73 73 65 64 20 61 73  uld be passed as
a0e0: 20 74 68 65 20 78 53 74 65 70 0a 2a 2a 20 61 6e   the xStep.** an
a0f0: 64 20 78 46 69 6e 61 6c 20 70 61 72 61 6d 65 74  d xFinal paramet
a100: 65 72 73 2e 20 41 6e 20 61 67 67 72 65 67 61 74  ers. An aggregat
a110: 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 71 75 69  e function requi
a120: 72 65 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74  res an implement
a130: 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 78 53 74 65  ation.** of xSte
a140: 70 20 61 6e 64 20 78 46 69 6e 61 6c 2c 20 62 75  p and xFinal, bu
a150: 74 20 4e 55 4c 4c 20 73 68 6f 75 6c 64 20 62 65  t NULL should be
a160: 20 70 61 73 73 65 64 20 66 6f 72 20 78 46 75 6e   passed for xFun
a170: 63 2e 20 54 6f 20 64 65 6c 65 74 65 20 61 6e 0a  c. To delete an.
a180: 2a 2a 20 65 78 69 73 74 69 6e 67 20 75 73 65 72  ** existing user
a190: 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 61 67 67   function or agg
a1a0: 72 65 67 61 74 65 2c 20 70 61 73 73 20 4e 55 4c  regate, pass NUL
a1b0: 4c 20 66 6f 72 20 61 6c 6c 20 74 68 72 65 65 20  L for all three 
a1c0: 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c  function.** call
a1d0: 62 61 63 6b 2e 20 53 70 65 63 69 66 79 69 6e 67  back. Specifying
a1e0: 20 61 6e 20 69 6e 63 6f 6e 73 74 65 6e 74 20 73   an inconstent s
a1f0: 65 74 20 6f 66 20 63 61 6c 6c 62 61 63 6b 20 76  et of callback v
a200: 61 6c 75 65 73 2c 20 73 75 63 68 20 61 73 20 61  alues, such as a
a210: 6e 0a 2a 2a 20 78 46 75 6e 63 20 61 6e 64 20 61  n.** xFunc and a
a220: 6e 20 78 46 69 6e 61 6c 2c 20 6f 72 20 61 6e 20  n xFinal, or an 
a230: 78 53 74 65 70 20 62 75 74 20 6e 6f 20 78 46 69  xStep but no xFi
a240: 6e 61 6c 2c 20 53 51 4c 49 54 45 5f 45 52 52 4f  nal, SQLITE_ERRO
a250: 52 20 69 73 0a 2a 2a 20 72 65 74 75 72 6e 65 64  R is.** returned
a260: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
a270: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
a280: 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 2c 0a 20  (.  sqlite3 *,. 
a290: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 75   const char *zFu
a2a0: 6e 63 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69 6e  nctionName,.  in
a2b0: 74 20 6e 41 72 67 2c 0a 20 20 69 6e 74 20 65 54  t nArg,.  int eT
a2c0: 65 78 74 52 65 70 2c 0a 20 20 76 6f 69 64 2a 2c  extRep,.  void*,
a2d0: 0a 20 20 76 6f 69 64 20 28 2a 78 46 75 6e 63 29  .  void (*xFunc)
a2e0: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
a2f0: 2a 2c 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76 61  *,int,sqlite3_va
a300: 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20 28  lue**),.  void (
a310: 2a 78 53 74 65 70 29 28 73 71 6c 69 74 65 33 5f  *xStep)(sqlite3_
a320: 63 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71 6c  context*,int,sql
a330: 69 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a 20  ite3_value**),. 
a340: 20 76 6f 69 64 20 28 2a 78 46 69 6e 61 6c 29 28   void (*xFinal)(
a350: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a  sqlite3_context*
a360: 29 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  ).);.int sqlite3
a370: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
a380: 31 36 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a  16(.  sqlite3*,.
a390: 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 46    const void *zF
a3a0: 75 6e 63 74 69 6f 6e 4e 61 6d 65 2c 0a 20 20 69  unctionName,.  i
a3b0: 6e 74 20 6e 41 72 67 2c 0a 20 20 69 6e 74 20 65  nt nArg,.  int e
a3c0: 54 65 78 74 52 65 70 2c 0a 20 20 76 6f 69 64 2a  TextRep,.  void*
a3d0: 2c 0a 20 20 76 6f 69 64 20 28 2a 78 46 75 6e 63  ,.  void (*xFunc
a3e0: 29 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  )(sqlite3_contex
a3f0: 74 2a 2c 69 6e 74 2c 73 71 6c 69 74 65 33 5f 76  t*,int,sqlite3_v
a400: 61 6c 75 65 2a 2a 29 2c 0a 20 20 76 6f 69 64 20  alue**),.  void 
a410: 28 2a 78 53 74 65 70 29 28 73 71 6c 69 74 65 33  (*xStep)(sqlite3
a420: 5f 63 6f 6e 74 65 78 74 2a 2c 69 6e 74 2c 73 71  _context*,int,sq
a430: 6c 69 74 65 33 5f 76 61 6c 75 65 2a 2a 29 2c 0a  lite3_value**),.
a440: 20 20 76 6f 69 64 20 28 2a 78 46 69 6e 61 6c 29    void (*xFinal)
a450: 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74  (sqlite3_context
a460: 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  *).);../*.** The
a470: 20 6e 65 78 74 20 72 6f 75 74 69 6e 65 20 72 65   next routine re
a480: 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
a490: 20 6f 66 20 63 61 6c 6c 73 20 74 6f 20 78 53 74   of calls to xSt
a4a0: 65 70 20 66 6f 72 20 61 20 70 61 72 74 69 63 75  ep for a particu
a4b0: 6c 61 72 0a 2a 2a 20 61 67 67 72 65 67 61 74 65  lar.** aggregate
a4c0: 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e   function instan
a4d0: 63 65 2e 20 20 54 68 65 20 63 75 72 72 65 6e 74  ce.  The current
a4e0: 20 63 61 6c 6c 20 74 6f 20 78 53 74 65 70 20 63   call to xStep c
a4f0: 6f 75 6e 74 73 20 73 6f 20 74 68 69 73 0a 2a 2a  ounts so this.**
a500: 20 72 6f 75 74 69 6e 65 20 61 6c 77 61 79 73 20   routine always 
a510: 72 65 74 75 72 6e 73 20 61 74 20 6c 65 61 73 74  returns at least
a520: 20 31 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74   1..*/.int sqlit
a530: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
a540: 6e 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  nt(sqlite3_conte
a550: 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  xt*);../*.** The
a560: 20 6e 65 78 74 20 67 72 6f 75 70 20 6f 66 20 72   next group of r
a570: 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73 20  outines returns 
a580: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
a590: 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 0a  t parameters to.
a5a0: 2a 2a 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65  ** a user-define
a5b0: 64 20 66 75 6e 63 74 69 6f 6e 2e 20 20 46 75 6e  d function.  Fun
a5c0: 63 74 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  ction implementa
a5d0: 74 69 6f 6e 73 20 75 73 65 20 74 68 65 73 65 20  tions use these 
a5e0: 72 6f 75 74 69 6e 65 73 0a 2a 2a 20 74 6f 20 61  routines.** to a
a5f0: 63 63 65 73 73 20 74 68 65 69 72 20 70 61 72 61  ccess their para
a600: 6d 65 74 65 72 73 2e 20 20 54 68 65 73 65 20 72  meters.  These r
a610: 6f 75 74 69 6e 65 73 20 61 72 65 20 74 68 65 20  outines are the 
a620: 73 61 6d 65 20 61 73 20 74 68 65 0a 2a 2a 20 73  same as the.** s
a630: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 2a 20  qlite3_column_* 
a640: 72 6f 75 74 69 6e 65 73 20 65 78 63 65 70 74 20  routines except 
a650: 74 68 61 74 20 74 68 65 73 65 20 72 6f 75 74 69  that these routi
a660: 6e 65 73 20 74 61 6b 65 20 61 20 73 69 6e 67 6c  nes take a singl
a670: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c  e.** sqlite3_val
a680: 75 65 2a 20 70 6f 69 6e 74 65 72 20 69 6e 73 74  ue* pointer inst
a690: 65 61 64 20 6f 66 20 61 6e 20 73 71 6c 69 74 65  ead of an sqlite
a6a0: 33 5f 73 74 6d 74 2a 20 61 6e 64 20 61 6e 20 69  3_stmt* and an i
a6b0: 6e 74 65 67 65 72 0a 2a 2a 20 63 6f 6c 75 6d 6e  nteger.** column
a6c0: 20 6e 75 6d 62 65 72 2e 0a 2a 2f 0a 63 6f 6e 73   number..*/.cons
a6d0: 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  t void *sqlite3_
a6e0: 76 61 6c 75 65 5f 62 6c 6f 62 28 73 71 6c 69 74  value_blob(sqlit
a6f0: 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20  e3_value*);.int 
a700: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
a710: 74 65 73 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  tes(sqlite3_valu
a720: 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  e*);.int sqlite3
a730: 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28 73  _value_bytes16(s
a740: 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a  qlite3_value*);.
a750: 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76  double sqlite3_v
a760: 61 6c 75 65 5f 64 6f 75 62 6c 65 28 73 71 6c 69  alue_double(sqli
a770: 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 69 6e 74  te3_value*);.int
a780: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
a790: 6e 74 28 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt(sqlite3_value
a7a0: 2a 29 3b 0a 73 71 6c 69 74 65 5f 69 6e 74 36 34  *);.sqlite_int64
a7b0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
a7c0: 6e 74 36 34 28 73 71 6c 69 74 65 33 5f 76 61 6c  nt64(sqlite3_val
a7d0: 75 65 2a 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69  ue*);.const unsi
a7e0: 67 6e 65 64 20 63 68 61 72 20 2a 73 71 6c 69 74  gned char *sqlit
a7f0: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 73 71  e3_value_text(sq
a800: 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 63  lite3_value*);.c
a810: 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
a820: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 28  e3_value_text16(
a830: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
a840: 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
a850: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
a860: 36 6c 65 28 73 71 6c 69 74 65 33 5f 76 61 6c 75  6le(sqlite3_valu
a870: 65 2a 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20  e*);.const void 
a880: 2a 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74  *sqlite3_value_t
a890: 65 78 74 31 36 62 65 28 73 71 6c 69 74 65 33 5f  ext16be(sqlite3_
a8a0: 76 61 6c 75 65 2a 29 3b 0a 69 6e 74 20 73 71 6c  value*);.int sql
a8b0: 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28  ite3_value_type(
a8c0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2a 29 3b  sqlite3_value*);
a8d0: 0a 0a 2f 2a 0a 2a 2a 20 41 67 67 72 65 67 61 74  ../*.** Aggregat
a8e0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 75 73 65 20  e functions use 
a8f0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f  the following ro
a900: 75 74 69 6e 65 20 74 6f 20 61 6c 6c 6f 63 61 74  utine to allocat
a910: 65 0a 2a 2a 20 61 20 73 74 72 75 63 74 75 72 65  e.** a structure
a920: 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 74 68 65   for storing the
a930: 69 72 20 73 74 61 74 65 2e 20 20 54 68 65 20 66  ir state.  The f
a940: 69 72 73 74 20 74 69 6d 65 20 74 68 69 73 20 72  irst time this r
a950: 6f 75 74 69 6e 65 0a 2a 2a 20 69 73 20 63 61 6c  outine.** is cal
a960: 6c 65 64 20 66 6f 72 20 61 20 70 61 72 74 69 63  led for a partic
a970: 75 6c 61 72 20 61 67 67 72 65 67 61 74 65 2c 20  ular aggregate, 
a980: 61 20 6e 65 77 20 73 74 72 75 63 74 75 72 65 20  a new structure 
a990: 6f 66 20 73 69 7a 65 20 6e 42 79 74 65 73 0a 2a  of size nBytes.*
a9a0: 2a 20 69 73 20 61 6c 6c 6f 63 61 74 65 64 2c 20  * is allocated, 
a9b0: 7a 65 72 6f 65 64 2c 20 61 6e 64 20 72 65 74 75  zeroed, and retu
a9c0: 72 6e 65 64 2e 20 20 4f 6e 20 73 75 62 73 65 71  rned.  On subseq
a9d0: 75 65 6e 74 20 63 61 6c 6c 73 20 28 66 6f 72 20  uent calls (for 
a9e0: 74 68 65 0a 2a 2a 20 73 61 6d 65 20 61 67 67 72  the.** same aggr
a9f0: 65 67 61 74 65 20 69 6e 73 74 61 6e 63 65 29 20  egate instance) 
aa00: 74 68 65 20 73 61 6d 65 20 62 75 66 66 65 72 20  the same buffer 
aa10: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68  is returned.  Th
aa20: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
aa30: 0a 2a 2a 20 6f 66 20 74 68 65 20 61 67 67 72 65  .** of the aggre
aa40: 67 61 74 65 20 63 61 6e 20 75 73 65 20 74 68 65  gate can use the
aa50: 20 72 65 74 75 72 6e 65 64 20 62 75 66 66 65 72   returned buffer
aa60: 20 74 6f 20 61 63 63 75 6d 75 6c 61 74 65 20 64   to accumulate d
aa70: 61 74 61 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 62  ata..**.** The b
aa80: 75 66 66 65 72 20 61 6c 6c 6f 63 61 74 65 64 20  uffer allocated 
aa90: 69 73 20 66 72 65 65 64 20 61 75 74 6f 6d 61 74  is freed automat
aaa0: 69 63 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65  ically by SQLite
aab0: 2e 0a 2a 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74  ..*/.void *sqlit
aac0: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e  e3_aggregate_con
aad0: 74 65 78 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e  text(sqlite3_con
aae0: 74 65 78 74 2a 2c 20 69 6e 74 20 6e 42 79 74 65  text*, int nByte
aaf0: 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 70  s);../*.** The p
ab00: 55 73 65 72 44 61 74 61 20 70 61 72 61 6d 65 74  UserData paramet
ab10: 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
ab20: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
ab30: 6e 28 29 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74  n() and.** sqlit
ab40: 65 33 5f 63 72 65 61 74 65 5f 61 67 67 72 65 67  e3_create_aggreg
ab50: 61 74 65 28 29 20 72 6f 75 74 69 6e 65 73 20 75  ate() routines u
ab60: 73 65 64 20 74 6f 20 72 65 67 69 73 74 65 72 20  sed to register 
ab70: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 0a 2a  user functions.*
ab80: 2a 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74  * is available t
ab90: 6f 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  o the implementa
aba0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 75 6e 63  tion of the func
abb0: 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 69 73 0a  tion using this.
abc0: 2a 2a 20 63 61 6c 6c 2e 0a 2a 2f 0a 76 6f 69 64  ** call..*/.void
abd0: 20 2a 73 71 6c 69 74 65 33 5f 75 73 65 72 5f 64   *sqlite3_user_d
abe0: 61 74 61 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  ata(sqlite3_cont
abf0: 65 78 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68  ext*);../*.** Th
ac00: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 77 6f 20  e following two 
ac10: 66 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20 62 65  functions may be
ac20: 20 75 73 65 64 20 62 79 20 73 63 61 6c 61 72 20   used by scalar 
ac30: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 74  user functions t
ac40: 6f 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 20 6d  o.** associate m
ac50: 65 74 61 2d 64 61 74 61 20 77 69 74 68 20 61 72  eta-data with ar
ac60: 67 75 6d 65 6e 74 20 76 61 6c 75 65 73 2e 20 49  gument values. I
ac70: 66 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  f the same value
ac80: 20 69 73 20 70 61 73 73 65 64 20 74 6f 0a 2a 2a   is passed to.**
ac90: 20 6d 75 6c 74 69 70 6c 65 20 69 6e 76 6f 63 61   multiple invoca
aca0: 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 75 73 65  tions of the use
acb0: 72 2d 66 75 6e 63 74 69 6f 6e 20 64 75 72 69 6e  r-function durin
acc0: 67 20 71 75 65 72 79 20 65 78 65 63 75 74 69 6f  g query executio
acd0: 6e 2c 20 75 6e 64 65 72 0a 2a 2a 20 73 6f 6d 65  n, under.** some
ace0: 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 74   circumstances t
acf0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 6d 65  he associated me
ad00: 74 61 2d 64 61 74 61 20 6d 61 79 20 62 65 20 70  ta-data may be p
ad10: 72 65 73 65 72 76 65 64 2e 20 54 68 69 73 20 6d  reserved. This m
ad20: 61 79 0a 2a 2a 20 62 65 20 75 73 65 64 2c 20 66  ay.** be used, f
ad30: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 6f 20 61  or example, to a
ad40: 64 64 20 61 20 72 65 67 75 6c 61 72 2d 65 78 70  dd a regular-exp
ad50: 72 65 73 73 69 6f 6e 20 6d 61 74 63 68 69 6e 67  ression matching
ad60: 20 73 63 61 6c 61 72 0a 2a 2a 20 66 75 6e 63 74   scalar.** funct
ad70: 69 6f 6e 2e 20 54 68 65 20 63 6f 6d 70 69 6c 65  ion. The compile
ad80: 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  d version of the
ad90: 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73   regular express
ada0: 69 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73  ion is stored as
adb0: 0a 2a 2a 20 6d 65 74 61 2d 64 61 74 61 20 61 73  .** meta-data as
adc0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
add0: 65 20 53 51 4c 20 76 61 6c 75 65 20 70 61 73 73  e SQL value pass
ade0: 65 64 20 61 73 20 74 68 65 20 72 65 67 75 6c 61  ed as the regula
adf0: 72 20 65 78 70 72 65 73 73 69 6f 6e 0a 2a 2a 20  r expression.** 
ae00: 70 61 74 74 65 72 6e 2e 0a 2a 2a 0a 2a 2a 20 43  pattern..**.** C
ae10: 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 67  alling sqlite3_g
ae20: 65 74 5f 61 75 78 64 61 74 61 28 29 20 72 65 74  et_auxdata() ret
ae30: 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
ae40: 6f 20 74 68 65 20 6d 65 74 61 20 64 61 74 61 0a  o the meta data.
ae50: 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ** associated wi
ae60: 74 68 20 74 68 65 20 4e 74 68 20 61 72 67 75 6d  th the Nth argum
ae70: 65 6e 74 20 76 61 6c 75 65 20 74 6f 20 74 68 65  ent value to the
ae80: 20 63 75 72 72 65 6e 74 20 75 73 65 72 20 66 75   current user fu
ae90: 6e 63 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 2c 20  nction.** call, 
aea0: 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 73  where N is the s
aeb0: 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2e  econd parameter.
aec0: 20 49 66 20 6e 6f 20 6d 65 74 61 2d 64 61 74 61   If no meta-data
aed0: 20 68 61 73 20 62 65 65 6e 20 73 65 74 20 66 6f   has been set fo
aee0: 72 0a 2a 2a 20 74 68 61 74 20 76 61 6c 75 65 2c  r.** that value,
aef0: 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69   then a NULL poi
af00: 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64  nter is returned
af10: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
af20: 74 65 33 5f 73 65 74 5f 61 75 78 64 61 74 61 28  te3_set_auxdata(
af30: 29 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73  ) is used to ass
af40: 6f 63 69 61 74 65 20 6d 65 74 61 20 64 61 74 61  ociate meta data
af50: 20 77 69 74 68 20 61 20 75 73 65 72 0a 2a 2a 20   with a user.** 
af60: 66 75 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e  function argumen
af70: 74 2e 20 54 68 65 20 74 68 69 72 64 20 70 61 72  t. The third par
af80: 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e  ameter is a poin
af90: 74 65 72 20 74 6f 20 74 68 65 20 6d 65 74 61 20  ter to the meta 
afa0: 64 61 74 61 0a 2a 2a 20 74 6f 20 62 65 20 61 73  data.** to be as
afb0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
afc0: 65 20 4e 74 68 20 75 73 65 72 20 66 75 6e 63 74  e Nth user funct
afd0: 69 6f 6e 20 61 72 67 75 6d 65 6e 74 20 76 61 6c  ion argument val
afe0: 75 65 2e 20 54 68 65 20 66 6f 75 72 74 68 0a 2a  ue. The fourth.*
aff0: 2a 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63  * parameter spec
b000: 69 66 69 65 73 20 61 20 27 64 65 6c 65 74 65 20  ifies a 'delete 
b010: 66 75 6e 63 74 69 6f 6e 27 20 74 68 61 74 20 77  function' that w
b020: 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 6f 6e  ill be called on
b030: 20 74 68 65 20 6d 65 74 61 0a 2a 2a 20 64 61 74   the meta.** dat
b040: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 72 65 6c  a pointer to rel
b050: 65 61 73 65 20 69 74 20 77 68 65 6e 20 69 74 20  ease it when it 
b060: 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71  is no longer req
b070: 75 69 72 65 64 2e 20 49 66 20 74 68 65 20 64 65  uired. If the de
b080: 6c 65 74 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  lete.** function
b090: 20 70 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c 4c   pointer is NULL
b0a0: 2c 20 69 74 20 69 73 20 6e 6f 74 20 69 6e 76 6f  , it is not invo
b0b0: 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 70 72  ked..**.** In pr
b0c0: 61 63 74 69 63 65 2c 20 6d 65 74 61 2d 64 61 74  actice, meta-dat
b0d0: 61 20 69 73 20 70 72 65 73 65 72 76 65 64 20 62  a is preserved b
b0e0: 65 74 77 65 65 6e 20 66 75 6e 63 74 69 6f 6e 20  etween function 
b0f0: 63 61 6c 6c 73 20 66 6f 72 0a 2a 2a 20 65 78 70  calls for.** exp
b100: 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72  ressions that ar
b110: 65 20 63 6f 6e 73 74 61 6e 74 20 61 74 20 63 6f  e constant at co
b120: 6d 70 69 6c 65 20 74 69 6d 65 2e 20 54 68 69 73  mpile time. This
b130: 20 69 6e 63 6c 75 64 65 73 20 6c 69 74 65 72 61   includes litera
b140: 6c 0a 2a 2a 20 76 61 6c 75 65 73 20 61 6e 64 20  l.** values and 
b150: 53 51 4c 20 76 61 72 69 61 62 6c 65 73 2e 0a 2a  SQL variables..*
b160: 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
b170: 67 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c 69  get_auxdata(sqli
b180: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e  te3_context*, in
b190: 74 29 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33  t);.void sqlite3
b1a0: 5f 73 65 74 5f 61 75 78 64 61 74 61 28 73 71 6c  _set_auxdata(sql
b1b0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69  ite3_context*, i
b1c0: 6e 74 2c 20 76 6f 69 64 2a 2c 20 76 6f 69 64 20  nt, void*, void 
b1d0: 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 0a 0a 2f  (*)(void*));.../
b1e0: 2a 0a 2a 2a 20 54 68 65 73 65 20 61 72 65 20 73  *.** These are s
b1f0: 70 65 63 69 61 6c 20 76 61 6c 75 65 20 66 6f 72  pecial value for
b200: 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 20   the destructor 
b210: 74 68 61 74 20 69 73 20 70 61 73 73 65 64 20 69  that is passed i
b220: 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66 69 6e 61  n as the.** fina
b230: 6c 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 72 6f  l argument to ro
b240: 75 74 69 6e 65 73 20 6c 69 6b 65 20 73 71 6c 69  utines like sqli
b250: 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28  te3_result_blob(
b260: 29 2e 20 20 49 66 20 74 68 65 20 64 65 73 74 72  ).  If the destr
b270: 75 63 74 6f 72 0a 2a 2a 20 61 72 67 75 6d 65 6e  uctor.** argumen
b280: 74 20 69 73 20 53 51 4c 49 54 45 5f 53 54 41 54  t is SQLITE_STAT
b290: 49 43 2c 20 69 74 20 6d 65 61 6e 73 20 74 68 61  IC, it means tha
b2a0: 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 70 6f  t the content po
b2b0: 69 6e 74 65 72 20 69 73 20 63 6f 6e 73 74 61 6e  inter is constan
b2c0: 74 0a 2a 2a 20 61 6e 64 20 77 69 6c 6c 20 6e 65  t.** and will ne
b2d0: 76 65 72 20 63 68 61 6e 67 65 2e 20 20 49 74 20  ver change.  It 
b2e0: 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f  does not need to
b2f0: 20 62 65 20 64 65 73 74 72 6f 79 65 64 2e 20 20   be destroyed.  
b300: 54 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 54  The .** SQLITE_T
b310: 52 41 4e 53 49 45 4e 54 20 76 61 6c 75 65 20 6d  RANSIENT value m
b320: 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 63 6f  eans that the co
b330: 6e 74 65 6e 74 20 77 69 6c 6c 20 6c 69 6b 65 6c  ntent will likel
b340: 79 20 63 68 61 6e 67 65 20 69 6e 0a 2a 2a 20 74  y change in.** t
b350: 68 65 20 6e 65 61 72 20 66 75 74 75 72 65 20 61  he near future a
b360: 6e 64 20 74 68 61 74 20 53 51 4c 69 74 65 20 73  nd that SQLite s
b370: 68 6f 75 6c 64 20 6d 61 6b 65 20 69 74 73 20 6f  hould make its o
b380: 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20  wn private copy 
b390: 6f 66 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65 6e  of.** the conten
b3a0: 74 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69  t before returni
b3b0: 6e 67 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ng..*/.#define S
b3c0: 51 4c 49 54 45 5f 53 54 41 54 49 43 20 20 20 20  QLITE_STATIC    
b3d0: 20 20 28 28 76 6f 69 64 28 2a 29 28 76 6f 69 64    ((void(*)(void
b3e0: 20 2a 29 29 30 29 0a 23 64 65 66 69 6e 65 20 53   *))0).#define S
b3f0: 51 4c 49 54 45 5f 54 52 41 4e 53 49 45 4e 54 20  QLITE_TRANSIENT 
b400: 20 20 28 28 76 6f 69 64 28 2a 29 28 76 6f 69 64    ((void(*)(void
b410: 20 2a 29 29 2d 31 29 0a 0a 2f 2a 0a 2a 2a 20 55   *))-1)../*.** U
b420: 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63  ser-defined func
b430: 74 69 6f 6e 73 20 69 6e 76 6f 6b 65 20 74 68 65  tions invoke the
b440: 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69   following routi
b450: 6e 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a  nes in order to.
b460: 2a 2a 20 73 65 74 20 74 68 65 69 72 20 72 65 74  ** set their ret
b470: 75 72 6e 20 76 61 6c 75 65 2e 0a 2a 2f 0a 76 6f  urn value..*/.vo
b480: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b490: 74 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 63  t_blob(sqlite3_c
b4a0: 6f 6e 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76  ontext*, const v
b4b0: 6f 69 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 28  oid*, int, void(
b4c0: 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64  *)(void*));.void
b4d0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
b4e0: 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 63  double(sqlite3_c
b4f0: 6f 6e 74 65 78 74 2a 2c 20 64 6f 75 62 6c 65 29  ontext*, double)
b500: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
b510: 65 73 75 6c 74 5f 65 72 72 6f 72 28 73 71 6c 69  esult_error(sqli
b520: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63 6f  te3_context*, co
b530: 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74 29 3b  nst char*, int);
b540: 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65  .void sqlite3_re
b550: 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 73 71 6c  sult_error16(sql
b560: 69 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 63  ite3_context*, c
b570: 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 29  onst void*, int)
b580: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
b590: 65 73 75 6c 74 5f 69 6e 74 28 73 71 6c 69 74 65  esult_int(sqlite
b5a0: 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 69 6e 74 29  3_context*, int)
b5b0: 3b 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  ;.void sqlite3_r
b5c0: 65 73 75 6c 74 5f 69 6e 74 36 34 28 73 71 6c 69  esult_int64(sqli
b5d0: 74 65 33 5f 63 6f 6e 74 65 78 74 2a 2c 20 73 71  te3_context*, sq
b5e0: 6c 69 74 65 5f 69 6e 74 36 34 29 3b 0a 76 6f 69  lite_int64);.voi
b5f0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
b600: 5f 6e 75 6c 6c 28 73 71 6c 69 74 65 33 5f 63 6f  _null(sqlite3_co
b610: 6e 74 65 78 74 2a 29 3b 0a 76 6f 69 64 20 73 71  ntext*);.void sq
b620: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
b630: 74 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t(sqlite3_contex
b640: 74 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c  t*, const char*,
b650: 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f   int, void(*)(vo
b660: 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c 69  id*));.void sqli
b670: 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
b680: 36 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  6(sqlite3_contex
b690: 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  t*, const void*,
b6a0: 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f   int, void(*)(vo
b6b0: 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c 69  id*));.void sqli
b6c0: 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
b6d0: 36 6c 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74  6le(sqlite3_cont
b6e0: 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64  ext*, const void
b6f0: 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29 28 76  *, int,void(*)(v
b700: 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71 6c  oid*));.void sql
b710: 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
b720: 31 36 62 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e  16be(sqlite3_con
b730: 74 65 78 74 2a 2c 20 63 6f 6e 73 74 20 76 6f 69  text*, const voi
b740: 64 2a 2c 20 69 6e 74 2c 76 6f 69 64 28 2a 29 28  d*, int,void(*)(
b750: 76 6f 69 64 2a 29 29 3b 0a 76 6f 69 64 20 73 71  void*));.void sq
b760: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c  lite3_result_val
b770: 75 65 28 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  ue(sqlite3_conte
b780: 78 74 2a 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c  xt*, sqlite3_val
b790: 75 65 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  ue*);../*.** The
b7a0: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
b7b0: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
b7c0: 65 20 65 54 65 78 74 52 65 70 20 61 72 67 75 6d  e eTextRep argum
b7d0: 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ent to.** sqlite
b7e0: 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
b7f0: 6f 6e 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63  on and sqlite3_c
b800: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 2e 0a  reate_function..
b810: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b820: 45 5f 55 54 46 38 20 20 20 20 31 0a 23 64 65 66  E_UTF8    1.#def
b830: 69 6e 65 20 53 51 4c 49 54 45 5f 55 54 46 31 36  ine SQLITE_UTF16
b840: 4c 45 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c  LE 2.#define SQL
b850: 49 54 45 5f 55 54 46 31 36 42 45 20 33 0a 23 64  ITE_UTF16BE 3.#d
b860: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 55 54 46  efine SQLITE_UTF
b870: 31 36 20 20 20 34 20 20 20 20 2f 2a 20 55 73 65  16   4    /* Use
b880: 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72 64   native byte ord
b890: 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  er */.#define SQ
b8a0: 4c 49 54 45 5f 41 4e 59 20 20 20 20 20 35 20 20  LITE_ANY     5  
b8b0: 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 63 72 65    /* sqlite3_cre
b8c0: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 20 6f 6e 6c  ate_function onl
b8d0: 79 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73  y */../*.** Thes
b8e0: 65 20 74 77 6f 20 66 75 6e 63 74 69 6f 6e 73 20  e two functions 
b8f0: 61 72 65 20 75 73 65 64 20 74 6f 20 61 64 64 20  are used to add 
b900: 6e 65 77 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  new collation se
b910: 71 75 65 6e 63 65 73 20 74 6f 20 74 68 65 0a 2a  quences to the.*
b920: 2a 20 73 71 6c 69 74 65 33 20 68 61 6e 64 6c 65  * sqlite3 handle
b930: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74 68   specified as th
b940: 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
b950: 2e 20 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6e 61 6d  . .**.** The nam
b960: 65 20 6f 66 20 74 68 65 20 6e 65 77 20 63 6f 6c  e of the new col
b970: 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
b980: 69 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  is specified as 
b990: 61 20 55 54 46 2d 38 20 73 74 72 69 6e 67 0a 2a  a UTF-8 string.*
b9a0: 2a 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 63 72  * for sqlite3_cr
b9b0: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 29  eate_collation()
b9c0: 20 61 6e 64 20 61 20 55 54 46 2d 31 36 20 73 74   and a UTF-16 st
b9d0: 72 69 6e 67 20 66 6f 72 0a 2a 2a 20 73 71 6c 69  ring for.** sqli
b9e0: 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61  te3_create_colla
b9f0: 74 69 6f 6e 31 36 28 29 2e 20 49 6e 20 62 6f 74  tion16(). In bot
ba00: 68 20 63 61 73 65 73 20 74 68 65 20 6e 61 6d 65  h cases the name
ba10: 20 69 73 20 70 61 73 73 65 64 20 61 73 20 74 68   is passed as th
ba20: 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 66 75 6e 63  e.** second func
ba30: 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 2e 0a 2a  tion argument..*
ba40: 2a 0a 2a 2a 20 54 68 65 20 74 68 69 72 64 20 61  *.** The third a
ba50: 72 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20  rgument must be 
ba60: 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6e 73 74  one of the const
ba70: 61 6e 74 73 20 53 51 4c 49 54 45 5f 55 54 46 38  ants SQLITE_UTF8
ba80: 2c 0a 2a 2a 20 53 51 4c 49 54 45 5f 55 54 46 31  ,.** SQLITE_UTF1
ba90: 36 4c 45 20 6f 72 20 53 51 4c 49 54 45 5f 55 54  6LE or SQLITE_UT
baa0: 46 31 36 42 45 2c 20 69 6e 64 69 63 61 74 69 6e  F16BE, indicatin
bab0: 67 20 74 68 61 74 20 74 68 65 20 75 73 65 72 2d  g that the user-
bac0: 73 75 70 70 6c 69 65 64 0a 2a 2a 20 72 6f 75 74  supplied.** rout
bad0: 69 6e 65 20 65 78 70 65 63 74 73 20 74 6f 20 62  ine expects to b
bae0: 65 20 70 61 73 73 65 64 20 70 6f 69 6e 74 65 72  e passed pointer
baf0: 73 20 74 6f 20 73 74 72 69 6e 67 73 20 65 6e 63  s to strings enc
bb00: 6f 64 65 64 20 75 73 69 6e 67 20 55 54 46 2d 38  oded using UTF-8
bb10: 2c 0a 2a 2a 20 55 54 46 2d 31 36 20 6c 69 74 74  ,.** UTF-16 litt
bb20: 6c 65 2d 65 6e 64 69 61 6e 20 6f 72 20 55 54 46  le-endian or UTF
bb30: 2d 31 36 20 62 69 67 2d 65 6e 64 69 61 6e 20 72  -16 big-endian r
bb40: 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 2a 2a 0a  espectively..**.
bb50: 2a 2a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 20  ** A pointer to 
bb60: 74 68 65 20 75 73 65 72 20 73 75 70 70 6c 69 65  the user supplie
bb70: 64 20 72 6f 75 74 69 6e 65 20 6d 75 73 74 20 62  d routine must b
bb80: 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20  e passed as the 
bb90: 66 69 66 74 68 0a 2a 2a 20 61 72 67 75 6d 65 6e  fifth.** argumen
bba0: 74 2e 20 49 66 20 69 74 20 69 73 20 4e 55 4c 4c  t. If it is NULL
bbb0: 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 73 61  , this is the sa
bbc0: 6d 65 20 61 73 20 64 65 6c 65 74 69 6e 67 20 74  me as deleting t
bbd0: 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 0a 2a 2a 20  he collation.** 
bbe0: 73 65 71 75 65 6e 63 65 20 28 73 6f 20 74 68 61  sequence (so tha
bbf0: 74 20 53 51 4c 69 74 65 20 63 61 6e 6e 6f 74 20  t SQLite cannot 
bc00: 63 61 6c 6c 20 69 74 20 61 6e 79 6d 6f 72 65 29  call it anymore)
bc10: 2e 20 45 61 63 68 20 74 69 6d 65 20 74 68 65 20  . Each time the 
bc20: 75 73 65 72 0a 2a 2a 20 73 75 70 70 6c 69 65 64  user.** supplied
bc30: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76   function is inv
bc40: 6f 6b 65 64 2c 20 69 74 20 69 73 20 70 61 73 73  oked, it is pass
bc50: 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ed a copy of the
bc60: 20 76 6f 69 64 2a 20 70 61 73 73 65 64 20 61 73   void* passed as
bc70: 0a 2a 2a 20 74 68 65 20 66 6f 75 72 74 68 20 61  .** the fourth a
bc80: 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
bc90: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
bca0: 69 6f 6e 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69  ion() or.** sqli
bcb0: 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61  te3_create_colla
bcc0: 74 69 6f 6e 31 36 28 29 20 61 73 20 69 74 73 20  tion16() as its 
bcd0: 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 2e  first parameter.
bce0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72 65 6d 61 69  .**.** The remai
bcf0: 6e 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 74  ning arguments t
bd00: 6f 20 74 68 65 20 75 73 65 72 2d 73 75 70 70 6c  o the user-suppl
bd10: 69 65 64 20 72 6f 75 74 69 6e 65 20 61 72 65 20  ied routine are 
bd20: 74 77 6f 20 73 74 72 69 6e 67 73 2c 0a 2a 2a 20  two strings,.** 
bd30: 65 61 63 68 20 72 65 70 72 65 73 65 6e 74 65 64  each represented
bd40: 20 62 79 20 61 20 5b 6c 65 6e 67 74 68 2c 20 64   by a [length, d
bd50: 61 74 61 5d 20 70 61 69 72 20 61 6e 64 20 65 6e  ata] pair and en
bd60: 63 6f 64 65 64 20 69 6e 20 74 68 65 20 65 6e 63  coded in the enc
bd70: 6f 64 69 6e 67 0a 2a 2a 20 74 68 61 74 20 77 61  oding.** that wa
bd80: 73 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20  s passed as the 
bd90: 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 77  third argument w
bda0: 68 65 6e 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f  hen the collatio
bdb0: 6e 20 73 65 71 75 65 6e 63 65 20 77 61 73 0a 2a  n sequence was.*
bdc0: 2a 20 72 65 67 69 73 74 65 72 65 64 2e 20 54 68  * registered. Th
bdd0: 65 20 75 73 65 72 20 72 6f 75 74 69 6e 65 20 73  e user routine s
bde0: 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 6e 65 67  hould return neg
bdf0: 61 74 69 76 65 2c 20 7a 65 72 6f 20 6f 72 20 70  ative, zero or p
be00: 6f 73 69 74 69 76 65 20 69 66 0a 2a 2a 20 74 68  ositive if.** th
be10: 65 20 66 69 72 73 74 20 73 74 72 69 6e 67 20 69  e first string i
be20: 73 20 6c 65 73 73 20 74 68 61 6e 2c 20 65 71 75  s less than, equ
be30: 61 6c 20 74 6f 2c 20 6f 72 20 67 72 65 61 74 65  al to, or greate
be40: 72 20 74 68 61 6e 20 74 68 65 20 73 65 63 6f 6e  r than the secon
be50: 64 0a 2a 2a 20 73 74 72 69 6e 67 2e 20 69 2e 65  d.** string. i.e
be60: 2e 20 28 53 54 52 49 4e 47 31 20 2d 20 53 54 52  . (STRING1 - STR
be70: 49 4e 47 32 29 2e 0a 2a 2f 0a 69 6e 74 20 73 71  ING2)..*/.int sq
be80: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
be90: 6c 61 74 69 6f 6e 28 0a 20 20 73 71 6c 69 74 65  lation(.  sqlite
bea0: 33 2a 2c 20 0a 20 20 63 6f 6e 73 74 20 63 68 61  3*, .  const cha
beb0: 72 20 2a 7a 4e 61 6d 65 2c 20 0a 20 20 69 6e 74  r *zName, .  int
bec0: 20 65 54 65 78 74 52 65 70 2c 20 0a 20 20 76 6f   eTextRep, .  vo
bed0: 69 64 2a 2c 0a 20 20 69 6e 74 28 2a 78 43 6f 6d  id*,.  int(*xCom
bee0: 70 61 72 65 29 28 76 6f 69 64 2a 2c 69 6e 74 2c  pare)(void*,int,
bef0: 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 69 6e 74 2c  const void*,int,
bf00: 63 6f 6e 73 74 20 76 6f 69 64 2a 29 0a 29 3b 0a  const void*).);.
bf10: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61  int sqlite3_crea
bf20: 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 31 36 28 0a  te_collation16(.
bf30: 20 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20 63    sqlite3*, .  c
bf40: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
bf50: 2c 20 0a 20 20 69 6e 74 20 65 54 65 78 74 52 65  , .  int eTextRe
bf60: 70 2c 20 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 69  p, .  void*,.  i
bf70: 6e 74 28 2a 78 43 6f 6d 70 61 72 65 29 28 76 6f  nt(*xCompare)(vo
bf80: 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 76 6f  id*,int,const vo
bf90: 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 76 6f  id*,int,const vo
bfa0: 69 64 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  id*).);../*.** T
bfb0: 6f 20 61 76 6f 69 64 20 68 61 76 69 6e 67 20 74  o avoid having t
bfc0: 6f 20 72 65 67 69 73 74 65 72 20 61 6c 6c 20 63  o register all c
bfd0: 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
bfe0: 65 73 20 62 65 66 6f 72 65 20 61 20 64 61 74 61  es before a data
bff0: 62 61 73 65 0a 2a 2a 20 63 61 6e 20 62 65 20 75  base.** can be u
c000: 73 65 64 2c 20 61 20 73 69 6e 67 6c 65 20 63 61  sed, a single ca
c010: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
c020: 6d 61 79 20 62 65 20 72 65 67 69 73 74 65 72 65  may be registere
c030: 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 64 61  d with the.** da
c040: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 74 6f  tabase handle to
c050: 20 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 65   be called whene
c060: 76 65 72 20 61 6e 20 75 6e 64 65 66 69 6e 65 64  ver an undefined
c070: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
c080: 6e 63 65 20 69 73 0a 2a 2a 20 72 65 71 75 69 72  nce is.** requir
c090: 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65  ed..**.** If the
c0a0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 65 67   function is reg
c0b0: 69 73 74 65 72 65 64 20 75 73 69 6e 67 20 74 68  istered using th
c0c0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74  e sqlite3_collat
c0d0: 69 6f 6e 5f 6e 65 65 64 65 64 28 29 20 41 50 49  ion_needed() API
c0e0: 2c 0a 2a 2a 20 74 68 65 6e 20 69 74 20 69 73 20  ,.** then it is 
c0f0: 70 61 73 73 65 64 20 74 68 65 20 6e 61 6d 65 73  passed the names
c100: 20 6f 66 20 75 6e 64 65 66 69 6e 65 64 20 63 6f   of undefined co
c110: 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
c120: 73 20 61 73 20 73 74 72 69 6e 67 73 0a 2a 2a 20  s as strings.** 
c130: 65 6e 63 6f 64 65 64 20 69 6e 20 55 54 46 2d 38  encoded in UTF-8
c140: 2e 20 49 66 20 73 71 6c 69 74 65 33 5f 63 6f 6c  . If sqlite3_col
c150: 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 31 36 28  lation_needed16(
c160: 29 20 69 73 20 75 73 65 64 2c 20 74 68 65 20 6e  ) is used, the n
c170: 61 6d 65 73 0a 2a 2a 20 61 72 65 20 70 61 73 73  ames.** are pass
c180: 65 64 20 61 73 20 55 54 46 2d 31 36 20 69 6e 20  ed as UTF-16 in 
c190: 6d 61 63 68 69 6e 65 20 6e 61 74 69 76 65 20 62  machine native b
c1a0: 79 74 65 20 6f 72 64 65 72 2e 20 41 20 63 61 6c  yte order. A cal
c1b0: 6c 20 74 6f 20 65 69 74 68 65 72 0a 2a 2a 20 66  l to either.** f
c1c0: 75 6e 63 74 69 6f 6e 20 72 65 70 6c 61 63 65 73  unction replaces
c1d0: 20 61 6e 79 20 65 78 69 73 74 69 6e 67 20 63 61   any existing ca
c1e0: 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 57 68  llback..**.** Wh
c1f0: 65 6e 20 74 68 65 20 75 73 65 72 2d 66 75 6e 63  en the user-func
c200: 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 2c  tion is invoked,
c210: 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
c220: 65 6e 74 20 70 61 73 73 65 64 20 69 73 20 61 20  ent passed is a 
c230: 63 6f 70 79 0a 2a 2a 20 6f 66 20 74 68 65 20 73  copy.** of the s
c240: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
c250: 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74  o sqlite3_collat
c260: 69 6f 6e 5f 6e 65 65 64 65 64 28 29 20 6f 72 0a  ion_needed() or.
c270: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61  ** sqlite3_colla
c280: 74 69 6f 6e 5f 6e 65 65 64 65 64 31 36 28 29 2e  tion_needed16().
c290: 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   The second argu
c2a0: 6d 65 6e 74 20 69 73 20 74 68 65 20 64 61 74 61  ment is the data
c2b0: 62 61 73 65 0a 2a 2a 20 68 61 6e 64 6c 65 2e 20  base.** handle. 
c2c0: 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  The third argume
c2d0: 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 53 51 4c  nt is one of SQL
c2e0: 49 54 45 5f 55 54 46 38 2c 20 53 51 4c 49 54 45  ITE_UTF8, SQLITE
c2f0: 5f 55 54 46 31 36 42 45 20 6f 72 0a 2a 2a 20 53  _UTF16BE or.** S
c300: 51 4c 49 54 45 5f 55 54 46 31 36 4c 45 2c 20 69  QLITE_UTF16LE, i
c310: 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 6d 6f  ndicating the mo
c320: 73 74 20 64 65 73 69 72 61 62 6c 65 20 66 6f 72  st desirable for
c330: 6d 20 6f 66 20 74 68 65 20 63 6f 6c 6c 61 74 69  m of the collati
c340: 6f 6e 0a 2a 2a 20 73 65 71 75 65 6e 63 65 20 66  on.** sequence f
c350: 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65 64  unction required
c360: 2e 20 54 68 65 20 66 6f 75 72 74 68 20 70 61 72  . The fourth par
c370: 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6e 61  ameter is the na
c380: 6d 65 20 6f 66 20 74 68 65 0a 2a 2a 20 72 65 71  me of the.** req
c390: 75 69 72 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20  uired collation 
c3a0: 73 65 71 75 65 6e 63 65 2e 0a 2a 2a 0a 2a 2a 20  sequence..**.** 
c3b0: 54 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  The collation se
c3c0: 71 75 65 6e 63 65 20 69 73 20 72 65 74 75 72 6e  quence is return
c3d0: 65 64 20 74 6f 20 53 51 4c 69 74 65 20 62 79 20  ed to SQLite by 
c3e0: 61 20 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 65 65 64  a collation-need
c3f0: 65 64 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 75  ed.** callback u
c400: 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33  sing the sqlite3
c410: 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
c420: 6e 28 29 20 6f 72 0a 2a 2a 20 73 71 6c 69 74 65  n() or.** sqlite
c430: 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69  3_create_collati
c440: 6f 6e 31 36 28 29 20 41 50 49 73 2c 20 64 65 73  on16() APIs, des
c450: 63 72 69 62 65 64 20 61 62 6f 76 65 2e 0a 2a 2f  cribed above..*/
c460: 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c  .int sqlite3_col
c470: 6c 61 74 69 6f 6e 5f 6e 65 65 64 65 64 28 0a 20  lation_needed(. 
c480: 20 73 71 6c 69 74 65 33 2a 2c 20 0a 20 20 76 6f   sqlite3*, .  vo
c490: 69 64 2a 2c 20 0a 20 20 76 6f 69 64 28 2a 29 28  id*, .  void(*)(
c4a0: 76 6f 69 64 2a 2c 73 71 6c 69 74 65 33 2a 2c 69  void*,sqlite3*,i
c4b0: 6e 74 20 65 54 65 78 74 52 65 70 2c 63 6f 6e 73  nt eTextRep,cons
c4c0: 74 20 63 68 61 72 2a 29 0a 29 3b 0a 69 6e 74 20  t char*).);.int 
c4d0: 73 71 6c 69 74 65 33 5f 63 6f 6c 6c 61 74 69 6f  sqlite3_collatio
c4e0: 6e 5f 6e 65 65 64 65 64 31 36 28 0a 20 20 73 71  n_needed16(.  sq
c4f0: 6c 69 74 65 33 2a 2c 20 0a 20 20 76 6f 69 64 2a  lite3*, .  void*
c500: 2c 0a 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64  ,.  void(*)(void
c510: 2a 2c 73 71 6c 69 74 65 33 2a 2c 69 6e 74 20 65  *,sqlite3*,int e
c520: 54 65 78 74 52 65 70 2c 63 6f 6e 73 74 20 76 6f  TextRep,const vo
c530: 69 64 2a 29 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53  id*).);../*.** S
c540: 70 65 63 69 66 79 20 74 68 65 20 6b 65 79 20 66  pecify the key f
c550: 6f 72 20 61 6e 20 65 6e 63 72 79 70 74 65 64 20  or an encrypted 
c560: 64 61 74 61 62 61 73 65 2e 20 20 54 68 69 73 20  database.  This 
c570: 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c 64 20 62  routine should b
c580: 65 0a 2a 2a 20 63 61 6c 6c 65 64 20 72 69 67 68  e.** called righ
c590: 74 20 61 66 74 65 72 20 73 71 6c 69 74 65 33 5f  t after sqlite3_
c5a0: 6f 70 65 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68  open()..**.** Th
c5b0: 65 20 63 6f 64 65 20 74 6f 20 69 6d 70 6c 65 6d  e code to implem
c5c0: 65 6e 74 20 74 68 69 73 20 41 50 49 20 69 73 20  ent this API is 
c5d0: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 69 6e  not available in
c5e0: 20 74 68 65 20 70 75 62 6c 69 63 20 72 65 6c 65   the public rele
c5f0: 61 73 65 0a 2a 2a 20 6f 66 20 53 51 4c 69 74 65  ase.** of SQLite
c600: 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
c610: 5f 6b 65 79 28 0a 20 20 73 71 6c 69 74 65 33 20  _key(.  sqlite3 
c620: 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
c630: 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61         /* Databa
c640: 73 65 20 74 6f 20 62 65 20 72 65 6b 65 79 65 64  se to be rekeyed
c650: 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64   */.  const void
c660: 20 2a 70 4b 65 79 2c 20 69 6e 74 20 6e 4b 65 79   *pKey, int nKey
c670: 20 20 20 20 20 2f 2a 20 54 68 65 20 6b 65 79 20       /* The key 
c680: 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 68 61  */.);../*.** Cha
c690: 6e 67 65 20 74 68 65 20 6b 65 79 20 6f 6e 20 61  nge the key on a
c6a0: 6e 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 2e  n open database.
c6b0: 20 20 49 66 20 74 68 65 20 63 75 72 72 65 6e 74    If the current
c6c0: 20 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74   database is not
c6d0: 0a 2a 2a 20 65 6e 63 72 79 70 74 65 64 2c 20 74  .** encrypted, t
c6e0: 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c  his routine will
c6f0: 20 65 6e 63 72 79 70 74 20 69 74 2e 20 20 49 66   encrypt it.  If
c700: 20 70 4e 65 77 3d 3d 30 20 6f 72 20 6e 4e 65 77   pNew==0 or nNew
c710: 3d 3d 30 2c 20 74 68 65 0a 2a 2a 20 64 61 74 61  ==0, the.** data
c720: 62 61 73 65 20 69 73 20 64 65 63 72 79 70 74 65  base is decrypte
c730: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f 64  d..**.** The cod
c740: 65 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  e to implement t
c750: 68 69 73 20 41 50 49 20 69 73 20 6e 6f 74 20 61  his API is not a
c760: 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20  vailable in the 
c770: 70 75 62 6c 69 63 20 72 65 6c 65 61 73 65 0a 2a  public release.*
c780: 2a 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a  * of SQLite..*/.
c790: 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6b 65  int sqlite3_reke
c7a0: 79 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62  y(.  sqlite3 *db
c7b0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
c7c0: 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
c7d0: 74 6f 20 62 65 20 72 65 6b 65 79 65 64 20 2a 2f  to be rekeyed */
c7e0: 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 70  .  const void *p
c7f0: 4b 65 79 2c 20 69 6e 74 20 6e 4b 65 79 20 20 20  Key, int nKey   
c800: 20 20 2f 2a 20 54 68 65 20 6e 65 77 20 6b 65 79    /* The new key
c810: 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 53 6c   */.);../*.** Sl
c820: 65 65 70 20 66 6f 72 20 61 20 6c 69 74 74 6c 65  eep for a little
c830: 20 77 68 69 6c 65 2e 20 54 68 65 20 73 65 63 6f   while. The seco
c840: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
c850: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a  the number of.**
c860: 20 6d 69 6c 69 73 65 63 6f 6e 64 73 20 74 6f 20   miliseconds to 
c870: 73 6c 65 65 70 20 66 6f 72 2e 20 0a 2a 2a 0a 2a  sleep for. .**.*
c880: 2a 20 49 66 20 74 68 65 20 6f 70 65 72 61 74 69  * If the operati
c890: 6e 67 20 73 79 73 74 65 6d 20 64 6f 65 73 20 6e  ng system does n
c8a0: 6f 74 20 73 75 70 70 6f 72 74 20 73 6c 65 65 70  ot support sleep
c8b0: 20 72 65 71 75 65 73 74 73 20 77 69 74 68 20 0a   requests with .
c8c0: 2a 2a 20 6d 69 6c 69 73 65 63 6f 6e 64 20 74 69  ** milisecond ti
c8d0: 6d 65 20 72 65 73 6f 6c 75 74 69 6f 6e 2c 20 74  me resolution, t
c8e0: 68 65 6e 20 74 68 65 20 74 69 6d 65 20 77 69 6c  hen the time wil
c8f0: 6c 20 62 65 20 72 6f 75 6e 64 65 64 20 75 70 20  l be rounded up 
c900: 74 6f 20 0a 2a 2a 20 74 68 65 20 6e 65 61 72 65  to .** the neare
c910: 73 74 20 73 65 63 6f 6e 64 2e 20 54 68 65 20 6e  st second. The n
c920: 75 6d 62 65 72 20 6f 66 20 6d 69 6c 69 73 65 63  umber of milisec
c930: 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70 20 61 63  onds of sleep ac
c940: 74 75 61 6c 6c 79 20 0a 2a 2a 20 72 65 71 75 65  tually .** reque
c950: 73 74 65 64 20 66 72 6f 6d 20 74 68 65 20 6f 70  sted from the op
c960: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69  erating system i
c970: 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a  s returned..**.*
c980: 2a 2a 2a 2a 2a 2a 20 54 48 49 53 20 49 53 20 41  ****** THIS IS A
c990: 4e 20 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 41  N EXPERIMENTAL A
c9a0: 50 49 20 41 4e 44 20 49 53 20 53 55 42 4a 45 43  PI AND IS SUBJEC
c9b0: 54 20 54 4f 20 43 48 41 4e 47 45 20 2a 2a 2a 2a  T TO CHANGE ****
c9c0: 2a 2a 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  **.*/.int sqlite
c9d0: 33 5f 73 6c 65 65 70 28 69 6e 74 29 3b 0a 0a 2f  3_sleep(int);../
c9e0: 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 54 52 55 45  *.** Return TRUE
c9f0: 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 6f 66 20 74   (non-zero) of t
ca00: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 73 75 70  he statement sup
ca10: 70 6c 69 65 64 20 61 73 20 61 6e 20 61 72 67 75  plied as an argu
ca20: 6d 65 6e 74 20 6e 65 65 64 73 0a 2a 2a 20 74 6f  ment needs.** to
ca30: 20 62 65 20 72 65 63 6f 6d 70 69 6c 65 64 2e 20   be recompiled. 
ca40: 20 41 20 73 74 61 74 65 6d 65 6e 74 20 6e 65 65   A statement nee
ca50: 64 73 20 74 6f 20 62 65 20 72 65 63 6f 6d 70 69  ds to be recompi
ca60: 6c 65 64 20 77 68 65 6e 65 76 65 72 20 74 68 65  led whenever the
ca70: 0a 2a 2a 20 65 78 65 63 75 74 69 6f 6e 20 65 6e  .** execution en
ca80: 76 69 72 6f 6e 6d 65 6e 74 20 63 68 61 6e 67 65  vironment change
ca90: 73 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 20  s in a way that 
caa0: 77 6f 75 6c 64 20 61 6c 74 65 72 20 74 68 65 20  would alter the 
cab0: 70 72 6f 67 72 61 6d 0a 2a 2a 20 74 68 61 74 20  program.** that 
cac0: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
cad0: 29 20 67 65 6e 65 72 61 74 65 73 2e 20 20 46 6f  ) generates.  Fo
cae0: 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 6e 65  r example, if ne
caf0: 77 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 0a 2a  w functions or.*
cb00: 2a 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  * collating sequ
cb10: 65 6e 63 65 73 20 61 72 65 20 72 65 67 69 73 74  ences are regist
cb20: 65 72 65 64 20 6f 72 20 69 66 20 61 6e 20 61 75  ered or if an au
cb30: 74 68 6f 72 69 7a 65 72 20 66 75 6e 63 74 69 6f  thorizer functio
cb40: 6e 20 69 73 0a 2a 2a 20 61 64 64 65 64 20 6f 72  n is.** added or
cb50: 20 63 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 2a   changed..**.***
cb60: 2a 2a 2a 2a 20 54 48 49 53 20 49 53 20 41 4e 20  **** THIS IS AN 
cb70: 45 58 50 45 52 49 4d 45 4e 54 41 4c 20 41 50 49  EXPERIMENTAL API
cb80: 20 41 4e 44 20 49 53 20 53 55 42 4a 45 43 54 20   AND IS SUBJECT 
cb90: 54 4f 20 43 48 41 4e 47 45 20 2a 2a 2a 2a 2a 2a  TO CHANGE ******
cba0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
cbb0: 65 78 70 69 72 65 64 28 73 71 6c 69 74 65 33 5f  expired(sqlite3_
cbc0: 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 49  stmt*);../*.** I
cbd0: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
cbe0: 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20  global variable 
cbf0: 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74  is made to point
cc00: 20 74 6f 20 61 0a 2a 2a 20 73 74 72 69 6e 67 20   to a.** string 
cc10: 77 68 69 63 68 20 69 73 20 74 68 65 20 6e 61 6d  which is the nam
cc20: 65 20 6f 66 20 61 20 64 69 72 65 63 74 6f 72 79  e of a directory
cc30: 2c 20 74 68 65 6e 20 61 6c 6c 20 74 65 6d 70 6f  , then all tempo
cc40: 72 61 72 79 20 66 69 6c 65 73 0a 2a 2a 20 63 72  rary files.** cr
cc50: 65 61 74 65 64 20 62 79 20 53 51 4c 69 74 65 20  eated by SQLite 
cc60: 77 69 6c 6c 20 62 65 20 70 6c 61 63 65 64 20 69  will be placed i
cc70: 6e 20 74 68 61 74 20 64 69 72 65 63 74 6f 72 79  n that directory
cc80: 2e 20 20 49 66 20 74 68 69 73 20 76 61 72 69 61  .  If this varia
cc90: 62 6c 65 0a 2a 2a 20 69 73 20 4e 55 4c 4c 20 70  ble.** is NULL p
cca0: 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 53 51 4c  ointer, then SQL
ccb0: 69 74 65 20 64 6f 65 73 20 61 20 73 65 61 72 63  ite does a searc
ccc0: 68 20 66 6f 72 20 61 6e 20 61 70 70 72 6f 70 72  h for an appropr
ccd0: 69 61 74 65 20 74 65 6d 70 6f 72 61 72 79 0a 2a  iate temporary.*
cce0: 2a 20 66 69 6c 65 20 64 69 72 65 63 74 6f 72 79  * file directory
ccf0: 2e 0a 2a 2a 0a 2a 2a 20 4f 6e 63 65 20 73 71 6c  ..**.** Once sql
cd00: 69 74 65 33 5f 6f 70 65 6e 28 29 20 68 61 73 20  ite3_open() has 
cd10: 62 65 65 6e 20 63 61 6c 6c 65 64 2c 20 63 68 61  been called, cha
cd20: 6e 67 69 6e 67 20 74 68 69 73 20 76 61 72 69 61  nging this varia
cd30: 62 6c 65 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64  ble will invalid
cd40: 61 74 65 20 74 68 65 0a 2a 2a 20 63 75 72 72 65  ate the.** curre
cd50: 6e 74 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74  nt temporary dat
cd60: 61 62 61 73 65 2c 20 69 66 20 61 6e 79 2e 0a 2a  abase, if any..*
cd70: 2f 0a 65 78 74 65 72 6e 20 63 68 61 72 20 2a 73  /.extern char *s
cd80: 71 6c 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65  qlite3_temp_dire
cd90: 63 74 6f 72 79 3b 0a 0a 23 69 66 64 65 66 20 5f  ctory;..#ifdef _
cda0: 5f 63 70 6c 75 73 70 6c 75 73 0a 7d 20 20 2f 2a  _cplusplus.}  /*
cdb0: 20 45 6e 64 20 6f 66 20 74 68 65 20 27 65 78 74   End of the 'ext
cdc0: 65 72 6e 20 22 43 22 27 20 62 6c 6f 63 6b 20 2a  ern "C"' block *
cdd0: 2f 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 0a  /.#endif.#endif.