sqlite3.h 115 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679
  1. /*
  2. ** 2001 September 15
  3. **
  4. ** The author disclaims copyright to this source code. In place of
  5. ** a legal notice, here is a blessing:
  6. **
  7. ** May you do good and not evil.
  8. ** May you find forgiveness for yourself and forgive others.
  9. ** May you share freely, never taking more than you give.
  10. **
  11. *************************************************************************
  12. ** This header file defines the interface that the SQLite library
  13. ** presents to client programs. If a C-function, structure, datatype,
  14. ** or constant definition does not appear in this file, then it is
  15. ** not a published API of SQLite, is subject to change without
  16. ** notice, and should not be referenced by programs that use SQLite.
  17. **
  18. ** Some of the definitions that are in this file are marked as
  19. ** "experimental". Experimental interfaces are normally new
  20. ** features recently added to SQLite. We do not anticipate changes
  21. ** to experimental interfaces but reserve to make minor changes if
  22. ** experience from use "in the wild" suggest such changes are prudent.
  23. **
  24. ** The official C-language API documentation for SQLite is derived
  25. ** from comments in this file. This file is the authoritative source
  26. ** on how SQLite interfaces are suppose to operate.
  27. **
  28. ** The name of this file under configuration management is "sqlite.h.in".
  29. ** The makefile makes some minor changes to this file (such as inserting
  30. ** the version number) and changes its name to "sqlite3.h" as
  31. ** part of the build process.
  32. **
  33. ** @(#) $Id: sqlite.h.in,v 1.212 2007/06/14 20:57:19 drh Exp $
  34. */
  35. #ifndef _SQLITE3_H_
  36. #define _SQLITE3_H_
  37. #include <stdarg.h> /* Needed for the definition of va_list */
  38. /*
  39. ** Make sure we can call this stuff from C++.
  40. */
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44. /*
  45. ** Make sure these symbols where not defined by some previous header
  46. ** file.
  47. */
  48. #ifdef SQLITE_VERSION
  49. # undef SQLITE_VERSION
  50. #endif
  51. #ifdef SQLITE_VERSION_NUMBER
  52. # undef SQLITE_VERSION_NUMBER
  53. #endif
  54. /*
  55. ** CAPI3REF: Compile-Time Library Version Numbers
  56. **
  57. ** The version of the SQLite library is contained in the sqlite3.h
  58. ** header file in a #define named SQLITE_VERSION. The SQLITE_VERSION
  59. ** macro resolves to a string constant.
  60. **
  61. ** The format of the version string is "X.Y.Z", where
  62. ** X is the major version number, Y is the minor version number and Z
  63. ** is the release number. The X.Y.Z might be followed by "alpha" or "beta".
  64. ** For example "3.1.1beta".
  65. **
  66. ** The X value is always 3 in SQLite. The X value only changes when
  67. ** backwards compatibility is broken and we intend to never break
  68. ** backwards compatibility. The Y value only changes when
  69. ** there are major feature enhancements that are forwards compatible
  70. ** but not backwards compatible. The Z value is incremented with
  71. ** each release but resets back to 0 when Y is incremented.
  72. **
  73. ** The SQLITE_VERSION_NUMBER is an integer with the value
  74. ** (X*1000000 + Y*1000 + Z). For example, for version "3.1.1beta",
  75. ** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using
  76. ** version 3.1.1 or greater at compile time, programs may use the test
  77. ** (SQLITE_VERSION_NUMBER>=3001001).
  78. **
  79. ** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
  80. */
  81. #define SQLITE_VERSION "3.4.0"
  82. #define SQLITE_VERSION_NUMBER 3004000
  83. /*
  84. ** CAPI3REF: Run-Time Library Version Numbers
  85. **
  86. ** These routines return values equivalent to the header constants
  87. ** [SQLITE_VERSION] and [SQLITE_VERSION_NUMBER]. The values returned
  88. ** by this routines should only be different from the header values
  89. ** if you compile your program using an sqlite3.h header from a
  90. ** different version of SQLite that the version of the library you
  91. ** link against.
  92. **
  93. ** The sqlite3_version[] string constant contains the text of the
  94. ** [SQLITE_VERSION] string. The sqlite3_libversion() function returns
  95. ** a poiner to the sqlite3_version[] string constant. The function
  96. ** is provided for DLL users who can only access functions and not
  97. ** constants within the DLL.
  98. */
  99. extern const char sqlite3_version[];
  100. const char *sqlite3_libversion(void);
  101. int sqlite3_libversion_number(void);
  102. /*
  103. ** CAPI3REF: Database Connection Handle
  104. **
  105. ** Each open SQLite database is represented by pointer to an instance of the
  106. ** opaque structure named "sqlite3". It is useful to think of an sqlite3
  107. ** pointer as an object. The [sqlite3_open] interface is its constructor
  108. ** and [sqlite3_close] is its destructor. There are many other interfaces
  109. ** (such as [sqlite3_prepare_v2], [sqlite3_create_function], and
  110. ** [sqlite3_busy_timeout] to name but three) that are methods on this
  111. ** object.
  112. */
  113. typedef struct sqlite3 sqlite3;
  114. /*
  115. ** CAPI3REF: 64-Bit Integer Types
  116. **
  117. ** Some compilers do not support the "long long" datatype. So we have
  118. ** to do compiler-specific typedefs for 64-bit signed and unsigned integers.
  119. **
  120. ** Many SQLite interface functions require a 64-bit integer arguments.
  121. ** Those interfaces are declared using this typedef.
  122. */
  123. #ifdef SQLITE_INT64_TYPE
  124. typedef SQLITE_INT64_TYPE sqlite_int64;
  125. typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
  126. #elif defined(_MSC_VER) || defined(__BORLANDC__)
  127. typedef __int64 sqlite_int64;
  128. typedef unsigned __int64 sqlite_uint64;
  129. #else
  130. typedef long long int sqlite_int64;
  131. typedef unsigned long long int sqlite_uint64;
  132. #endif
  133. /*
  134. ** If compiling for a processor that lacks floating point support,
  135. ** substitute integer for floating-point
  136. */
  137. #ifdef SQLITE_OMIT_FLOATING_POINT
  138. # define double sqlite_int64
  139. #endif
  140. /*
  141. ** CAPI3REF: Closing A Database Connection
  142. **
  143. ** Call this function with a pointer to a structure that was previously
  144. ** returned from [sqlite3_open()] and the corresponding database will by
  145. ** closed.
  146. **
  147. ** All SQL statements prepared using [sqlite3_prepare_v2()] or
  148. ** [sqlite3_prepare16_v2()] must be destroyed using [sqlite3_finalize()]
  149. ** before this routine is called. Otherwise, SQLITE_BUSY is returned and the
  150. ** database connection remains open.
  151. */
  152. int sqlite3_close(sqlite3 *);
  153. /*
  154. ** The type for a callback function.
  155. ** This is legacy and deprecated. It is included for historical
  156. ** compatibility and is not documented.
  157. */
  158. typedef int (*sqlite3_callback)(void*,int,char**, char**);
  159. /*
  160. ** CAPI3REF: One-Step Query Execution Interface
  161. **
  162. ** This interface is used to do a one-time evaluatation of zero
  163. ** or more SQL statements. UTF-8 text of the SQL statements to
  164. ** be evaluted is passed in as the second parameter. The statements
  165. ** are prepared one by one using [sqlite3_prepare()], evaluated
  166. ** using [sqlite3_step()], then destroyed using [sqlite3_finalize()].
  167. **
  168. ** If one or more of the SQL statements are queries, then
  169. ** the callback function specified by the 3rd parameter is
  170. ** invoked once for each row of the query result. This callback
  171. ** should normally return 0. If the callback returns a non-zero
  172. ** value then the query is aborted, all subsequent SQL statements
  173. ** are skipped and the sqlite3_exec() function returns the SQLITE_ABORT.
  174. **
  175. ** The 4th parameter to this interface is an arbitrary pointer that is
  176. ** passed through to the callback function as its first parameter.
  177. **
  178. ** The 2nd parameter to the callback function is the number of
  179. ** columns in the query result. The 3rd parameter to the callback
  180. ** is an array of strings holding the values for each column
  181. ** as extracted using [sqlite3_column_text()].
  182. ** The 4th parameter to the callback is an array of strings
  183. ** obtained using [sqlite3_column_name()] and holding
  184. ** the names of each column.
  185. **
  186. ** The callback function may be NULL, even for queries. A NULL
  187. ** callback is not an error. It just means that no callback
  188. ** will be invoked.
  189. **
  190. ** If an error occurs while parsing or evaluating the SQL (but
  191. ** not while executing the callback) then an appropriate error
  192. ** message is written into memory obtained from [sqlite3_malloc()] and
  193. ** *errmsg is made to point to that message. The calling function
  194. ** is responsible for freeing the memory that holds the error
  195. ** message. Use [sqlite3_free()] for this. If errmsg==NULL,
  196. ** then no error message is ever written.
  197. **
  198. ** The return value is is SQLITE_OK if there are no errors and
  199. ** some other [SQLITE_OK | return code] if there is an error.
  200. ** The particular return value depends on the type of error.
  201. **
  202. */
  203. int sqlite3_exec(
  204. sqlite3*, /* An open database */
  205. const char *sql, /* SQL to be evaluted */
  206. int (*callback)(void*,int,char**,char**), /* Callback function */
  207. void *, /* 1st argument to callback */
  208. char **errmsg /* Error msg written here */
  209. );
  210. /*
  211. ** CAPI3REF: Result Codes
  212. ** KEYWORDS: SQLITE_OK
  213. **
  214. ** Many SQLite functions return an integer result code from the set shown
  215. ** above in order to indicates success or failure.
  216. **
  217. ** The result codes above are the only ones returned by SQLite in its
  218. ** default configuration. However, the [sqlite3_extended_result_codes()]
  219. ** API can be used to set a database connectoin to return more detailed
  220. ** result codes.
  221. **
  222. ** See also: [SQLITE_IOERR_READ | extended result codes]
  223. **
  224. */
  225. #define SQLITE_OK 0 /* Successful result */
  226. /* beginning-of-error-codes */
  227. #define SQLITE_ERROR 1 /* SQL error or missing database */
  228. #define SQLITE_INTERNAL 2 /* NOT USED. Internal logic error in SQLite */
  229. #define SQLITE_PERM 3 /* Access permission denied */
  230. #define SQLITE_ABORT 4 /* Callback routine requested an abort */
  231. #define SQLITE_BUSY 5 /* The database file is locked */
  232. #define SQLITE_LOCKED 6 /* A table in the database is locked */
  233. #define SQLITE_NOMEM 7 /* A malloc() failed */
  234. #define SQLITE_READONLY 8 /* Attempt to write a readonly database */
  235. #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
  236. #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
  237. #define SQLITE_CORRUPT 11 /* The database disk image is malformed */
  238. #define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
  239. #define SQLITE_FULL 13 /* Insertion failed because database is full */
  240. #define SQLITE_CANTOPEN 14 /* Unable to open the database file */
  241. #define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */
  242. #define SQLITE_EMPTY 16 /* Database is empty */
  243. #define SQLITE_SCHEMA 17 /* The database schema changed */
  244. #define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
  245. #define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */
  246. #define SQLITE_MISMATCH 20 /* Data type mismatch */
  247. #define SQLITE_MISUSE 21 /* Library used incorrectly */
  248. #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
  249. #define SQLITE_AUTH 23 /* Authorization denied */
  250. #define SQLITE_FORMAT 24 /* Auxiliary database format error */
  251. #define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
  252. #define SQLITE_NOTADB 26 /* File opened that is not a database file */
  253. #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
  254. #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
  255. /* end-of-error-codes */
  256. /*
  257. ** CAPI3REF: Extended Result Codes
  258. **
  259. ** In its default configuration, SQLite API routines return one of 26 integer
  260. ** result codes described at result-codes. However, experience has shown that
  261. ** many of these result codes are too course-grained. They do not provide as
  262. ** much information about problems as users might like. In an effort to
  263. ** address this, newer versions of SQLite (version 3.3.8 and later) include
  264. ** support for additional result codes that provide more detailed information
  265. ** about errors. The extended result codes are enabled (or disabled) for
  266. ** each database
  267. ** connection using the [sqlite3_extended_result_codes()] API.
  268. **
  269. ** Some of the available extended result codes are listed above.
  270. ** We expect the number of extended result codes will be expand
  271. ** over time. Software that uses extended result codes should expect
  272. ** to see new result codes in future releases of SQLite.
  273. **
  274. ** The symbolic name for an extended result code always contains a related
  275. ** primary result code as a prefix. Primary result codes contain a single
  276. ** "_" character. Extended result codes contain two or more "_" characters.
  277. ** The numeric value of an extended result code can be converted to its
  278. ** corresponding primary result code by masking off the lower 8 bytes.
  279. **
  280. ** The SQLITE_OK result code will never be extended. It will always
  281. ** be exactly zero.
  282. */
  283. #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
  284. #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
  285. #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
  286. #define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
  287. #define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
  288. #define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
  289. #define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
  290. #define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
  291. #define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
  292. #define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
  293. #define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
  294. /*
  295. ** CAPI3REF: Enable Or Disable Extended Result Codes
  296. **
  297. ** This routine enables or disables the
  298. ** [SQLITE_IOERR_READ | extended result codes] feature.
  299. ** By default, SQLite API routines return one of only 26 integer
  300. ** [SQLITE_OK | result codes]. When extended result codes
  301. ** are enabled by this routine, the repetoire of result codes can be
  302. ** much larger and can (hopefully) provide more detailed information
  303. ** about the cause of an error.
  304. **
  305. ** The second argument is a boolean value that turns extended result
  306. ** codes on and off. Extended result codes are off by default for
  307. ** backwards compatibility with older versions of SQLite.
  308. */
  309. int sqlite3_extended_result_codes(sqlite3*, int onoff);
  310. /*
  311. ** CAPI3REF: Last Insert Rowid
  312. **
  313. ** Each entry in an SQLite table has a unique 64-bit signed integer key
  314. ** called the "rowid". The rowid is always available as an undeclared
  315. ** column named ROWID, OID, or _ROWID_. If the table has a column of
  316. ** type INTEGER PRIMARY KEY then that column is another an alias for the
  317. ** rowid.
  318. **
  319. ** This routine returns the rowid of the most recent INSERT into
  320. ** the database from the database connection given in the first
  321. ** argument. If no inserts have ever occurred on this database
  322. ** connection, zero is returned.
  323. **
  324. ** If an INSERT occurs within a trigger, then the rowid of the
  325. ** inserted row is returned by this routine as long as the trigger
  326. ** is running. But once the trigger terminates, the value returned
  327. ** by this routine reverts to the last value inserted before the
  328. ** trigger fired.
  329. */
  330. sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
  331. /*
  332. ** CAPI3REF: Count The Number Of Rows Modified
  333. **
  334. ** This function returns the number of database rows that were changed
  335. ** (or inserted or deleted) by the most recent SQL statement. Only
  336. ** changes that are directly specified by the INSERT, UPDATE, or
  337. ** DELETE statement are counted. Auxiliary changes caused by
  338. ** triggers are not counted. Use the [sqlite3_total_changes()] function
  339. ** to find the total number of changes including changes caused by triggers.
  340. **
  341. ** Within the body of a trigger, the sqlite3_changes() interface can be
  342. ** called to find the number of
  343. ** changes in the most recently completed INSERT, UPDATE, or DELETE
  344. ** statement within the body of the trigger.
  345. **
  346. ** All changes are counted, even if they were later undone by a
  347. ** ROLLBACK or ABORT. Except, changes associated with creating and
  348. ** dropping tables are not counted.
  349. **
  350. ** If a callback invokes [sqlite3_exec()] or [sqlite3_step()] recursively,
  351. ** then the changes in the inner, recursive call are counted together
  352. ** with the changes in the outer call.
  353. **
  354. ** SQLite implements the command "DELETE FROM table" without a WHERE clause
  355. ** by dropping and recreating the table. (This is much faster than going
  356. ** through and deleting individual elements form the table.) Because of
  357. ** this optimization, the change count for "DELETE FROM table" will be
  358. ** zero regardless of the number of elements that were originally in the
  359. ** table. To get an accurate count of the number of rows deleted, use
  360. ** "DELETE FROM table WHERE 1" instead.
  361. */
  362. int sqlite3_changes(sqlite3*);
  363. /*
  364. ** CAPI3REF: Total Number Of Rows Modified
  365. ***
  366. ** This function returns the number of database rows that have been
  367. ** modified by INSERT, UPDATE or DELETE statements since the database handle
  368. ** was opened. This includes UPDATE, INSERT and DELETE statements executed
  369. ** as part of trigger programs. All changes are counted as soon as the
  370. ** statement that makes them is completed (when the statement handle is
  371. ** passed to [sqlite3_reset()] or [sqlite_finalise()]).
  372. **
  373. ** See also the [sqlite3_change()] interface.
  374. **
  375. ** SQLite implements the command "DELETE FROM table" without a WHERE clause
  376. ** by dropping and recreating the table. (This is much faster than going
  377. ** through and deleting individual elements form the table.) Because of
  378. ** this optimization, the change count for "DELETE FROM table" will be
  379. ** zero regardless of the number of elements that were originally in the
  380. ** table. To get an accurate count of the number of rows deleted, use
  381. ** "DELETE FROM table WHERE 1" instead.
  382. */
  383. int sqlite3_total_changes(sqlite3*);
  384. /*
  385. ** CAPI3REF: Interrupt A Long-Running Query
  386. **
  387. ** This function causes any pending database operation to abort and
  388. ** return at its earliest opportunity. This routine is typically
  389. ** called in response to a user action such as pressing "Cancel"
  390. ** or Ctrl-C where the user wants a long query operation to halt
  391. ** immediately.
  392. **
  393. ** It is safe to call this routine from a thread different from the
  394. ** thread that is currently running the database operation.
  395. **
  396. ** The SQL operation that is interrupted will return [SQLITE_INTERRUPT].
  397. ** If an interrupted operation was an update that is inside an
  398. ** explicit transaction, then the entire transaction will be rolled
  399. ** back automatically.
  400. */
  401. void sqlite3_interrupt(sqlite3*);
  402. /*
  403. ** CAPI3REF: Determine If An SQL Statement Is Complete
  404. **
  405. ** These functions return true if the given input string comprises
  406. ** one or more complete SQL statements. For the sqlite3_complete() call,
  407. ** the parameter must be a nul-terminated UTF-8 string. For
  408. ** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
  409. ** is required.
  410. **
  411. ** These routines are useful for command-line input to determine if the
  412. ** currently entered text forms one or more complete SQL statements or
  413. ** if additional input is needed before sending the statements into
  414. ** SQLite for parsing. The algorithm is simple. If the
  415. ** last token other than spaces and comments is a semicolon, then return
  416. ** true. Actually, the algorithm is a little more complicated than that
  417. ** in order to deal with triggers, but the basic idea is the same: the
  418. ** statement is not complete unless it ends in a semicolon.
  419. */
  420. int sqlite3_complete(const char *sql);
  421. int sqlite3_complete16(const void *sql);
  422. /*
  423. ** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
  424. **
  425. ** This routine identifies a callback function that might be invoked
  426. ** whenever an attempt is made to open a database table
  427. ** that another thread or process has locked.
  428. ** If the busy callback is NULL, then [SQLITE_BUSY]
  429. ** (or sometimes [SQLITE_IOERR_BLOCKED])
  430. ** is returned immediately upon encountering the lock.
  431. ** If the busy callback is not NULL, then the
  432. ** callback will be invoked with two arguments. The
  433. ** first argument to the handler is a copy of the void* pointer which
  434. ** is the third argument to this routine. The second argument to
  435. ** the handler is the number of times that the busy handler has
  436. ** been invoked for this locking event. If the
  437. ** busy callback returns 0, then no additional attempts are made to
  438. ** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
  439. ** If the callback returns non-zero, then another attempt is made to open the
  440. ** database for reading and the cycle repeats.
  441. **
  442. ** The presence of a busy handler does not guarantee that
  443. ** it will be invoked when there is lock contention.
  444. ** If SQLite determines that invoking the busy handler could result in
  445. ** a deadlock, it will return [SQLITE_BUSY] instead.
  446. ** Consider a scenario where one process is holding a read lock that
  447. ** it is trying to promote to a reserved lock and
  448. ** a second process is holding a reserved lock that it is trying
  449. ** to promote to an exclusive lock. The first process cannot proceed
  450. ** because it is blocked by the second and the second process cannot
  451. ** proceed because it is blocked by the first. If both processes
  452. ** invoke the busy handlers, neither will make any progress. Therefore,
  453. ** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
  454. ** will induce the first process to release its read lock and allow
  455. ** the second process to proceed.
  456. **
  457. ** The default busy callback is NULL.
  458. **
  459. ** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] when
  460. ** SQLite is in the middle of a large transaction where all the
  461. ** changes will not fit into the in-memory cache. SQLite will
  462. ** already hold a RESERVED lock on the database file, but it needs
  463. ** to promote this lock to EXCLUSIVE so that it can spill cache
  464. ** pages into the database file without harm to concurrent
  465. ** readers. If it is unable to promote the lock, then the in-memory
  466. ** cache will be left in an inconsistent state and so the error
  467. ** code is promoted from the relatively benign [SQLITE_BUSY] to
  468. ** the more severe [SQLITE_IOERR_BLOCKED]. This error code promotion
  469. ** forces an automatic rollback of the changes. See the
  470. ** <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
  471. ** CorruptionFollowingBusyError</a> wiki page for a discussion of why
  472. ** this is important.
  473. **
  474. ** Sqlite is re-entrant, so the busy handler may start a new query.
  475. ** (It is not clear why anyone would every want to do this, but it
  476. ** is allowed, in theory.) But the busy handler may not close the
  477. ** database. Closing the database from a busy handler will delete
  478. ** data structures out from under the executing query and will
  479. ** probably result in a segmentation fault or other runtime error.
  480. **
  481. ** There can only be a single busy handler defined for each database
  482. ** connection. Setting a new busy handler clears any previous one.
  483. ** Note that calling [sqlite3_busy_timeout()] will also set or clear
  484. ** the busy handler.
  485. */
  486. int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
  487. /*
  488. ** CAPI3REF: Set A Busy Timeout
  489. **
  490. ** This routine sets a busy handler that sleeps for a while when a
  491. ** table is locked. The handler will sleep multiple times until
  492. ** at least "ms" milliseconds of sleeping have been done. After
  493. ** "ms" milliseconds of sleeping, the handler returns 0 which
  494. ** causes [sqlite3_step()] to return [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
  495. **
  496. ** Calling this routine with an argument less than or equal to zero
  497. ** turns off all busy handlers.
  498. **
  499. ** There can only be a single busy handler for a particular database
  500. ** connection. If another busy handler was defined
  501. ** (using [sqlite3_busy_handler()]) prior to calling
  502. ** this routine, that other busy handler is cleared.
  503. */
  504. int sqlite3_busy_timeout(sqlite3*, int ms);
  505. /*
  506. ** CAPI3REF: Convenience Routines For Running Queries
  507. **
  508. ** This next routine is a convenience wrapper around [sqlite3_exec()].
  509. ** Instead of invoking a user-supplied callback for each row of the
  510. ** result, this routine remembers each row of the result in memory
  511. ** obtained from [sqlite3_malloc()], then returns all of the result after the
  512. ** query has finished.
  513. **
  514. ** As an example, suppose the query result where this table:
  515. **
  516. ** <pre>
  517. ** Name | Age
  518. ** -----------------------
  519. ** Alice | 43
  520. ** Bob | 28
  521. ** Cindy | 21
  522. ** </pre>
  523. **
  524. ** If the 3rd argument were &azResult then after the function returns
  525. ** azResult will contain the following data:
  526. **
  527. ** <pre>
  528. ** azResult[0] = "Name";
  529. ** azResult[1] = "Age";
  530. ** azResult[2] = "Alice";
  531. ** azResult[3] = "43";
  532. ** azResult[4] = "Bob";
  533. ** azResult[5] = "28";
  534. ** azResult[6] = "Cindy";
  535. ** azResult[7] = "21";
  536. ** </pre>
  537. **
  538. ** Notice that there is an extra row of data containing the column
  539. ** headers. But the *nrow return value is still 3. *ncolumn is
  540. ** set to 2. In general, the number of values inserted into azResult
  541. ** will be ((*nrow) + 1)*(*ncolumn).
  542. **
  543. ** After the calling function has finished using the result, it should
  544. ** pass the result data pointer to sqlite3_free_table() in order to
  545. ** release the memory that was malloc-ed. Because of the way the
  546. ** [sqlite3_malloc()] happens, the calling function must not try to call
  547. ** [sqlite3_free()] directly. Only [sqlite3_free_table()] is able to release
  548. ** the memory properly and safely.
  549. **
  550. ** The return value of this routine is the same as from [sqlite3_exec()].
  551. */
  552. int sqlite3_get_table(
  553. sqlite3*, /* An open database */
  554. const char *sql, /* SQL to be executed */
  555. char ***resultp, /* Result written to a char *[] that this points to */
  556. int *nrow, /* Number of result rows written here */
  557. int *ncolumn, /* Number of result columns written here */
  558. char **errmsg /* Error msg written here */
  559. );
  560. void sqlite3_free_table(char **result);
  561. /*
  562. ** CAPI3REF: Formatted String Printing Functions
  563. **
  564. ** These routines are workalikes of the "printf()" family of functions
  565. ** from the standard C library.
  566. **
  567. ** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
  568. ** results into memory obtained from [sqlite_malloc()].
  569. ** The strings returned by these two routines should be
  570. ** released by [sqlite3_free()]. Both routines return a
  571. ** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
  572. ** memory to hold the resulting string.
  573. **
  574. ** In sqlite3_snprintf() routine is similar to "snprintf()" from
  575. ** the standard C library. The result is written into the
  576. ** buffer supplied as the second parameter whose size is given by
  577. ** the first parameter. Note that the order of the
  578. ** first two parameters is reversed from snprintf(). This is an
  579. ** historical accident that cannot be fixed without breaking
  580. ** backwards compatibility. Note also that sqlite3_snprintf()
  581. ** returns a pointer to its buffer instead of the number of
  582. ** characters actually written into the buffer. We admit that
  583. ** the number of characters written would be a more useful return
  584. ** value but we cannot change the implementation of sqlite3_snprintf()
  585. ** now without breaking compatibility.
  586. **
  587. ** As long as the buffer size is greater than zero, sqlite3_snprintf()
  588. ** guarantees that the buffer is always zero-terminated. The first
  589. ** parameter "n" is the total size of the buffer, including space for
  590. ** the zero terminator. So the longest string that can be completely
  591. ** written will be n-1 characters.
  592. **
  593. ** These routines all implement some additional formatting
  594. ** options that are useful for constructing SQL statements.
  595. ** All of the usual printf formatting options apply. In addition, there
  596. ** is are "%q" and "%Q" options.
  597. **
  598. ** The %q option works like %s in that it substitutes a null-terminated
  599. ** string from the argument list. But %q also doubles every '\'' character.
  600. ** %q is designed for use inside a string literal. By doubling each '\''
  601. ** character it escapes that character and allows it to be inserted into
  602. ** the string.
  603. **
  604. ** For example, so some string variable contains text as follows:
  605. **
  606. ** <blockquote><pre>
  607. ** char *zText = "It's a happy day!";
  608. ** </pre></blockquote>
  609. **
  610. ** One can use this text in an SQL statement as follows:
  611. **
  612. ** <blockquote><pre>
  613. ** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
  614. ** sqlite3_exec(db, zSQL, 0, 0, 0);
  615. ** sqlite3_free(zSQL);
  616. ** </pre></blockquote>
  617. **
  618. ** Because the %q format string is used, the '\'' character in zText
  619. ** is escaped and the SQL generated is as follows:
  620. **
  621. ** <blockquote><pre>
  622. ** INSERT INTO table1 VALUES('It''s a happy day!')
  623. ** </pre></blockquote>
  624. **
  625. ** This is correct. Had we used %s instead of %q, the generated SQL
  626. ** would have looked like this:
  627. **
  628. ** <blockquote><pre>
  629. ** INSERT INTO table1 VALUES('It's a happy day!');
  630. ** </pre></blockquote>
  631. **
  632. ** This second example is an SQL syntax error. As a general rule you
  633. ** should always use %q instead of %s when inserting text into a string
  634. ** literal.
  635. **
  636. ** The %Q option works like %q except it also adds single quotes around
  637. ** the outside of the total string. Or if the parameter in the argument
  638. ** list is a NULL pointer, %Q substitutes the text "NULL" (without single
  639. ** quotes) in place of the %Q option. So, for example, one could say:
  640. **
  641. ** <blockquote><pre>
  642. ** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
  643. ** sqlite3_exec(db, zSQL, 0, 0, 0);
  644. ** sqlite3_free(zSQL);
  645. ** </pre></blockquote>
  646. **
  647. ** The code above will render a correct SQL statement in the zSQL
  648. ** variable even if the zText variable is a NULL pointer.
  649. */
  650. char *sqlite3_mprintf(const char*,...);
  651. char *sqlite3_vmprintf(const char*, va_list);
  652. char *sqlite3_snprintf(int,char*,const char*, ...);
  653. /*
  654. ** CAPI3REF: Memory Allocation Functions
  655. **
  656. ** SQLite uses its own memory allocator. On some installations, this
  657. ** memory allocator is identical to the standard malloc()/realloc()/free()
  658. ** and can be used interchangable. On others, the implementations are
  659. ** different. For maximum portability, it is best not to mix calls
  660. ** to the standard malloc/realloc/free with the sqlite versions.
  661. */
  662. void *sqlite3_malloc(int);
  663. void *sqlite3_realloc(void*, int);
  664. void sqlite3_free(void*);
  665. /*
  666. ** CAPI3REF: Compile-Time Authorization Callbacks
  667. ***
  668. ** This routine registers a authorizer callback with the SQLite library.
  669. ** The authorizer callback is invoked as SQL statements are being compiled
  670. ** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
  671. ** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. At various
  672. ** points during the compilation process, as logic is being created
  673. ** to perform various actions, the authorizer callback is invoked to
  674. ** see if those actions are allowed. The authorizer callback should
  675. ** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
  676. ** specific action but allow the SQL statement to continue to be
  677. ** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
  678. ** rejected with an error.
  679. **
  680. ** Depending on the action, the [SQLITE_IGNORE] and [SQLITE_DENY] return
  681. ** codes might mean something different or they might mean the same
  682. ** thing. If the action is, for example, to perform a delete opertion,
  683. ** then [SQLITE_IGNORE] and [SQLITE_DENY] both cause the statement compilation
  684. ** to fail with an error. But if the action is to read a specific column
  685. ** from a specific table, then [SQLITE_DENY] will cause the entire
  686. ** statement to fail but [SQLITE_IGNORE] will cause a NULL value to be
  687. ** read instead of the actual column value.
  688. **
  689. ** The first parameter to the authorizer callback is a copy of
  690. ** the third parameter to the sqlite3_set_authorizer() interface.
  691. ** The second parameter to the callback is an integer
  692. ** [SQLITE_COPY | action code] that specifies the particular action
  693. ** to be authorized. The available action codes are
  694. ** [SQLITE_COPY | documented separately]. The third through sixth
  695. ** parameters to the callback are strings that contain additional
  696. ** details about the action to be authorized.
  697. **
  698. ** An authorizer is used when preparing SQL statements from an untrusted
  699. ** source, to ensure that the SQL statements do not try to access data
  700. ** that they are not allowed to see, or that they do not try to
  701. ** execute malicious statements that damage the database. For
  702. ** example, an application may allow a user to enter arbitrary
  703. ** SQL queries for evaluation by a database. But the application does
  704. ** not want the user to be able to make arbitrary changes to the
  705. ** database. An authorizer could then be put in place while the
  706. ** user-entered SQL is being prepared that disallows everything
  707. ** except SELECT statements.
  708. **
  709. ** Only a single authorizer can be in place on a database connection
  710. ** at a time. Each call to sqlite3_set_authorizer overrides the
  711. ** previous call. A NULL authorizer means that no authorization
  712. ** callback is invoked. The default authorizer is NULL.
  713. **
  714. ** Note that the authorizer callback is invoked only during
  715. ** [sqlite3_prepare()] or its variants. Authorization is not
  716. ** performed during statement evaluation in [sqlite3_step()].
  717. */
  718. int sqlite3_set_authorizer(
  719. sqlite3*,
  720. int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
  721. void *pUserData
  722. );
  723. /*
  724. ** CAPI3REF: Authorizer Return Codes
  725. **
  726. ** The [sqlite3_set_authorizer | authorizer callback function] must
  727. ** return either [SQLITE_OK] or one of these two constants in order
  728. ** to signal SQLite whether or not the action is permitted. See the
  729. ** [sqlite3_set_authorizer | authorizer documentation] for additional
  730. ** information.
  731. */
  732. #define SQLITE_DENY 1 /* Abort the SQL statement with an error */
  733. #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
  734. /*
  735. ** CAPI3REF: Authorizer Action Codes
  736. **
  737. ** The [sqlite3_set_authorizer()] interface registers a callback function
  738. ** that is invoked to authorizer certain SQL statement actions. The
  739. ** second parameter to the callback is an integer code that specifies
  740. ** what action is being authorized. These are the integer action codes that
  741. ** the authorizer callback may be passed.
  742. **
  743. ** These action code values signify what kind of operation is to be
  744. ** authorized. The 3rd and 4th parameters to the authorization callback
  745. ** function will be parameters or NULL depending on which of these
  746. ** codes is used as the second parameter. The 5th parameter to the
  747. ** authorizer callback is the name of the database ("main", "temp",
  748. ** etc.) if applicable. The 6th parameter to the authorizer callback
  749. ** is the name of the inner-most trigger or view that is responsible for
  750. ** the access attempt or NULL if this access attempt is directly from
  751. ** top-level SQL code.
  752. */
  753. /******************************************* 3rd ************ 4th ***********/
  754. #define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
  755. #define SQLITE_CREATE_TABLE 2 /* Table Name NULL */
  756. #define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */
  757. #define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */
  758. #define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */
  759. #define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */
  760. #define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */
  761. #define SQLITE_CREATE_VIEW 8 /* View Name NULL */
  762. #define SQLITE_DELETE 9 /* Table Name NULL */
  763. #define SQLITE_DROP_INDEX 10 /* Index Name Table Name */
  764. #define SQLITE_DROP_TABLE 11 /* Table Name NULL */
  765. #define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */
  766. #define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */
  767. #define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */
  768. #define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */
  769. #define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */
  770. #define SQLITE_DROP_VIEW 17 /* View Name NULL */
  771. #define SQLITE_INSERT 18 /* Table Name NULL */
  772. #define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */
  773. #define SQLITE_READ 20 /* Table Name Column Name */
  774. #define SQLITE_SELECT 21 /* NULL NULL */
  775. #define SQLITE_TRANSACTION 22 /* NULL NULL */
  776. #define SQLITE_UPDATE 23 /* Table Name Column Name */
  777. #define SQLITE_ATTACH 24 /* Filename NULL */
  778. #define SQLITE_DETACH 25 /* Database Name NULL */
  779. #define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */
  780. #define SQLITE_REINDEX 27 /* Index Name NULL */
  781. #define SQLITE_ANALYZE 28 /* Table Name NULL */
  782. #define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
  783. #define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
  784. #define SQLITE_FUNCTION 31 /* Function Name NULL */
  785. #define SQLITE_COPY 0 /* No longer used */
  786. /*
  787. ** CAPI3REF: Tracing And Profiling Functions
  788. **
  789. ** These routines register callback functions that can be used for
  790. ** tracing and profiling the execution of SQL statements.
  791. ** The callback function registered by sqlite3_trace() is invoked
  792. ** at the first [sqlite3_step()] for the evaluation of an SQL statement.
  793. ** The callback function registered by sqlite3_profile() is invoked
  794. ** as each SQL statement finishes and includes
  795. ** information on how long that statement ran.
  796. **
  797. ** The sqlite3_profile() API is currently considered experimental and
  798. ** is subject to change.
  799. */
  800. void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
  801. void *sqlite3_profile(sqlite3*,
  802. void(*xProfile)(void*,const char*,sqlite_uint64), void*);
  803. /*
  804. ** CAPI3REF: Query Progress Callbacks
  805. **
  806. ** This routine configures a callback function - the progress callback - that
  807. ** is invoked periodically during long running calls to [sqlite3_exec()],
  808. ** [sqlite3_step()] and [sqlite3_get_table()]. An example use for this
  809. ** interface is to keep a GUI updated during a large query.
  810. **
  811. ** The progress callback is invoked once for every N virtual machine opcodes,
  812. ** where N is the second argument to this function. The progress callback
  813. ** itself is identified by the third argument to this function. The fourth
  814. ** argument to this function is a void pointer passed to the progress callback
  815. ** function each time it is invoked.
  816. **
  817. ** If a call to [sqlite3_exec()], [sqlite3_step()], or [sqlite3_get_table()]
  818. ** results in fewer than N opcodes being executed, then the progress
  819. ** callback is never invoked.
  820. **
  821. ** Only a single progress callback function may be registered for each
  822. ** open database connection. Every call to sqlite3_progress_handler()
  823. ** overwrites the results of the previous call.
  824. ** To remove the progress callback altogether, pass NULL as the third
  825. ** argument to this function.
  826. **
  827. ** If the progress callback returns a result other than 0, then the current
  828. ** query is immediately terminated and any database changes rolled back.
  829. ** The containing [sqlite3_exec()], [sqlite3_step()], or
  830. ** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. This feature
  831. ** can be used, for example, to implement the "Cancel" button on a
  832. ** progress dialog box in a GUI.
  833. */
  834. void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
  835. /*
  836. ** CAPI3REF: Opening A New Database Connection
  837. **
  838. ** Open the sqlite database file "filename". The "filename" is UTF-8
  839. ** encoded for sqlite3_open() and UTF-16 encoded in the native byte order
  840. ** for sqlite3_open16(). An [sqlite3*] handle is returned in *ppDb, even
  841. ** if an error occurs. If the database is opened (or created) successfully,
  842. ** then SQLITE_OK is returned. Otherwise an error code is returned. The
  843. ** sqlite3_errmsg() or sqlite3_errmsg16() routines can be used to obtain
  844. ** an English language description of the error.
  845. **
  846. ** If the database file does not exist, then a new database will be created
  847. ** as needed. The default encoding for the database will be UTF-8 if
  848. ** sqlite3_open() is called and UTF-16 if sqlite3_open16 is used.
  849. **
  850. ** Whether or not an error occurs when it is opened, resources associated
  851. ** with the [sqlite3*] handle should be released by passing it to
  852. ** sqlite3_close() when it is no longer required.
  853. **
  854. ** Note to windows users: The encoding used for the filename argument
  855. ** of sqlite3_open() must be UTF-8, not whatever codepage is currently
  856. ** defined. Filenames containing international characters must be converted
  857. ** to UTF-8 prior to passing them into sqlite3_open().
  858. */
  859. int sqlite3_open(
  860. const char *filename, /* Database filename (UTF-8) */
  861. sqlite3 **ppDb /* OUT: SQLite db handle */
  862. );
  863. int sqlite3_open16(
  864. const void *filename, /* Database filename (UTF-16) */
  865. sqlite3 **ppDb /* OUT: SQLite db handle */
  866. );
  867. /*
  868. ** CAPI3REF: Error Codes And Messages
  869. **
  870. ** The sqlite3_errcode() interface returns the numeric
  871. ** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
  872. ** for the most recent failed sqlite3_* API call associated
  873. ** with [sqlite3] handle 'db'. If a prior API call failed but the
  874. ** most recent API call succeeded, the return value from sqlite3_errcode()
  875. ** is undefined.
  876. **
  877. ** The sqlite3_errmsg() and sqlite3_errmsg16() return English-langauge
  878. ** text that describes the error, as either UTF8 or UTF16 respectively.
  879. ** Memory to hold the error message string is managed internally. The
  880. ** string may be overwritten or deallocated by subsequent calls to SQLite
  881. ** interface functions.
  882. **
  883. ** Calls to many sqlite3_* functions set the error code and string returned
  884. ** by [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()]
  885. ** (overwriting the previous values). Note that calls to [sqlite3_errcode()],
  886. ** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
  887. ** results of future invocations. Calls to API routines that do not return
  888. ** an error code (examples: [sqlite3_data_count()] or [sqlite3_mprintf()]) do
  889. ** not change the error code returned by this routine.
  890. **
  891. ** Assuming no other intervening sqlite3_* API calls are made, the error
  892. ** code returned by this function is associated with the same error as
  893. ** the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
  894. */
  895. int sqlite3_errcode(sqlite3 *db);
  896. const char *sqlite3_errmsg(sqlite3*);
  897. const void *sqlite3_errmsg16(sqlite3*);
  898. /*
  899. ** CAPI3REF: SQL Statement Object
  900. **
  901. ** Instance of this object represent single SQL statements. This
  902. ** is variously known as a "prepared statement" or a
  903. ** "compiled SQL statement" or simply as a "statement".
  904. **
  905. ** The life of a statement object goes something like this:
  906. **
  907. ** <ol>
  908. ** <li> Create the object using [sqlite3_prepare_v2()] or a related
  909. ** function.
  910. ** <li> Bind values to host parameters using
  911. ** [sqlite3_bind_blob | sqlite3_bind_* interfaces].
  912. ** <li> Run the SQL by calling [sqlite3_step()] one or more times.
  913. ** <li> Reset the statement using [sqlite3_reset()] then go back
  914. ** to step 2. Do this zero or more times.
  915. ** <li> Destroy the object using [sqlite3_finalize()].
  916. ** </ol>
  917. **
  918. ** Refer to documentation on individual methods above for additional
  919. ** information.
  920. */
  921. typedef struct sqlite3_stmt sqlite3_stmt;
  922. /*
  923. ** CAPI3REF: Compiling An SQL Statement
  924. **
  925. ** To execute an SQL query, it must first be compiled into a byte-code
  926. ** program using one of these routines.
  927. **
  928. ** The first argument "db" is an [sqlite3 | SQLite database handle]
  929. ** obtained from a prior call to [sqlite3_open()] or [sqlite3_open16()].
  930. ** The second argument "zSql" is the statement to be compiled, encoded
  931. ** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2()
  932. ** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
  933. ** use UTF-16. If the next argument, "nBytes", is less
  934. ** than zero, then zSql is read up to the first zero terminator. If
  935. ** "nBytes" is not less than zero, then it is the length of the string zSql
  936. ** in bytes (not characters).
  937. **
  938. ** *pzTail is made to point to the first byte past the end of the first
  939. ** SQL statement in zSql. This routine only compiles the first statement
  940. ** in zSql, so *pzTail is left pointing to what remains uncompiled.
  941. **
  942. ** *ppStmt is left pointing to a compiled
  943. ** [sqlite3_stmt | SQL statement structure] that can be
  944. ** executed using [sqlite3_step()]. Or if there is an error, *ppStmt may be
  945. ** set to NULL. If the input text contained no SQL (if the input is and
  946. ** empty string or a comment) then *ppStmt is set to NULL. The calling
  947. ** procedure is responsible for deleting the compiled SQL statement
  948. ** using [sqlite3_finalize()] after it has finished with it.
  949. **
  950. ** On success, [SQLITE_OK] is returned. Otherwise an
  951. ** [SQLITE_ERROR | error code] is returned.
  952. **
  953. ** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
  954. ** recommended for all new programs. The two older interfaces are retained
  955. ** for backwards compatibility, but their use is discouraged.
  956. ** In the "v2" interfaces, the prepared statement
  957. ** that is returned (the [sqlite3_stmt] object) contains a copy of the
  958. ** original SQL text. This causes the [sqlite3_step()] interface to
  959. ** behave a differently in two ways:
  960. **
  961. ** <ol>
  962. ** <li>
  963. ** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
  964. ** always used to do, [sqlite3_step()] will automatically recompile the SQL
  965. ** statement and try to run it again. If the schema has changed in a way
  966. ** that makes the statement no longer valid, [sqlite3_step()] will still
  967. ** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is
  968. ** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the
  969. ** error go away. Note: use [sqlite3_errmsg()] to find the text of the parsing
  970. ** error that results in an [SQLITE_SCHEMA] return.
  971. ** </li>
  972. **
  973. ** <li>
  974. ** When an error occurs,
  975. ** [sqlite3_step()] will return one of the detailed
  976. ** [SQLITE_ERROR | result codes] or
  977. ** [SQLITE_IOERR_READ | extended result codes] such as directly.
  978. ** The legacy behavior was that [sqlite3_step()] would only return a generic
  979. ** [SQLITE_ERROR] result code and you would have to make a second call to
  980. ** [sqlite3_reset()] in order to find the underlying cause of the problem.
  981. ** With the "v2" prepare interfaces, the underlying reason for the error is
  982. ** returned immediately.
  983. ** </li>
  984. ** </ol>
  985. */
  986. int sqlite3_prepare(
  987. sqlite3 *db, /* Database handle */
  988. const char *zSql, /* SQL statement, UTF-8 encoded */
  989. int nBytes, /* Length of zSql in bytes. */
  990. sqlite3_stmt **ppStmt, /* OUT: Statement handle */
  991. const char **pzTail /* OUT: Pointer to unused portion of zSql */
  992. );
  993. int sqlite3_prepare_v2(
  994. sqlite3 *db, /* Database handle */
  995. const char *zSql, /* SQL statement, UTF-8 encoded */
  996. int nBytes, /* Length of zSql in bytes. */
  997. sqlite3_stmt **ppStmt, /* OUT: Statement handle */
  998. const char **pzTail /* OUT: Pointer to unused portion of zSql */
  999. );
  1000. int sqlite3_prepare16(
  1001. sqlite3 *db, /* Database handle */
  1002. const void *zSql, /* SQL statement, UTF-16 encoded */
  1003. int nBytes, /* Length of zSql in bytes. */
  1004. sqlite3_stmt **ppStmt, /* OUT: Statement handle */
  1005. const void **pzTail /* OUT: Pointer to unused portion of zSql */
  1006. );
  1007. int sqlite3_prepare16_v2(
  1008. sqlite3 *db, /* Database handle */
  1009. const void *zSql, /* SQL statement, UTF-16 encoded */
  1010. int nBytes, /* Length of zSql in bytes. */
  1011. sqlite3_stmt **ppStmt, /* OUT: Statement handle */
  1012. const void **pzTail /* OUT: Pointer to unused portion of zSql */
  1013. );
  1014. /*
  1015. ** CAPI3REF: Dynamically Typed Value Object
  1016. **
  1017. ** SQLite uses dynamic typing for the values it stores. Values can
  1018. ** be integers, floating point values, strings, BLOBs, or NULL. When
  1019. ** passing around values internally, each value is represented as
  1020. ** an instance of the sqlite3_value object.
  1021. */
  1022. typedef struct Mem sqlite3_value;
  1023. /*
  1024. ** CAPI3REF: SQL Function Context Object
  1025. **
  1026. ** The context in which an SQL function executes is stored in an
  1027. ** sqlite3_context object. A pointer to such an object is the
  1028. ** first parameter to user-defined SQL functions.
  1029. */
  1030. typedef struct sqlite3_context sqlite3_context;
  1031. /*
  1032. ** CAPI3REF: Binding Values To Prepared Statements
  1033. **
  1034. ** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
  1035. ** one or more literals can be replace by a parameter in one of these
  1036. ** forms:
  1037. **
  1038. ** <ul>
  1039. ** <li> ?
  1040. ** <li> ?NNN
  1041. ** <li> :AAA
  1042. ** <li> @AAA
  1043. ** <li> $VVV
  1044. ** </ul>
  1045. **
  1046. ** In the parameter forms shown above NNN is an integer literal,
  1047. ** AAA is an alphanumeric identifier and VVV is a variable name according
  1048. ** to the syntax rules of the TCL programming language.
  1049. ** The values of these parameters (also called "host parameter names")
  1050. ** can be set using the sqlite3_bind_*() routines defined here.
  1051. **
  1052. ** The first argument to the sqlite3_bind_*() routines always is a pointer
  1053. ** to the [sqlite3_stmt] object returned from [sqlite3_prepare_v2()] or
  1054. ** its variants. The second
  1055. ** argument is the index of the parameter to be set. The first parameter has
  1056. ** an index of 1. When the same named parameter is used more than once, second
  1057. ** and subsequent
  1058. ** occurrences have the same index as the first occurrence. The index for
  1059. ** named parameters can be looked up using the
  1060. ** [sqlite3_bind_parameter_name()] API if desired. The index for "?NNN"
  1061. ** parametes is the value of NNN.
  1062. ** The NNN value must be between 1 and the compile-time
  1063. ** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999).
  1064. ** See <a href="limits.html">limits.html</a> for additional information.
  1065. **
  1066. ** The third argument is the value to bind to the parameter.
  1067. **
  1068. ** In those
  1069. ** routines that have a fourth argument, its value is the number of bytes
  1070. ** in the parameter. To be clear: the value is the number of bytes in the
  1071. ** string, not the number of characters. The number
  1072. ** of bytes does not include the zero-terminator at the end of strings.
  1073. ** If the fourth parameter is negative, the length of the string is
  1074. ** number of bytes up to the first zero terminator.
  1075. **
  1076. ** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
  1077. ** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
  1078. ** text after SQLite has finished with it. If the fifth argument is the
  1079. ** special value [SQLITE_STATIC], then the library assumes that the information
  1080. ** is in static, unmanaged space and does not need to be freed. If the
  1081. ** fifth argument has the value [SQLITE_TRANSIENT], then SQLite makes its
  1082. ** own private copy of the data immediately, before the sqlite3_bind_*()
  1083. ** routine returns.
  1084. **
  1085. ** The sqlite3_bind_zeroblob() routine binds a BLOB of length n that
  1086. ** is filled with zeros. A zeroblob uses a fixed amount of memory
  1087. ** (just an integer to hold it size) while it is being processed.
  1088. ** Zeroblobs are intended to serve as place-holders for BLOBs whose
  1089. ** content is later written using
  1090. ** [sqlite3_blob_open | increment BLOB I/O] routines.
  1091. **
  1092. ** The sqlite3_bind_*() routines must be called after
  1093. ** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
  1094. ** before [sqlite3_step()].
  1095. ** Bindings are not cleared by the [sqlite3_reset()] routine.
  1096. ** Unbound parameters are interpreted as NULL.
  1097. **
  1098. ** These routines return [SQLITE_OK] on success or an error code if
  1099. ** anything goes wrong. [SQLITE_RANGE] is returned if the parameter
  1100. ** index is out of range. [SQLITE_NOMEM] is returned if malloc fails.
  1101. ** [SQLITE_MISUSE] is returned if these routines are called on a virtual
  1102. ** machine that is the wrong state or which has already been finalized.
  1103. */
  1104. int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
  1105. int sqlite3_bind_double(sqlite3_stmt*, int, double);
  1106. int sqlite3_bind_int(sqlite3_stmt*, int, int);
  1107. int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
  1108. int sqlite3_bind_null(sqlite3_stmt*, int);
  1109. int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
  1110. int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
  1111. int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
  1112. int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
  1113. /*
  1114. ** CAPI3REF: Number Of Host Parameters
  1115. **
  1116. ** Return the largest host parameter index in the precompiled statement given
  1117. ** as the argument. When the host parameters are of the forms like ":AAA"
  1118. ** or "?", then they are assigned sequential increasing numbers beginning
  1119. ** with one, so the value returned is the number of parameters. However
  1120. ** if the same host parameter name is used multiple times, each occurrance
  1121. ** is given the same number, so the value returned in that case is the number
  1122. ** of unique host parameter names. If host parameters of the form "?NNN"
  1123. ** are used (where NNN is an integer) then there might be gaps in the
  1124. ** numbering and the value returned by this interface is the index of the
  1125. ** host parameter with the largest index value.
  1126. */
  1127. int sqlite3_bind_parameter_count(sqlite3_stmt*);
  1128. /*
  1129. ** CAPI3REF: Name Of A Host Parameter
  1130. **
  1131. ** This routine returns a pointer to the name of the n-th parameter in a
  1132. ** [sqlite3_stmt | prepared statement].
  1133. ** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
  1134. ** which is the string ":AAA" or "@AAA" or "$VVV".
  1135. ** In other words, the initial ":" or "$" or "@"
  1136. ** is included as part of the name.
  1137. ** Parameters of the form "?" or "?NNN" have no name.
  1138. **
  1139. ** The first bound parameter has an index of 1, not 0.
  1140. **
  1141. ** If the value n is out of range or if the n-th parameter is nameless,
  1142. ** then NULL is returned. The returned string is always in the
  1143. ** UTF-8 encoding even if the named parameter was originally specified
  1144. ** as UTF-16 in [sqlite3_prepare16()] or [sqlite3_prepare16_v2()].
  1145. */
  1146. const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
  1147. /*
  1148. ** CAPI3REF: Index Of A Parameter With A Given Name
  1149. **
  1150. ** This routine returns the index of a host parameter with the given name.
  1151. ** The name must match exactly. If no parameter with the given name is
  1152. ** found, return 0. Parameter names must be UTF8.
  1153. */
  1154. int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
  1155. /*
  1156. ** CAPI3REF: Reset All Bindings On A Prepared Statement
  1157. **
  1158. ** Contrary to the intuition of many, [sqlite3_reset()] does not
  1159. ** reset the [sqlite3_bind_blob | bindings] on a
  1160. ** [sqlite3_stmt | prepared statement]. Use this routine to
  1161. ** reset all host parameters to NULL.
  1162. */
  1163. int sqlite3_clear_bindings(sqlite3_stmt*);
  1164. /*
  1165. ** CAPI3REF: Number Of Columns In A Result Set
  1166. **
  1167. ** Return the number of columns in the result set returned by the
  1168. ** [sqlite3_stmt | compiled SQL statement]. This routine returns 0
  1169. ** if pStmt is an SQL statement that does not return data (for
  1170. ** example an UPDATE).
  1171. */
  1172. int sqlite3_column_count(sqlite3_stmt *pStmt);
  1173. /*
  1174. ** CAPI3REF: Column Names In A Result Set
  1175. **
  1176. ** These routines return the name assigned to a particular column
  1177. ** in the result set of a SELECT statement. The sqlite3_column_name()
  1178. ** interface returns a pointer to a UTF8 string and sqlite3_column_name16()
  1179. ** returns a pointer to a UTF16 string. The first parameter is the
  1180. ** [sqlite_stmt | prepared statement] that implements the SELECT statement.
  1181. ** The second parameter is the column number. The left-most column is
  1182. ** number 0.
  1183. **
  1184. ** The returned string pointer is valid until either the
  1185. ** [sqlite_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
  1186. ** or until the next call sqlite3_column_name() or sqlite3_column_name16()
  1187. ** on the same column.
  1188. */
  1189. const char *sqlite3_column_name(sqlite3_stmt*, int N);
  1190. const void *sqlite3_column_name16(sqlite3_stmt*, int N);
  1191. /*
  1192. ** CAPI3REF: Source Of Data In A Query Result
  1193. **
  1194. ** These routines provide a means to determine what column of what
  1195. ** table in which database a result of a SELECT statement comes from.
  1196. ** The name of the database or table or column can be returned as
  1197. ** either a UTF8 or UTF16 string. The returned string is valid until
  1198. ** the [sqlite3_stmt | prepared statement] is destroyed using
  1199. ** [sqlite3_finalize()] or until the same information is requested
  1200. ** again about the same column.
  1201. **
  1202. ** The first argument to the following calls is a
  1203. ** [sqlite3_stmt | compiled SQL statement].
  1204. ** These functions return information about the Nth column returned by
  1205. ** the statement, where N is the second function argument.
  1206. **
  1207. ** If the Nth column returned by the statement is an expression
  1208. ** or subquery and is not a column value, then all of these functions
  1209. ** return NULL. Otherwise, they return the
  1210. ** name of the attached database, table and column that query result
  1211. ** column was extracted from.
  1212. **
  1213. ** As with all other SQLite APIs, those postfixed with "16" return UTF-16
  1214. ** encoded strings, the other functions return UTF-8.
  1215. **
  1216. ** These APIs are only available if the library was compiled with the
  1217. ** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
  1218. */
  1219. const char *sqlite3_column_database_name(sqlite3_stmt*,int);
  1220. const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
  1221. const char *sqlite3_column_table_name(sqlite3_stmt*,int);
  1222. const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
  1223. const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
  1224. const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
  1225. /*
  1226. ** CAPI3REF: Declared Datatype Of A Query Result
  1227. **
  1228. ** The first parameter is a [sqlite3_stmt | compiled SQL statement].
  1229. ** If this statement is a SELECT statement and the Nth column of the
  1230. ** returned result set of that SELECT is a table column (not an
  1231. ** expression or subquery) then the declared type of the table
  1232. ** column is returned. If the Nth column of the result set is an
  1233. ** expression or subquery, then a NULL pointer is returned.
  1234. ** The returned string is always UTF-8 encoded. For example, in
  1235. ** the database schema:
  1236. **
  1237. ** CREATE TABLE t1(c1 VARIANT);
  1238. **
  1239. ** And the following statement compiled:
  1240. **
  1241. ** SELECT c1 + 1, c1 FROM t1;
  1242. **
  1243. ** Then this routine would return the string "VARIANT" for the second
  1244. ** result column (i==1), and a NULL pointer for the first result column
  1245. ** (i==0).
  1246. **
  1247. ** SQLite uses dynamic run-time typing. So just because a column
  1248. ** is declared to contain a particular type does not mean that the
  1249. ** data stored in that column is of the declared type. SQLite is
  1250. ** strongly typed, but the typing is dynamic not static. Type
  1251. ** is associated with individual values, not with the containers
  1252. ** used to hold those values.
  1253. */
  1254. const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
  1255. const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
  1256. /*
  1257. ** CAPI3REF: Evaluate An SQL Statement
  1258. **
  1259. ** After an [sqlite3_stmt | SQL statement] has been prepared with a call
  1260. ** to either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or to one of
  1261. ** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
  1262. ** then this function must be called one or more times to evaluate the
  1263. ** statement.
  1264. **
  1265. ** The details of the behavior of this sqlite3_step() interface depend
  1266. ** on whether the statement was prepared using the newer "v2" interface
  1267. ** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
  1268. ** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
  1269. ** new "v2" interface is recommended for new applications but the legacy
  1270. ** interface will continue to be supported.
  1271. **
  1272. ** In the lagacy interface, the return value will be either [SQLITE_BUSY],
  1273. ** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
  1274. ** With the "v2" interface, any of the other [SQLITE_OK | result code]
  1275. ** or [SQLITE_IOERR_READ | extended result code] might be returned as
  1276. ** well.
  1277. **
  1278. ** [SQLITE_BUSY] means that the database engine was unable to acquire the
  1279. ** database locks it needs to do its job. If the statement is a COMMIT
  1280. ** or occurs outside of an explicit transaction, then you can retry the
  1281. ** statement. If the statement is not a COMMIT and occurs within a
  1282. ** explicit transaction then you should rollback the transaction before
  1283. ** continuing.
  1284. **
  1285. ** [SQLITE_DONE] means that the statement has finished executing
  1286. ** successfully. sqlite3_step() should not be called again on this virtual
  1287. ** machine without first calling [sqlite3_reset()] to reset the virtual
  1288. ** machine back to its initial state.
  1289. **
  1290. ** If the SQL statement being executed returns any data, then
  1291. ** [SQLITE_ROW] is returned each time a new row of data is ready
  1292. ** for processing by the caller. The values may be accessed using
  1293. ** the [sqlite3_column_int | column access functions].
  1294. ** sqlite3_step() is called again to retrieve the next row of data.
  1295. **
  1296. ** [SQLITE_ERROR] means that a run-time error (such as a constraint
  1297. ** violation) has occurred. sqlite3_step() should not be called again on
  1298. ** the VM. More information may be found by calling [sqlite3_errmsg()].
  1299. ** With the legacy interface, a more specific error code (example:
  1300. ** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
  1301. ** can be obtained by calling [sqlite3_reset()] on the
  1302. ** [sqlite_stmt | prepared statement]. In the "v2" interface,
  1303. ** the more specific error code is returned directly by sqlite3_step().
  1304. **
  1305. ** [SQLITE_MISUSE] means that the this routine was called inappropriately.
  1306. ** Perhaps it was called on a [sqlite_stmt | prepared statement] that has
  1307. ** already been [sqlite3_finalize | finalized] or on one that had
  1308. ** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could
  1309. ** be the case that the same database connection is being used by two or
  1310. ** more threads at the same moment in time.
  1311. **
  1312. ** <b>Goofy Interface Alert:</b>
  1313. ** In the legacy interface,
  1314. ** the sqlite3_step() API always returns a generic error code,
  1315. ** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
  1316. ** and [SQLITE_MISUSE]. You must call [sqlite3_reset()] or
  1317. ** [sqlite3_finalize()] in order to find one of the specific
  1318. ** [SQLITE_ERROR | result codes] that better describes the error.
  1319. ** We admit that this is a goofy design. The problem has been fixed
  1320. ** with the "v2" interface. If you prepare all of your SQL statements
  1321. ** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
  1322. ** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the
  1323. ** more specific [SQLITE_ERROR | result codes] are returned directly
  1324. ** by sqlite3_step(). The use of the "v2" interface is recommended.
  1325. */
  1326. int sqlite3_step(sqlite3_stmt*);
  1327. /*
  1328. ** CAPI3REF:
  1329. **
  1330. ** Return the number of values in the current row of the result set.
  1331. **
  1332. ** After a call to [sqlite3_step()] that returns [SQLITE_ROW], this routine
  1333. ** will return the same value as the [sqlite3_column_count()] function.
  1334. ** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
  1335. ** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been
  1336. ** called on the [sqlite_stmt | prepared statement] for the first time,
  1337. ** this routine returns zero.
  1338. */
  1339. int sqlite3_data_count(sqlite3_stmt *pStmt);
  1340. /*
  1341. ** CAPI3REF: Fundamental Datatypes
  1342. **
  1343. ** Every value in SQLite has one of five fundamental datatypes:
  1344. **
  1345. ** <ul>
  1346. ** <li> 64-bit signed integer
  1347. ** <li> 64-bit IEEE floating point number
  1348. ** <li> string
  1349. ** <li> BLOB
  1350. ** <li> NULL
  1351. ** </ul>
  1352. **
  1353. ** These constants are codes for each of those types.
  1354. **
  1355. ** Note that the SQLITE_TEXT constant was also used in SQLite version 2
  1356. ** for a completely different meaning. Software that links against both
  1357. ** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT not
  1358. ** SQLITE_TEXT.
  1359. */
  1360. #define SQLITE_INTEGER 1
  1361. #define SQLITE_FLOAT 2
  1362. #define SQLITE_BLOB 4
  1363. #define SQLITE_NULL 5
  1364. #ifdef SQLITE_TEXT
  1365. # undef SQLITE_TEXT
  1366. #else
  1367. # define SQLITE_TEXT 3
  1368. #endif
  1369. #define SQLITE3_TEXT 3
  1370. /*
  1371. ** CAPI3REF: Results Values From A Query
  1372. **
  1373. ** These routines return information about the information
  1374. ** in a single column of the current result row of a query. In every
  1375. ** case the first argument is a pointer to the
  1376. ** [sqlite3_stmt | SQL statement] that is being
  1377. ** evaluate (the [sqlite_stmt*] that was returned from
  1378. ** [sqlite3_prepare_v2()] or one of its variants) and
  1379. ** the second argument is the index of the column for which information
  1380. ** should be returned. The left-most column has an index of 0.
  1381. **
  1382. ** If the SQL statement is not currently point to a valid row, or if the
  1383. ** the column index is out of range, the result is undefined.
  1384. **
  1385. ** The sqlite3_column_type() routine returns
  1386. ** [SQLITE_INTEGER | datatype code] for the initial data type
  1387. ** of the result column. The returned value is one of [SQLITE_INTEGER],
  1388. ** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
  1389. ** returned by sqlite3_column_type() is only meaningful if no type
  1390. ** conversions have occurred as described below. After a type conversion,
  1391. ** the value returned by sqlite3_column_type() is undefined. Future
  1392. ** versions of SQLite may change the behavior of sqlite3_column_type()
  1393. ** following a type conversion.
  1394. **
  1395. *** The sqlite3_column_nm
  1396. **
  1397. ** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
  1398. ** routine returns the number of bytes in that BLOB or string.
  1399. ** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
  1400. ** the string to UTF-8 and then returns the number of bytes.
  1401. ** If the result is a numeric value then sqlite3_column_bytes() uses
  1402. ** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
  1403. ** the number of bytes in that string.
  1404. ** The value returned does not include the zero terminator at the end
  1405. ** of the string. For clarity: the value returned is the number of
  1406. ** bytes in the string, not the number of characters.
  1407. **
  1408. ** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
  1409. ** but leaves the result in UTF-16 instead of UTF-8.
  1410. ** The zero terminator is not included in this count.
  1411. **
  1412. ** These routines attempt to convert the value where appropriate. For
  1413. ** example, if the internal representation is FLOAT and a text result
  1414. ** is requested, [sqlite3_snprintf()] is used internally to do the conversion
  1415. ** automatically. The following table details the conversions that
  1416. ** are applied:
  1417. **
  1418. ** <blockquote>
  1419. ** <table border="1">
  1420. ** <tr><th> Internal <th> Requested <th>
  1421. ** <tr><th> Type <th> Type <th> Conversion
  1422. **
  1423. ** <tr><td> NULL <td> INTEGER <td> Result is 0
  1424. ** <tr><td> NULL <td> FLOAT <td> Result is 0.0
  1425. ** <tr><td> NULL <td> TEXT <td> Result is NULL pointer
  1426. ** <tr><td> NULL <td> BLOB <td> Result is NULL pointer
  1427. ** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float
  1428. ** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer
  1429. ** <tr><td> INTEGER <td> BLOB <td> Same as for INTEGER->TEXT
  1430. ** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer
  1431. ** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float
  1432. ** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT
  1433. ** <tr><td> TEXT <td> INTEGER <td> Use atoi()
  1434. ** <tr><td> TEXT <td> FLOAT <td> Use atof()
  1435. ** <tr><td> TEXT <td> BLOB <td> No change
  1436. ** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi()
  1437. ** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof()
  1438. ** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed
  1439. ** </table>
  1440. ** </blockquote>
  1441. **
  1442. ** The table above makes reference to standard C library functions atoi()
  1443. ** and atof(). SQLite does not really use these functions. It has its
  1444. ** on equavalent internal routines. The atoi() and atof() names are
  1445. ** used in the table for brevity and because they are familiar to most
  1446. ** C programmers.
  1447. **
  1448. ** Note that when type conversions occur, pointers returned by prior
  1449. ** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
  1450. ** sqlite3_column_text16() may be invalidated.
  1451. ** Type conversions and pointer invalidations might occur
  1452. ** in the following cases:
  1453. **
  1454. ** <ul>
  1455. ** <li><p> The initial content is a BLOB and sqlite3_column_text()
  1456. ** or sqlite3_column_text16() is called. A zero-terminator might
  1457. ** need to be added to the string.</p></li>
  1458. **
  1459. ** <li><p> The initial content is UTF-8 text and sqlite3_column_bytes16() or
  1460. ** sqlite3_column_text16() is called. The content must be converted
  1461. ** to UTF-16.</p></li>
  1462. **
  1463. ** <li><p> The initial content is UTF-16 text and sqlite3_column_bytes() or
  1464. ** sqlite3_column_text() is called. The content must be converted
  1465. ** to UTF-8.</p></li>
  1466. ** </ul>
  1467. **
  1468. ** Conversions between UTF-16be and UTF-16le are always done in place and do
  1469. ** not invalidate a prior pointer, though of course the content of the buffer
  1470. ** that the prior pointer points to will have been modified. Other kinds
  1471. ** of conversion are done in place when it is possible, but sometime it is
  1472. ** not possible and in those cases prior pointers are invalidated.
  1473. **
  1474. ** The safest and easiest to remember policy is to invoke these routines
  1475. ** in one of the following ways:
  1476. **
  1477. ** <ul>
  1478. ** <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
  1479. ** <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
  1480. ** <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
  1481. ** </ul>
  1482. **
  1483. ** In other words, you should call sqlite3_column_text(), sqlite3_column_blob(),
  1484. ** or sqlite3_column_text16() first to force the result into the desired
  1485. ** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
  1486. ** find the size of the result. Do not mix call to sqlite3_column_text() or
  1487. ** sqlite3_column_blob() with calls to sqlite3_column_bytes16(). And do not
  1488. ** mix calls to sqlite3_column_text16() with calls to sqlite3_column_bytes().
  1489. */
  1490. const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
  1491. int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
  1492. int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
  1493. double sqlite3_column_double(sqlite3_stmt*, int iCol);
  1494. int sqlite3_column_int(sqlite3_stmt*, int iCol);
  1495. sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
  1496. const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
  1497. const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
  1498. int sqlite3_column_type(sqlite3_stmt*, int iCol);
  1499. sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
  1500. /*
  1501. ** CAPI3REF: Destroy A Prepared Statement Object
  1502. **
  1503. ** The sqlite3_finalize() function is called to delete a
  1504. ** [sqlite3_stmt | compiled SQL statement]. If the statement was
  1505. ** executed successfully, or not executed at all, then SQLITE_OK is returned.
  1506. ** If execution of the statement failed then an
  1507. ** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
  1508. ** is returned.
  1509. **
  1510. ** This routine can be called at any point during the execution of the
  1511. ** [sqlite3_stmt | virtual machine]. If the virtual machine has not
  1512. ** completed execution when this routine is called, that is like
  1513. ** encountering an error or an interrupt. (See [sqlite3_interrupt()].)
  1514. ** Incomplete updates may be rolled back and transactions cancelled,
  1515. ** depending on the circumstances, and the
  1516. ** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
  1517. */
  1518. int sqlite3_finalize(sqlite3_stmt *pStmt);
  1519. /*
  1520. ** CAPI3REF: Reset A Prepared Statement Object
  1521. **
  1522. ** The sqlite3_reset() function is called to reset a
  1523. ** [sqlite_stmt | compiled SQL statement] object.
  1524. ** back to it's initial state, ready to be re-executed.
  1525. ** Any SQL statement variables that had values bound to them using
  1526. ** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
  1527. ** Use [sqlite3_clear_bindings()] to reset the bindings.
  1528. */
  1529. int sqlite3_reset(sqlite3_stmt *pStmt);
  1530. /*
  1531. ** CAPI3REF: Create Or Redefine SQL Functions
  1532. **
  1533. ** The following two functions are used to add SQL functions or aggregates
  1534. ** or to redefine the behavior of existing SQL functions or aggregates. The
  1535. ** difference only between the two is that the second parameter, the
  1536. ** name of the (scalar) function or aggregate, is encoded in UTF-8 for
  1537. ** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
  1538. **
  1539. ** The first argument is the [sqlite3 | database handle] that holds the
  1540. ** SQL function or aggregate is to be added or redefined. If a single
  1541. ** program uses more than one database handle internally, then SQL
  1542. ** functions or aggregates must be added individually to each database
  1543. ** handle with which they will be used.
  1544. **
  1545. ** The second parameter is the name of the SQL function to be created
  1546. ** or redefined.
  1547. ** The length of the name is limited to 255 bytes, exclusive of the
  1548. ** zero-terminator. Note that the name length limit is in bytes, not
  1549. ** characters. Any attempt to create a function with a longer name
  1550. ** will result in an SQLITE_ERROR error.
  1551. **
  1552. ** The third parameter is the number of arguments that the SQL function or
  1553. ** aggregate takes. If this parameter is negative, then the SQL function or
  1554. ** aggregate may take any number of arguments.
  1555. **
  1556. ** The fourth parameter, eTextRep, specifies what
  1557. ** [SQLITE_UTF8 | text encoding] this SQL function prefers for
  1558. ** its parameters. Any SQL function implementation should be able to work
  1559. ** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be
  1560. ** more efficient with one encoding than another. It is allowed to
  1561. ** invoke sqlite_create_function() or sqlite3_create_function16() multiple
  1562. ** times with the same function but with different values of eTextRep.
  1563. ** When multiple implementations of the same function are available, SQLite
  1564. ** will pick the one that involves the least amount of data conversion.
  1565. ** If there is only a single implementation which does not care what
  1566. ** text encoding is used, then the fourth argument should be
  1567. ** [SQLITE_ANY].
  1568. **
  1569. ** The fifth parameter is an arbitrary pointer. The implementation
  1570. ** of the function can gain access to this pointer using
  1571. ** [sqlite_user_data()].
  1572. **
  1573. ** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
  1574. ** pointers to C-language functions that implement the SQL
  1575. ** function or aggregate. A scalar SQL function requires an implementation of
  1576. ** the xFunc callback only, NULL pointers should be passed as the xStep
  1577. ** and xFinal parameters. An aggregate SQL function requires an implementation
  1578. ** of xStep and xFinal and NULL should be passed for xFunc. To delete an
  1579. ** existing SQL function or aggregate, pass NULL for all three function
  1580. ** callback.
  1581. **
  1582. ** It is permitted to register multiple implementations of the same
  1583. ** functions with the same name but with either differing numbers of
  1584. ** arguments or differing perferred text encodings. SQLite will use
  1585. ** the implementation most closely matches the way in which the
  1586. ** SQL function is used.
  1587. */
  1588. int sqlite3_create_function(
  1589. sqlite3 *,
  1590. const char *zFunctionName,
  1591. int nArg,
  1592. int eTextRep,
  1593. void*,
  1594. void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
  1595. void (*xStep)(sqlite3_context*,int,sqlite3_value**),
  1596. void (*xFinal)(sqlite3_context*)
  1597. );
  1598. int sqlite3_create_function16(
  1599. sqlite3*,
  1600. const void *zFunctionName,
  1601. int nArg,
  1602. int eTextRep,
  1603. void*,
  1604. void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
  1605. void (*xStep)(sqlite3_context*,int,sqlite3_value**),
  1606. void (*xFinal)(sqlite3_context*)
  1607. );
  1608. /*
  1609. ** CAPI3REF: Text Encodings
  1610. **
  1611. ** These constant define integer codes that represent the various
  1612. ** text encodings supported by SQLite.
  1613. */
  1614. #define SQLITE_UTF8 1
  1615. #define SQLITE_UTF16LE 2
  1616. #define SQLITE_UTF16BE 3
  1617. #define SQLITE_UTF16 4 /* Use native byte order */
  1618. #define SQLITE_ANY 5 /* sqlite3_create_function only */
  1619. #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
  1620. /*
  1621. ** CAPI3REF: Obsolete Functions
  1622. **
  1623. ** These functions are all now obsolete. In order to maintain
  1624. ** backwards compatibility with older code, we continue to support
  1625. ** these functions. However, new development projects should avoid
  1626. ** the use of these functions. To help encourage people to avoid
  1627. ** using these functions, we are not going to tell you want they do.
  1628. */
  1629. int sqlite3_aggregate_count(sqlite3_context*);
  1630. int sqlite3_expired(sqlite3_stmt*);
  1631. int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
  1632. int sqlite3_global_recover(void);
  1633. /*
  1634. ** CAPI3REF: Obtaining SQL Function Parameter Values
  1635. **
  1636. ** The C-language implementation of SQL functions and aggregates uses
  1637. ** this set of interface routines to access the parameter values on
  1638. ** the function or aggregate.
  1639. **
  1640. ** The xFunc (for scalar functions) or xStep (for aggregates) parameters
  1641. ** to [sqlite3_create_function()] and [sqlite3_create_function16()]
  1642. ** define callbacks that implement the SQL functions and aggregates.
  1643. ** The 4th parameter to these callbacks is an array of pointers to
  1644. ** [sqlite3_value] objects. There is one [sqlite3_value] object for
  1645. ** each parameter to the SQL function. These routines are used to
  1646. ** extract values from the [sqlite3_value] objects.
  1647. **
  1648. ** These routines work just like the corresponding
  1649. ** [sqlite3_column_blob | sqlite3_column_* routines] except that
  1650. ** these routines take a single [sqlite3_value*] pointer instead
  1651. ** of an [sqlite3_stmt*] pointer and an integer column number.
  1652. **
  1653. ** The sqlite3_value_text16() interface extracts a UTF16 string
  1654. ** in the native byte-order of the host machine. The
  1655. ** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
  1656. ** extract UTF16 strings as big-endian and little-endian respectively.
  1657. **
  1658. ** The sqlite3_value_numeric_type() interface attempts to apply
  1659. ** numeric affinity to the value. This means that an attempt is
  1660. ** made to convert the value to an integer or floating point. If
  1661. ** such a conversion is possible without loss of information (in order
  1662. ** words if the value is original a string that looks like a number)
  1663. ** then it is done. Otherwise no conversion occurs. The
  1664. ** [SQLITE_INTEGER | datatype] after conversion is returned.
  1665. **
  1666. ** Please pay particular attention to the fact that the pointer that
  1667. ** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
  1668. ** [sqlite3_value_text16()] can be invalidated by a subsequent call to
  1669. ** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite_value_text()],
  1670. ** or [sqlite3_value_text16()].
  1671. */
  1672. const void *sqlite3_value_blob(sqlite3_value*);
  1673. int sqlite3_value_bytes(sqlite3_value*);
  1674. int sqlite3_value_bytes16(sqlite3_value*);
  1675. double sqlite3_value_double(sqlite3_value*);
  1676. int sqlite3_value_int(sqlite3_value*);
  1677. sqlite_int64 sqlite3_value_int64(sqlite3_value*);
  1678. const unsigned char *sqlite3_value_text(sqlite3_value*);
  1679. const void *sqlite3_value_text16(sqlite3_value*);
  1680. const void *sqlite3_value_text16le(sqlite3_value*);
  1681. const void *sqlite3_value_text16be(sqlite3_value*);
  1682. int sqlite3_value_type(sqlite3_value*);
  1683. int sqlite3_value_numeric_type(sqlite3_value*);
  1684. /*
  1685. ** CAPI3REF: Obtain Aggregate Function Context
  1686. **
  1687. ** The implementation of aggregate SQL functions use this routine to allocate
  1688. ** a structure for storing their state. The first time this routine
  1689. ** is called for a particular aggregate, a new structure of size nBytes
  1690. ** is allocated, zeroed, and returned. On subsequent calls (for the
  1691. ** same aggregate instance) the same buffer is returned. The implementation
  1692. ** of the aggregate can use the returned buffer to accumulate data.
  1693. **
  1694. ** The buffer allocated is freed automatically by SQLite whan the aggregate
  1695. ** query concludes.
  1696. **
  1697. ** The first parameter should be a copy of the
  1698. ** [sqlite3_context | SQL function context] that is the first
  1699. ** parameter to the callback routine that implements the aggregate
  1700. ** function.
  1701. */
  1702. void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
  1703. /*
  1704. ** CAPI3REF: User Data For Functions
  1705. **
  1706. ** The pUserData parameter to the [sqlite3_create_function()]
  1707. ** and [sqlite3_create_function16()] routines
  1708. ** used to register user functions is available to
  1709. ** the implementation of the function using this call.
  1710. */
  1711. void *sqlite3_user_data(sqlite3_context*);
  1712. /*
  1713. ** CAPI3REF: Function Auxiliary Data
  1714. **
  1715. ** The following two functions may be used by scalar SQL functions to
  1716. ** associate meta-data with argument values. If the same value is passed to
  1717. ** multiple invocations of the same SQL function during query execution, under
  1718. ** some circumstances the associated meta-data may be preserved. This may
  1719. ** be used, for example, to add a regular-expression matching scalar
  1720. ** function. The compiled version of the regular expression is stored as
  1721. ** meta-data associated with the SQL value passed as the regular expression
  1722. ** pattern. The compiled regular expression can be reused on multiple
  1723. ** invocations of the same function so that the original pattern string
  1724. ** does not need to be recompiled on each invocation.
  1725. **
  1726. ** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
  1727. ** associated with the Nth argument value to the current SQL function
  1728. ** call, where N is the second parameter. If no meta-data has been set for
  1729. ** that value, then a NULL pointer is returned.
  1730. **
  1731. ** The sqlite3_set_auxdata() is used to associate meta-data with an SQL
  1732. ** function argument. The third parameter is a pointer to the meta-data
  1733. ** to be associated with the Nth user function argument value. The fourth
  1734. ** parameter specifies a destructor that will be called on the meta-
  1735. ** data pointer to release it when it is no longer required. If the
  1736. ** destructor is NULL, it is not invoked.
  1737. **
  1738. ** In practice, meta-data is preserved between function calls for
  1739. ** expressions that are constant at compile time. This includes literal
  1740. ** values and SQL variables.
  1741. */
  1742. void *sqlite3_get_auxdata(sqlite3_context*, int);
  1743. void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
  1744. /*
  1745. ** CAPI3REF: Constants Defining Special Destructor Behavior
  1746. **
  1747. ** These are special value for the destructor that is passed in as the
  1748. ** final argument to routines like [sqlite3_result_blob()]. If the destructor
  1749. ** argument is SQLITE_STATIC, it means that the content pointer is constant
  1750. ** and will never change. It does not need to be destroyed. The
  1751. ** SQLITE_TRANSIENT value means that the content will likely change in
  1752. ** the near future and that SQLite should make its own private copy of
  1753. ** the content before returning.
  1754. **
  1755. ** The typedef is necessary to work around problems in certain
  1756. ** C++ compilers. See ticket #2191.
  1757. */
  1758. typedef void (*sqlite3_destructor_type)(void*);
  1759. #define SQLITE_STATIC ((sqlite3_destructor_type)0)
  1760. #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
  1761. /*
  1762. ** CAPI3REF: Setting The Result Of An SQL Function
  1763. **
  1764. ** These routines are used by the xFunc or xFinal callbacks that
  1765. ** implement SQL functions and aggregates. See
  1766. ** [sqlite3_create_function()] and [sqlite3_create_function16()]
  1767. ** for additional information.
  1768. **
  1769. ** These functions work very much like the
  1770. ** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
  1771. ** to bind values to host parameters in prepared statements.
  1772. ** Refer to the
  1773. ** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
  1774. ** additional information.
  1775. **
  1776. ** The sqlite3_result_error() and sqlite3_result_error16() functions
  1777. ** cause the implemented SQL function to throw an exception. The
  1778. ** parameter to sqlite3_result_error() or sqlite3_result_error16()
  1779. ** is the text of an error message.
  1780. **
  1781. ** The sqlite3_result_toobig() cause the function implementation
  1782. ** to throw and error indicating that a string or BLOB is to long
  1783. ** to represent.
  1784. */
  1785. void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
  1786. void sqlite3_result_double(sqlite3_context*, double);
  1787. void sqlite3_result_error(sqlite3_context*, const char*, int);
  1788. void sqlite3_result_error16(sqlite3_context*, const void*, int);
  1789. void sqlite3_result_error_toobig(sqlite3_context*);
  1790. void sqlite3_result_int(sqlite3_context*, int);
  1791. void sqlite3_result_int64(sqlite3_context*, sqlite_int64);
  1792. void sqlite3_result_null(sqlite3_context*);
  1793. void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
  1794. void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
  1795. void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
  1796. void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
  1797. void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
  1798. void sqlite3_result_zeroblob(sqlite3_context*, int n);
  1799. /*
  1800. ** CAPI3REF: Define New Collating Sequences
  1801. **
  1802. ** These functions are used to add new collation sequences to the
  1803. ** [sqlite3*] handle specified as the first argument.
  1804. **
  1805. ** The name of the new collation sequence is specified as a UTF-8 string
  1806. ** for sqlite3_create_collation() and sqlite3_create_collation_v2()
  1807. ** and a UTF-16 string for sqlite3_create_collation16(). In all cases
  1808. ** the name is passed as the second function argument.
  1809. **
  1810. ** The third argument must be one of the constants [SQLITE_UTF8],
  1811. ** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
  1812. ** routine expects to be passed pointers to strings encoded using UTF-8,
  1813. ** UTF-16 little-endian or UTF-16 big-endian respectively.
  1814. **
  1815. ** A pointer to the user supplied routine must be passed as the fifth
  1816. ** argument. If it is NULL, this is the same as deleting the collation
  1817. ** sequence (so that SQLite cannot call it anymore). Each time the user
  1818. ** supplied function is invoked, it is passed a copy of the void* passed as
  1819. ** the fourth argument to sqlite3_create_collation() or
  1820. ** sqlite3_create_collation16() as its first parameter.
  1821. **
  1822. ** The remaining arguments to the user-supplied routine are two strings,
  1823. ** each represented by a [length, data] pair and encoded in the encoding
  1824. ** that was passed as the third argument when the collation sequence was
  1825. ** registered. The user routine should return negative, zero or positive if
  1826. ** the first string is less than, equal to, or greater than the second
  1827. ** string. i.e. (STRING1 - STRING2).
  1828. **
  1829. ** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
  1830. ** excapt that it takes an extra argument which is a destructor for
  1831. ** the collation. The destructor is called when the collation is
  1832. ** destroyed and is passed a copy of the fourth parameter void* pointer
  1833. ** of the sqlite3_create_collation_v2(). Collations are destroyed when
  1834. ** they are overridden by later calls to the collation creation functions
  1835. ** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
  1836. **
  1837. ** The sqlite3_create_collation_v2() interface is experimental and
  1838. ** subject to change in future releases. The other collation creation
  1839. ** functions are stable.
  1840. */
  1841. int sqlite3_create_collation(
  1842. sqlite3*,
  1843. const char *zName,
  1844. int eTextRep,
  1845. void*,
  1846. int(*xCompare)(void*,int,const void*,int,const void*)
  1847. );
  1848. int sqlite3_create_collation_v2(
  1849. sqlite3*,
  1850. const char *zName,
  1851. int eTextRep,
  1852. void*,
  1853. int(*xCompare)(void*,int,const void*,int,const void*),
  1854. void(*xDestroy)(void*)
  1855. );
  1856. int sqlite3_create_collation16(
  1857. sqlite3*,
  1858. const char *zName,
  1859. int eTextRep,
  1860. void*,
  1861. int(*xCompare)(void*,int,const void*,int,const void*)
  1862. );
  1863. /*
  1864. ** CAPI3REF: Collation Needed Callbacks
  1865. **
  1866. ** To avoid having to register all collation sequences before a database
  1867. ** can be used, a single callback function may be registered with the
  1868. ** database handle to be called whenever an undefined collation sequence is
  1869. ** required.
  1870. **
  1871. ** If the function is registered using the sqlite3_collation_needed() API,
  1872. ** then it is passed the names of undefined collation sequences as strings
  1873. ** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
  1874. ** are passed as UTF-16 in machine native byte order. A call to either
  1875. ** function replaces any existing callback.
  1876. **
  1877. ** When the callback is invoked, the first argument passed is a copy
  1878. ** of the second argument to sqlite3_collation_needed() or
  1879. ** sqlite3_collation_needed16(). The second argument is the database
  1880. ** handle. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], or
  1881. ** [SQLITE_UTF16LE], indicating the most desirable form of the collation
  1882. ** sequence function required. The fourth parameter is the name of the
  1883. ** required collation sequence.
  1884. **
  1885. ** The callback function should register the desired collation using
  1886. ** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
  1887. ** [sqlite3_create_collation_v2()].
  1888. */
  1889. int sqlite3_collation_needed(
  1890. sqlite3*,
  1891. void*,
  1892. void(*)(void*,sqlite3*,int eTextRep,const char*)
  1893. );
  1894. int sqlite3_collation_needed16(
  1895. sqlite3*,
  1896. void*,
  1897. void(*)(void*,sqlite3*,int eTextRep,const void*)
  1898. );
  1899. /*
  1900. ** Specify the key for an encrypted database. This routine should be
  1901. ** called right after sqlite3_open().
  1902. **
  1903. ** The code to implement this API is not available in the public release
  1904. ** of SQLite.
  1905. */
  1906. int sqlite3_key(
  1907. sqlite3 *db, /* Database to be rekeyed */
  1908. const void *pKey, int nKey /* The key */
  1909. );
  1910. /*
  1911. ** Change the key on an open database. If the current database is not
  1912. ** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
  1913. ** database is decrypted.
  1914. **
  1915. ** The code to implement this API is not available in the public release
  1916. ** of SQLite.
  1917. */
  1918. int sqlite3_rekey(
  1919. sqlite3 *db, /* Database to be rekeyed */
  1920. const void *pKey, int nKey /* The new key */
  1921. );
  1922. /*
  1923. ** CAPI3REF: Suspend Execution For A Short Time
  1924. **
  1925. ** This function causes the current thread to suspect execution
  1926. ** a number of milliseconds specified in its parameter.
  1927. **
  1928. ** If the operating system does not support sleep requests with
  1929. ** millisecond time resolution, then the time will be rounded up to
  1930. ** the nearest second. The number of milliseconds of sleep actually
  1931. ** requested from the operating system is returned.
  1932. */
  1933. int sqlite3_sleep(int);
  1934. /*
  1935. ** CAPI3REF: Name Of The Folder Holding Temporary Files
  1936. **
  1937. ** If this global variable is made to point to a string which is
  1938. ** the name of a folder (a.ka. directory), then all temporary files
  1939. ** created by SQLite will be placed in that directory. If this variable
  1940. ** is NULL pointer, then SQLite does a search for an appropriate temporary
  1941. ** file directory.
  1942. **
  1943. ** Once [sqlite3_open()] has been called, changing this variable will
  1944. ** invalidate the current temporary database, if any. Generally speaking,
  1945. ** it is not safe to invoke this routine after [sqlite3_open()] has
  1946. ** been called.
  1947. */
  1948. extern char *sqlite3_temp_directory;
  1949. /*
  1950. ** CAPI3REF: Test To See If The Databse Is In Auto-Commit Mode
  1951. **
  1952. ** Test to see whether or not the database connection is in autocommit
  1953. ** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on
  1954. ** by default. Autocommit is disabled by a BEGIN statement and reenabled
  1955. ** by the next COMMIT or ROLLBACK.
  1956. */
  1957. int sqlite3_get_autocommit(sqlite3*);
  1958. /*
  1959. ** CAPI3REF: Find The Database Handle Associated With A Prepared Statement
  1960. **
  1961. ** Return the [sqlite3*] database handle to which a
  1962. ** [sqlite3_stmt | prepared statement] belongs.
  1963. ** This is the same database handle that was
  1964. ** the first argument to the [sqlite3_prepare_v2()] or its variants
  1965. ** that was used to create the statement in the first place.
  1966. */
  1967. sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
  1968. /*
  1969. ** CAPI3REF: Commit And Rollback Notification Callbacks
  1970. **
  1971. ** These routines
  1972. ** register callback functions to be invoked whenever a transaction
  1973. ** is committed or rolled back. The pArg argument is passed through
  1974. ** to the callback. If the callback on a commit hook function
  1975. ** returns non-zero, then the commit is converted into a rollback.
  1976. **
  1977. ** If another function was previously registered, its pArg value is returned.
  1978. ** Otherwise NULL is returned.
  1979. **
  1980. ** Registering a NULL function disables the callback.
  1981. **
  1982. ** For the purposes of this API, a transaction is said to have been
  1983. ** rolled back if an explicit "ROLLBACK" statement is executed, or
  1984. ** an error or constraint causes an implicit rollback to occur. The
  1985. ** callback is not invoked if a transaction is automatically rolled
  1986. ** back because the database connection is closed.
  1987. **
  1988. ** These are experimental interfaces and are subject to change.
  1989. */
  1990. void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
  1991. void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
  1992. /*
  1993. ** CAPI3REF: Data Change Notification Callbacks
  1994. **
  1995. ** Register a callback function with the database connection identified by the
  1996. ** first argument to be invoked whenever a row is updated, inserted or deleted.
  1997. ** Any callback set by a previous call to this function for the same
  1998. ** database connection is overridden.
  1999. **
  2000. ** The second argument is a pointer to the function to invoke when a
  2001. ** row is updated, inserted or deleted. The first argument to the callback is
  2002. ** a copy of the third argument to sqlite3_update_hook(). The second callback
  2003. ** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
  2004. ** on the operation that caused the callback to be invoked. The third and
  2005. ** fourth arguments to the callback contain pointers to the database and
  2006. ** table name containing the affected row. The final callback parameter is
  2007. ** the rowid of the row. In the case of an update, this is the rowid after
  2008. ** the update takes place.
  2009. **
  2010. ** The update hook is not invoked when internal system tables are
  2011. ** modified (i.e. sqlite_master and sqlite_sequence).
  2012. **
  2013. ** If another function was previously registered, its pArg value is returned.
  2014. ** Otherwise NULL is returned.
  2015. */
  2016. void *sqlite3_update_hook(
  2017. sqlite3*,
  2018. void(*)(void *,int ,char const *,char const *,sqlite_int64),
  2019. void*
  2020. );
  2021. /*
  2022. ** CAPI3REF: Enable Or Disable Shared Pager Cache
  2023. **
  2024. ** This routine enables or disables the sharing of the database cache
  2025. ** and schema data structures between connections to the same database.
  2026. ** Sharing is enabled if the argument is true and disabled if the argument
  2027. ** is false.
  2028. **
  2029. ** Cache sharing is enabled and disabled on a thread-by-thread basis.
  2030. ** Each call to this routine enables or disables cache sharing only for
  2031. ** connections created in the same thread in which this routine is called.
  2032. ** There is no mechanism for sharing cache between database connections
  2033. ** running in different threads.
  2034. **
  2035. ** Sharing must be disabled prior to shutting down a thread or else
  2036. ** the thread will leak memory. Call this routine with an argument of
  2037. ** 0 to turn off sharing. Or use the sqlite3_thread_cleanup() API.
  2038. **
  2039. ** This routine must not be called when any database connections
  2040. ** are active in the current thread. Enabling or disabling shared
  2041. ** cache while there are active database connections will result
  2042. ** in memory corruption.
  2043. **
  2044. ** When the shared cache is enabled, the
  2045. ** following routines must always be called from the same thread:
  2046. ** [sqlite3_open()], [sqlite3_prepare_v2()], [sqlite3_step()],
  2047. ** [sqlite3_reset()], [sqlite3_finalize()], and [sqlite3_close()].
  2048. ** This is due to the fact that the shared cache makes use of
  2049. ** thread-specific storage so that it will be available for sharing
  2050. ** with other connections.
  2051. **
  2052. ** Virtual tables cannot be used with a shared cache. When shared
  2053. ** cache is enabled, the sqlite3_create_module() API used to register
  2054. ** virtual tables will always return an error.
  2055. **
  2056. ** This routine returns [SQLITE_OK] if shared cache was
  2057. ** enabled or disabled successfully. An [SQLITE_ERROR | error code]
  2058. ** is returned otherwise.
  2059. **
  2060. ** Shared cache is disabled by default for backward compatibility.
  2061. */
  2062. int sqlite3_enable_shared_cache(int);
  2063. /*
  2064. ** CAPI3REF: Attempt To Free Heap Memory
  2065. **
  2066. ** Attempt to free N bytes of heap memory by deallocating non-essential
  2067. ** memory allocations held by the database library (example: memory
  2068. ** used to cache database pages to improve performance).
  2069. **
  2070. ** This function is not a part of standard builds. It is only created
  2071. ** if SQLite is compiled with the SQLITE_ENABLE_MEMORY_MANAGEMENT macro.
  2072. */
  2073. int sqlite3_release_memory(int);
  2074. /*
  2075. ** CAPI3REF: Impose A Limit On Heap Size
  2076. **
  2077. ** Place a "soft" limit on the amount of heap memory that may be allocated by
  2078. ** SQLite within the current thread. If an internal allocation is requested
  2079. ** that would exceed the specified limit, [sqlite3_release_memory()] is invoked
  2080. ** one or more times to free up some space before the allocation is made.
  2081. **
  2082. ** The limit is called "soft", because if [sqlite3_release_memory()] cannot free
  2083. ** sufficient memory to prevent the limit from being exceeded, the memory is
  2084. ** allocated anyway and the current operation proceeds.
  2085. **
  2086. ** Prior to shutting down a thread sqlite3_soft_heap_limit() must be set to
  2087. ** zero (the default) or else the thread will leak memory. Alternatively, use
  2088. ** the [sqlite3_thread_cleanup()] API.
  2089. **
  2090. ** A negative or zero value for N means that there is no soft heap limit and
  2091. ** [sqlite3_release_memory()] will only be called when memory is exhaused.
  2092. ** The default value for the soft heap limit is zero.
  2093. **
  2094. ** SQLite makes a best effort to honor the soft heap limit. But if it
  2095. ** is unable to reduce memory usage below the soft limit, execution will
  2096. ** continue without error or notification. This is why the limit is
  2097. ** called a "soft" limit. It is advisory only.
  2098. **
  2099. ** This function is only available if the library was compiled with the
  2100. ** SQLITE_ENABLE_MEMORY_MANAGEMENT option set.
  2101. ** memory-management has been enabled.
  2102. */
  2103. void sqlite3_soft_heap_limit(int);
  2104. /*
  2105. ** CAPI3REF: Clean Up Thread Local Storage
  2106. **
  2107. ** This routine makes sure that all thread-local storage has been
  2108. ** deallocated for the current thread.
  2109. **
  2110. ** This routine is not technically necessary. All thread-local storage
  2111. ** will be automatically deallocated once memory-management and
  2112. ** shared-cache are disabled and the soft heap limit has been set
  2113. ** to zero. This routine is provided as a convenience for users who
  2114. ** want to make absolutely sure they have not forgotten something
  2115. ** prior to killing off a thread.
  2116. */
  2117. void sqlite3_thread_cleanup(void);
  2118. /*
  2119. ** CAPI3REF: Extract Metadata About A Column Of A Table
  2120. **
  2121. ** This routine
  2122. ** returns meta-data about a specific column of a specific database
  2123. ** table accessible using the connection handle passed as the first function
  2124. ** argument.
  2125. **
  2126. ** The column is identified by the second, third and fourth parameters to
  2127. ** this function. The second parameter is either the name of the database
  2128. ** (i.e. "main", "temp" or an attached database) containing the specified
  2129. ** table or NULL. If it is NULL, then all attached databases are searched
  2130. ** for the table using the same algorithm as the database engine uses to
  2131. ** resolve unqualified table references.
  2132. **
  2133. ** The third and fourth parameters to this function are the table and column
  2134. ** name of the desired column, respectively. Neither of these parameters
  2135. ** may be NULL.
  2136. **
  2137. ** Meta information is returned by writing to the memory locations passed as
  2138. ** the 5th and subsequent parameters to this function. Any of these
  2139. ** arguments may be NULL, in which case the corresponding element of meta
  2140. ** information is ommitted.
  2141. **
  2142. ** <pre>
  2143. ** Parameter Output Type Description
  2144. ** -----------------------------------
  2145. **
  2146. ** 5th const char* Data type
  2147. ** 6th const char* Name of the default collation sequence
  2148. ** 7th int True if the column has a NOT NULL constraint
  2149. ** 8th int True if the column is part of the PRIMARY KEY
  2150. ** 9th int True if the column is AUTOINCREMENT
  2151. ** </pre>
  2152. **
  2153. **
  2154. ** The memory pointed to by the character pointers returned for the
  2155. ** declaration type and collation sequence is valid only until the next
  2156. ** call to any sqlite API function.
  2157. **
  2158. ** If the specified table is actually a view, then an error is returned.
  2159. **
  2160. ** If the specified column is "rowid", "oid" or "_rowid_" and an
  2161. ** INTEGER PRIMARY KEY column has been explicitly declared, then the output
  2162. ** parameters are set for the explicitly declared column. If there is no
  2163. ** explicitly declared IPK column, then the output parameters are set as
  2164. ** follows:
  2165. **
  2166. ** <pre>
  2167. ** data type: "INTEGER"
  2168. ** collation sequence: "BINARY"
  2169. ** not null: 0
  2170. ** primary key: 1
  2171. ** auto increment: 0
  2172. ** </pre>
  2173. **
  2174. ** This function may load one or more schemas from database files. If an
  2175. ** error occurs during this process, or if the requested table or column
  2176. ** cannot be found, an SQLITE error code is returned and an error message
  2177. ** left in the database handle (to be retrieved using sqlite3_errmsg()).
  2178. **
  2179. ** This API is only available if the library was compiled with the
  2180. ** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
  2181. */
  2182. int sqlite3_table_column_metadata(
  2183. sqlite3 *db, /* Connection handle */
  2184. const char *zDbName, /* Database name or NULL */
  2185. const char *zTableName, /* Table name */
  2186. const char *zColumnName, /* Column name */
  2187. char const **pzDataType, /* OUTPUT: Declared data type */
  2188. char const **pzCollSeq, /* OUTPUT: Collation sequence name */
  2189. int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
  2190. int *pPrimaryKey, /* OUTPUT: True if column part of PK */
  2191. int *pAutoinc /* OUTPUT: True if colums is auto-increment */
  2192. );
  2193. /*
  2194. ** CAPI3REF: Load An Extension
  2195. **
  2196. ** Attempt to load an SQLite extension library contained in the file
  2197. ** zFile. The entry point is zProc. zProc may be 0 in which case the
  2198. ** name of the entry point defaults to "sqlite3_extension_init".
  2199. **
  2200. ** Return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
  2201. **
  2202. ** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
  2203. ** error message text. The calling function should free this memory
  2204. ** by calling [sqlite3_free()].
  2205. **
  2206. ** Extension loading must be enabled using [sqlite3_enable_load_extension()]
  2207. ** prior to calling this API or an error will be returned.
  2208. */
  2209. int sqlite3_load_extension(
  2210. sqlite3 *db, /* Load the extension into this database connection */
  2211. const char *zFile, /* Name of the shared library containing extension */
  2212. const char *zProc, /* Entry point. Derived from zFile if 0 */
  2213. char **pzErrMsg /* Put error message here if not 0 */
  2214. );
  2215. /*
  2216. ** CAPI3REF: Enable Or Disable Extension Loading
  2217. **
  2218. ** So as not to open security holes in older applications that are
  2219. ** unprepared to deal with extension loading, and as a means of disabling
  2220. ** extension loading while evaluating user-entered SQL, the following
  2221. ** API is provided to turn the [sqlite3_load_extension()] mechanism on and
  2222. ** off. It is off by default. See ticket #1863.
  2223. **
  2224. ** Call this routine with onoff==1 to turn extension loading on
  2225. ** and call it with onoff==0 to turn it back off again.
  2226. */
  2227. int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
  2228. /*
  2229. ** CAPI3REF: Make Arrangements To Automatically Load An Extension
  2230. **
  2231. ** Register an extension entry point that is automatically invoked
  2232. ** whenever a new database connection is opened using
  2233. ** [sqlite3_open()] or [sqlite3_open16()].
  2234. **
  2235. ** This API can be invoked at program startup in order to register
  2236. ** one or more statically linked extensions that will be available
  2237. ** to all new database connections.
  2238. **
  2239. ** Duplicate extensions are detected so calling this routine multiple
  2240. ** times with the same extension is harmless.
  2241. **
  2242. ** This routine stores a pointer to the extension in an array
  2243. ** that is obtained from malloc(). If you run a memory leak
  2244. ** checker on your program and it reports a leak because of this
  2245. ** array, then invoke [sqlite3_automatic_extension_reset()] prior
  2246. ** to shutdown to free the memory.
  2247. **
  2248. ** Automatic extensions apply across all threads.
  2249. **
  2250. ** This interface is experimental and is subject to change or
  2251. ** removal in future releases of SQLite.
  2252. */
  2253. int sqlite3_auto_extension(void *xEntryPoint);
  2254. /*
  2255. ** CAPI3REF: Reset Automatic Extension Loading
  2256. **
  2257. ** Disable all previously registered automatic extensions. This
  2258. ** routine undoes the effect of all prior [sqlite3_automatic_extension()]
  2259. ** calls.
  2260. **
  2261. ** This call disabled automatic extensions in all threads.
  2262. **
  2263. ** This interface is experimental and is subject to change or
  2264. ** removal in future releases of SQLite.
  2265. */
  2266. void sqlite3_reset_auto_extension(void);
  2267. /*
  2268. ****** EXPERIMENTAL - subject to change without notice **************
  2269. **
  2270. ** The interface to the virtual-table mechanism is currently considered
  2271. ** to be experimental. The interface might change in incompatible ways.
  2272. ** If this is a problem for you, do not use the interface at this time.
  2273. **
  2274. ** When the virtual-table mechanism stablizes, we will declare the
  2275. ** interface fixed, support it indefinitely, and remove this comment.
  2276. */
  2277. /*
  2278. ** Structures used by the virtual table interface
  2279. */
  2280. typedef struct sqlite3_vtab sqlite3_vtab;
  2281. typedef struct sqlite3_index_info sqlite3_index_info;
  2282. typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
  2283. typedef struct sqlite3_module sqlite3_module;
  2284. /*
  2285. ** A module is a class of virtual tables. Each module is defined
  2286. ** by an instance of the following structure. This structure consists
  2287. ** mostly of methods for the module.
  2288. */
  2289. struct sqlite3_module {
  2290. int iVersion;
  2291. int (*xCreate)(sqlite3*, void *pAux,
  2292. int argc, const char *const*argv,
  2293. sqlite3_vtab **ppVTab, char**);
  2294. int (*xConnect)(sqlite3*, void *pAux,
  2295. int argc, const char *const*argv,
  2296. sqlite3_vtab **ppVTab, char**);
  2297. int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
  2298. int (*xDisconnect)(sqlite3_vtab *pVTab);
  2299. int (*xDestroy)(sqlite3_vtab *pVTab);
  2300. int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
  2301. int (*xClose)(sqlite3_vtab_cursor*);
  2302. int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
  2303. int argc, sqlite3_value **argv);
  2304. int (*xNext)(sqlite3_vtab_cursor*);
  2305. int (*xEof)(sqlite3_vtab_cursor*);
  2306. int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
  2307. int (*xRowid)(sqlite3_vtab_cursor*, sqlite_int64 *pRowid);
  2308. int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite_int64 *);
  2309. int (*xBegin)(sqlite3_vtab *pVTab);
  2310. int (*xSync)(sqlite3_vtab *pVTab);
  2311. int (*xCommit)(sqlite3_vtab *pVTab);
  2312. int (*xRollback)(sqlite3_vtab *pVTab);
  2313. int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
  2314. void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
  2315. void **ppArg);
  2316. };
  2317. /*
  2318. ** The sqlite3_index_info structure and its substructures is used to
  2319. ** pass information into and receive the reply from the xBestIndex
  2320. ** method of an sqlite3_module. The fields under **Inputs** are the
  2321. ** inputs to xBestIndex and are read-only. xBestIndex inserts its
  2322. ** results into the **Outputs** fields.
  2323. **
  2324. ** The aConstraint[] array records WHERE clause constraints of the
  2325. ** form:
  2326. **
  2327. ** column OP expr
  2328. **
  2329. ** Where OP is =, <, <=, >, or >=. The particular operator is stored
  2330. ** in aConstraint[].op. The index of the column is stored in
  2331. ** aConstraint[].iColumn. aConstraint[].usable is TRUE if the
  2332. ** expr on the right-hand side can be evaluated (and thus the constraint
  2333. ** is usable) and false if it cannot.
  2334. **
  2335. ** The optimizer automatically inverts terms of the form "expr OP column"
  2336. ** and makes other simplificatinos to the WHERE clause in an attempt to
  2337. ** get as many WHERE clause terms into the form shown above as possible.
  2338. ** The aConstraint[] array only reports WHERE clause terms in the correct
  2339. ** form that refer to the particular virtual table being queried.
  2340. **
  2341. ** Information about the ORDER BY clause is stored in aOrderBy[].
  2342. ** Each term of aOrderBy records a column of the ORDER BY clause.
  2343. **
  2344. ** The xBestIndex method must fill aConstraintUsage[] with information
  2345. ** about what parameters to pass to xFilter. If argvIndex>0 then
  2346. ** the right-hand side of the corresponding aConstraint[] is evaluated
  2347. ** and becomes the argvIndex-th entry in argv. If aConstraintUsage[].omit
  2348. ** is true, then the constraint is assumed to be fully handled by the
  2349. ** virtual table and is not checked again by SQLite.
  2350. **
  2351. ** The idxNum and idxPtr values are recorded and passed into xFilter.
  2352. ** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
  2353. **
  2354. ** The orderByConsumed means that output from xFilter will occur in
  2355. ** the correct order to satisfy the ORDER BY clause so that no separate
  2356. ** sorting step is required.
  2357. **
  2358. ** The estimatedCost value is an estimate of the cost of doing the
  2359. ** particular lookup. A full scan of a table with N entries should have
  2360. ** a cost of N. A binary search of a table of N entries should have a
  2361. ** cost of approximately log(N).
  2362. */
  2363. struct sqlite3_index_info {
  2364. /* Inputs */
  2365. const int nConstraint; /* Number of entries in aConstraint */
  2366. const struct sqlite3_index_constraint {
  2367. int iColumn; /* Column on left-hand side of constraint */
  2368. unsigned char op; /* Constraint operator */
  2369. unsigned char usable; /* True if this constraint is usable */
  2370. int iTermOffset; /* Used internally - xBestIndex should ignore */
  2371. } *const aConstraint; /* Table of WHERE clause constraints */
  2372. const int nOrderBy; /* Number of terms in the ORDER BY clause */
  2373. const struct sqlite3_index_orderby {
  2374. int iColumn; /* Column number */
  2375. unsigned char desc; /* True for DESC. False for ASC. */
  2376. } *const aOrderBy; /* The ORDER BY clause */
  2377. /* Outputs */
  2378. struct sqlite3_index_constraint_usage {
  2379. int argvIndex; /* if >0, constraint is part of argv to xFilter */
  2380. unsigned char omit; /* Do not code a test for this constraint */
  2381. } *const aConstraintUsage;
  2382. int idxNum; /* Number used to identify the index */
  2383. char *idxStr; /* String, possibly obtained from sqlite3_malloc */
  2384. int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */
  2385. int orderByConsumed; /* True if output is already ordered */
  2386. double estimatedCost; /* Estimated cost of using this index */
  2387. };
  2388. #define SQLITE_INDEX_CONSTRAINT_EQ 2
  2389. #define SQLITE_INDEX_CONSTRAINT_GT 4
  2390. #define SQLITE_INDEX_CONSTRAINT_LE 8
  2391. #define SQLITE_INDEX_CONSTRAINT_LT 16
  2392. #define SQLITE_INDEX_CONSTRAINT_GE 32
  2393. #define SQLITE_INDEX_CONSTRAINT_MATCH 64
  2394. /*
  2395. ** This routine is used to register a new module name with an SQLite
  2396. ** connection. Module names must be registered before creating new
  2397. ** virtual tables on the module, or before using preexisting virtual
  2398. ** tables of the module.
  2399. */
  2400. int sqlite3_create_module(
  2401. sqlite3 *db, /* SQLite connection to register module with */
  2402. const char *zName, /* Name of the module */
  2403. const sqlite3_module *, /* Methods for the module */
  2404. void * /* Client data for xCreate/xConnect */
  2405. );
  2406. /*
  2407. ** Every module implementation uses a subclass of the following structure
  2408. ** to describe a particular instance of the module. Each subclass will
  2409. ** be taylored to the specific needs of the module implementation. The
  2410. ** purpose of this superclass is to define certain fields that are common
  2411. ** to all module implementations.
  2412. **
  2413. ** Virtual tables methods can set an error message by assigning a
  2414. ** string obtained from sqlite3_mprintf() to zErrMsg. The method should
  2415. ** take care that any prior string is freed by a call to sqlite3_free()
  2416. ** prior to assigning a new string to zErrMsg. After the error message
  2417. ** is delivered up to the client application, the string will be automatically
  2418. ** freed by sqlite3_free() and the zErrMsg field will be zeroed. Note
  2419. ** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
  2420. ** since virtual tables are commonly implemented in loadable extensions which
  2421. ** do not have access to sqlite3MPrintf() or sqlite3Free().
  2422. */
  2423. struct sqlite3_vtab {
  2424. const sqlite3_module *pModule; /* The module for this virtual table */
  2425. int nRef; /* Used internally */
  2426. char *zErrMsg; /* Error message from sqlite3_mprintf() */
  2427. /* Virtual table implementations will typically add additional fields */
  2428. };
  2429. /* Every module implementation uses a subclass of the following structure
  2430. ** to describe cursors that point into the virtual table and are used
  2431. ** to loop through the virtual table. Cursors are created using the
  2432. ** xOpen method of the module. Each module implementation will define
  2433. ** the content of a cursor structure to suit its own needs.
  2434. **
  2435. ** This superclass exists in order to define fields of the cursor that
  2436. ** are common to all implementations.
  2437. */
  2438. struct sqlite3_vtab_cursor {
  2439. sqlite3_vtab *pVtab; /* Virtual table of this cursor */
  2440. /* Virtual table implementations will typically add additional fields */
  2441. };
  2442. /*
  2443. ** The xCreate and xConnect methods of a module use the following API
  2444. ** to declare the format (the names and datatypes of the columns) of
  2445. ** the virtual tables they implement.
  2446. */
  2447. int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
  2448. /*
  2449. ** Virtual tables can provide alternative implementations of functions
  2450. ** using the xFindFunction method. But global versions of those functions
  2451. ** must exist in order to be overloaded.
  2452. **
  2453. ** This API makes sure a global version of a function with a particular
  2454. ** name and number of parameters exists. If no such function exists
  2455. ** before this API is called, a new function is created. The implementation
  2456. ** of the new function always causes an exception to be thrown. So
  2457. ** the new function is not good for anything by itself. Its only
  2458. ** purpose is to be a place-holder function that can be overloaded
  2459. ** by virtual tables.
  2460. **
  2461. ** This API should be considered part of the virtual table interface,
  2462. ** which is experimental and subject to change.
  2463. */
  2464. int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
  2465. /*
  2466. ** The interface to the virtual-table mechanism defined above (back up
  2467. ** to a comment remarkably similar to this one) is currently considered
  2468. ** to be experimental. The interface might change in incompatible ways.
  2469. ** If this is a problem for you, do not use the interface at this time.
  2470. **
  2471. ** When the virtual-table mechanism stablizes, we will declare the
  2472. ** interface fixed, support it indefinitely, and remove this comment.
  2473. **
  2474. ****** EXPERIMENTAL - subject to change without notice **************
  2475. */
  2476. /*
  2477. ** CAPI3REF: A Handle To An Open BLOB
  2478. **
  2479. ** An instance of the following opaque structure is used to
  2480. ** represent an blob-handle. A blob-handle is created by
  2481. ** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
  2482. ** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
  2483. ** can be used to read or write small subsections of the blob.
  2484. ** The [sqltie3_blob_size()] interface returns the size of the
  2485. ** blob in bytes.
  2486. */
  2487. typedef struct sqlite3_blob sqlite3_blob;
  2488. /*
  2489. ** CAPI3REF: Open A BLOB For Incremental I/O
  2490. **
  2491. ** Open a handle to the blob located in row iRow,, column zColumn,
  2492. ** table zTable in database zDb. i.e. the same blob that would
  2493. ** be selected by:
  2494. **
  2495. ** <pre>
  2496. ** SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
  2497. ** </pre>
  2498. **
  2499. ** If the flags parameter is non-zero, the blob is opened for
  2500. ** read and write access. If it is zero, the blob is opened for read
  2501. ** access.
  2502. **
  2503. ** On success, [SQLITE_OK] is returned and the new
  2504. ** [sqlite3_blob | blob handle] is written to *ppBlob.
  2505. ** Otherwise an error code is returned and
  2506. ** any value written to *ppBlob should not be used by the caller.
  2507. ** This function sets the database-handle error code and message
  2508. ** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
  2509. */
  2510. int sqlite3_blob_open(
  2511. sqlite3*,
  2512. const char *zDb,
  2513. const char *zTable,
  2514. const char *zColumn,
  2515. sqlite_int64 iRow,
  2516. int flags,
  2517. sqlite3_blob **ppBlob
  2518. );
  2519. /*
  2520. ** CAPI3REF: Close A BLOB Handle
  2521. **
  2522. ** Close an open [sqlite3_blob | blob handle].
  2523. */
  2524. int sqlite3_blob_close(sqlite3_blob *);
  2525. /*
  2526. ** CAPI3REF: Return The Size Of An Open BLOB
  2527. **
  2528. ** Return the size in bytes of the blob accessible via the open
  2529. ** [sqlite3_blob | blob-handle] passed as an argument.
  2530. */
  2531. int sqlite3_blob_bytes(sqlite3_blob *);
  2532. /*
  2533. ** CAPI3REF: Read Data From A BLOB Incrementally
  2534. **
  2535. ** This function is used to read data from an open
  2536. ** [sqlite3_blob | blob-handle] into a caller supplied buffer.
  2537. ** n bytes of data are copied into buffer
  2538. ** z from the open blob, starting at offset iOffset.
  2539. **
  2540. ** On success, SQLITE_OK is returned. Otherwise, an
  2541. ** [SQLITE_ERROR | SQLite error code] or an
  2542. ** [SQLITE_IOERR_READ | extended error code] is returned.
  2543. */
  2544. int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
  2545. /*
  2546. ** CAPI3REF: Write Data Into A BLOB Incrementally
  2547. **
  2548. ** This function is used to write data into an open
  2549. ** [sqlite3_blob | blob-handle] from a user supplied buffer.
  2550. ** n bytes of data are copied from the buffer
  2551. ** pointed to by z into the open blob, starting at offset iOffset.
  2552. **
  2553. ** If the [sqlite3_blob | blob-handle] passed as the first argument
  2554. ** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
  2555. *** was zero), this function returns [SQLITE_READONLY].
  2556. **
  2557. ** This function may only modify the contents of the blob, it is
  2558. ** not possible to increase the size of a blob using this API. If
  2559. ** offset iOffset is less than n bytes from the end of the blob,
  2560. ** [SQLITE_ERROR] is returned and no data is written.
  2561. **
  2562. ** On success, SQLITE_OK is returned. Otherwise, an
  2563. ** [SQLITE_ERROR | SQLite error code] or an
  2564. ** [SQLITE_IOERR_READ | extended error code] is returned.
  2565. */
  2566. int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
  2567. /*
  2568. ** Undo the hack that converts floating point types to integer for
  2569. ** builds on processors without floating point support.
  2570. */
  2571. #ifdef SQLITE_OMIT_FLOATING_POINT
  2572. # undef double
  2573. #endif
  2574. #ifdef __cplusplus
  2575. } /* End of the 'extern "C"' block */
  2576. #endif
  2577. #endif