engine/sqlite/src/sqlite3.h
author Lars Persson <lars.persson@embeddev.se>
Wed, 31 Mar 2010 18:09:02 +0200
changeset 64 b52f6033af15
parent 2 29cda98b007e
permissions -rw-r--r--
Add so image conversion is done in feedinfo if image already exist. Check in feedengine if image exist from previous database(files might exist, even though the db is corrupt.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     1
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     2
** 2001 September 15
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     3
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     4
** The author disclaims copyright to this source code.  In place of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     5
** a legal notice, here is a blessing:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     6
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     7
**    May you do good and not evil.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     8
**    May you find forgiveness for yourself and forgive others.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
     9
**    May you share freely, never taking more than you give.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    10
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    11
*************************************************************************
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    12
** This header file defines the interface that the SQLite library
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    13
** presents to client programs.  If a C-function, structure, datatype,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    14
** or constant definition does not appear in this file, then it is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    15
** not a published API of SQLite, is subject to change without
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    16
** notice, and should not be referenced by programs that use SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    17
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    18
** Some of the definitions that are in this file are marked as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    19
** "experimental".  Experimental interfaces are normally new
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    20
** features recently added to SQLite.  We do not anticipate changes 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    21
** to experimental interfaces but reserve to make minor changes if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    22
** experience from use "in the wild" suggest such changes are prudent.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    23
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    24
** The official C-language API documentation for SQLite is derived
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    25
** from comments in this file.  This file is the authoritative source
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    26
** on how SQLite interfaces are suppose to operate.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    27
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    28
** The name of this file under configuration management is "sqlite.h.in".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    29
** The makefile makes some minor changes to this file (such as inserting
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    30
** the version number) and changes its name to "sqlite3.h" as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    31
** part of the build process.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    32
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    33
** @(#) $Id: sqlite3.h 1420 2009-01-13 15:06:30Z teknolog $
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    34
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    35
#ifndef _SQLITE3_H_
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    36
#define _SQLITE3_H_
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    37
#include <stdarg.h>     /* Needed for the definition of va_list */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    38
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    39
** Make sure we can call this stuff from C++.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    40
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    41
#ifdef __cplusplus
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    42
extern "C" {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    43
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    44
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    45
//#define EXPORT_C
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    46
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    47
//#define /*IMPORT_C*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    48
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    49
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    50
** Add the ability to override 'extern'
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    51
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    52
#ifndef SQLITE_EXTERN
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    53
# define SQLITE_EXTERN extern
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    54
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    55
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    56
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    57
** Make sure these symbols where not defined by some previous header
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    58
** file.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    59
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    60
#ifdef SQLITE_VERSION
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    61
# undef SQLITE_VERSION
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    62
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    63
#ifdef SQLITE_VERSION_NUMBER
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    64
# undef SQLITE_VERSION_NUMBER
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    65
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    66
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    67
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    68
** CAPI3REF: Compile-Time Library Version Numbers {F10010}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    69
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    70
** {F10011} The #define in the sqlite3.h header file named
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    71
** SQLITE_VERSION resolves to a string literal that identifies
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    72
** the version of the SQLite library in the format "X.Y.Z", where
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    73
** X is the major version number, Y is the minor version number and Z
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    74
** is the release number.  The X.Y.Z might be followed by "alpha" or "beta".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    75
** {END} For example "3.1.1beta".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    76
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    77
** The X value is always 3 in SQLite.  The X value only changes when
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    78
** backwards compatibility is broken and we intend to never break
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    79
** backwards compatibility.  The Y value only changes when
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    80
** there are major feature enhancements that are forwards compatible
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    81
** but not backwards compatible.  The Z value is incremented with
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    82
** each release but resets back to 0 when Y is incremented.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    83
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    84
** {F10014} The SQLITE_VERSION_NUMBER #define resolves to an integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    85
** with the value  (X*1000000 + Y*1000 + Z) where X, Y, and Z are as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    86
** with SQLITE_VERSION. {END} For example, for version "3.1.1beta", 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    87
** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    88
** version 3.1.1 or greater at compile time, programs may use the test 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    89
** (SQLITE_VERSION_NUMBER>=3001001).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    90
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    91
** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    92
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    93
#define SQLITE_VERSION         "3.5.4"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    94
#define SQLITE_VERSION_NUMBER 3005004
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    95
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    96
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    97
** CAPI3REF: Run-Time Library Version Numbers {F10020}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    98
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
    99
** {F10021} The sqlite3_libversion_number() interface returns an integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   100
** equal to [SQLITE_VERSION_NUMBER].  {END} The value returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   101
** by this routine should only be different from the header values
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   102
** if the application is compiled using an sqlite3.h header from a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   103
** different version of SQLite than library.  Cautious programmers might
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   104
** include a check in their application to verify that 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   105
** sqlite3_libversion_number() always returns the value 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   106
** [SQLITE_VERSION_NUMBER].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   107
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   108
** {F10022} The sqlite3_version[] string constant contains the text of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   109
** [SQLITE_VERSION] string. {F10023} The sqlite3_libversion() function returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   110
** a pointer to the sqlite3_version[] string constant. {END} The 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   111
** sqlite3_libversion() function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   112
** is provided for DLL users who can only access functions and not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   113
** constants within the DLL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   114
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   115
const char sqlite3_version[] = SQLITE_VERSION;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   116
/*IMPORT_C*/ const char *sqlite3_libversion(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   117
/*IMPORT_C*/ int sqlite3_libversion_number(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   118
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   119
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   120
void LogMessage(char *message);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   121
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   122
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   123
** CAPI3REF: Test To See If The Library Is Threadsafe {F10100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   124
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   125
** {F10101} The sqlite3_threadsafe() routine returns nonzero
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   126
** if SQLite was compiled with its mutexes enabled or zero if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   127
** SQLite was compiled with mutexes disabled. {END}  If this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   128
** routine returns false, then it is not safe for simultaneously
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   129
** running threads to both invoke SQLite interfaces.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   130
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   131
** Really all this routine does is return true if SQLite was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   132
** compiled with the -DSQLITE_THREADSAFE=1 option and false if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   133
** compiled with -DSQLITE_THREADSAFE=0.  If SQLite uses an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   134
** application-defined mutex subsystem, malloc subsystem, collating
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   135
** sequence, VFS, SQL function, progress callback, commit hook,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   136
** extension, or other accessories and these add-ons are not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   137
** threadsafe, then clearly the combination will not be threadsafe
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   138
** either.  Hence, this routine never reports that the library
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   139
** is guaranteed to be threadsafe, only when it is guaranteed not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   140
** to be.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   141
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   142
/*IMPORT_C*/ int sqlite3_threadsafe(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   143
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   144
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   145
** CAPI3REF: Database Connection Handle {F12000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   146
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   147
** Each open SQLite database is represented by pointer to an instance of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   148
** opaque structure named "sqlite3".  It is useful to think of an sqlite3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   149
** pointer as an object.  The [sqlite3_open()], [sqlite3_open16()], and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   150
** [sqlite3_open_v2()] interfaces are its constructors
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   151
** and [sqlite3_close()] is its destructor.  There are many other interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   152
** (such as [sqlite3_prepare_v2()], [sqlite3_create_function()], and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   153
** [sqlite3_busy_timeout()] to name but three) that are methods on this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   154
** object.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   155
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   156
typedef struct sqlite3 sqlite3;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   157
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   158
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   159
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   160
** CAPI3REF: 64-Bit Integer Types {F10200}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   161
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   162
** Because there is no cross-platform way to specify such types
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   163
** SQLite includes typedefs for 64-bit signed and unsigned integers.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   164
** {F10201} The sqlite_int64 and sqlite3_int64 types specify a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   165
** 64-bit signed integer. {F10202} The sqlite_uint64 and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   166
** sqlite3_uint64 types specify a 64-bit unsigned integer. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   167
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   168
** The sqlite3_int64 and sqlite3_uint64 are the preferred type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   169
** definitions.  The sqlite_int64 and sqlite_uint64 types are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   170
** supported for backwards compatibility only.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   171
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   172
#ifdef SQLITE_INT64_TYPE
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   173
  typedef SQLITE_INT64_TYPE sqlite_int64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   174
  typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   175
#elif defined(_MSC_VER) || defined(__BORLANDC__)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   176
  typedef __int64 sqlite_int64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   177
  typedef unsigned __int64 sqlite_uint64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   178
#else
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   179
  typedef long long int sqlite_int64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   180
  typedef unsigned long long int sqlite_uint64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   181
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   182
typedef sqlite_int64 sqlite3_int64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   183
typedef sqlite_uint64 sqlite3_uint64;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   184
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   185
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   186
** If compiling for a processor that lacks floating point support,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   187
** substitute integer for floating-point
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   188
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   189
#ifdef SQLITE_OMIT_FLOATING_POINT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   190
# define double sqlite3_int64
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   191
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   192
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   193
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   194
** CAPI3REF: Closing A Database Connection {F12010}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   195
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   196
** {F12011} The sqlite3_close() interfaces destroys an [sqlite3] object
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   197
** allocated by a prior call to [sqlite3_open()], [sqlite3_open16()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   198
** [sqlite3_open_v2()]. {F12012} Sqlite3_close() releases all
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   199
** memory used by the connection and closes all open files. {END}.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   200
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   201
** {F12013} If the database connection contains
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   202
** [sqlite3_stmt | prepared statements] that have not been finalized
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   203
** by [sqlite3_finalize()], then sqlite3_close() returns SQLITE_BUSY
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   204
** and leaves the connection open.  {F12014} Giving sqlite3_close()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   205
** a NULL pointer is a harmless no-op. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   206
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   207
** {U12015} Passing this routine a database connection that has already been
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   208
** closed results in undefined behavior. {U12016} If other interfaces that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   209
** reference the same database connection are pending (either in the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   210
** same thread or in different threads) when this routine is called,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   211
** then the behavior is undefined and is almost certainly undesirable.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   212
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   213
/*IMPORT_C*/ int sqlite3_close(sqlite3 *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   214
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   215
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   216
** The type for a callback function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   217
** This is legacy and deprecated.  It is included for historical
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   218
** compatibility and is not documented.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   219
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   220
typedef int (*sqlite3_callback)(void*,int,char**, char**);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   221
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   222
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   223
** CAPI3REF: One-Step Query Execution Interface {F12100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   224
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   225
** {F12101} The sqlite3_exec() interface evaluates zero or more 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   226
** UTF-8 encoded, semicolon-separated SQL statements in the zero-terminated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   227
** string of its second argument.  {F12102} The SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   228
** statements are evaluated in the context of the database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   229
** specified by in the first argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   230
** {F12103} SQL statements are prepared one by one using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   231
** [sqlite3_prepare()] or the equivalent, evaluated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   232
** using one or more calls to [sqlite3_step()], then destroyed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   233
** using [sqlite3_finalize()]. {F12104} The return value of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   234
** sqlite3_exec() is SQLITE_OK if all SQL statement run
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   235
** successfully.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   236
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   237
** {F12105} If one or more of the SQL statements handed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   238
** sqlite3_exec() are queries, then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   239
** the callback function specified by the 3rd parameter is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   240
** invoked once for each row of the query result. {F12106}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   241
** If the callback returns a non-zero value then the query
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   242
** is aborted, all subsequent SQL statements
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   243
** are skipped and the sqlite3_exec() function returns the [SQLITE_ABORT].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   244
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   245
** {F12107} The 4th parameter to sqlite3_exec() is an arbitrary pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   246
** that is passed through to the callback function as its first parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   247
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   248
** {F12108} The 2nd parameter to the callback function is the number of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   249
** columns in the query result.  {F12109} The 3rd parameter to the callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   250
** is an array of pointers to strings holding the values for each column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   251
** as extracted using [sqlite3_column_text()].  NULL values in the result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   252
** set result in a NULL pointer.  All other value are in their UTF-8
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   253
** string representation. {F12117}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   254
** The 4th parameter to the callback is an array of strings
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   255
** obtained using [sqlite3_column_name()] and holding
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   256
** the names of each column, also in UTF-8.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   257
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   258
** {F12110} The callback function may be NULL, even for queries.  A NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   259
** callback is not an error.  It just means that no callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   260
** will be invoked. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   261
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   262
** {F12112} If an error occurs while parsing or evaluating the SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   263
** then an appropriate error message is written into memory obtained
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   264
** from [sqlite3_malloc()] and *errmsg is made to point to that message
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   265
** assuming errmsg is not NULL.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   266
** {U12113} The calling function is responsible for freeing the memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   267
** using [sqlite3_free()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   268
** {F12116} If [sqlite3_malloc()] fails while attempting to generate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   269
** the error message, *errmsg is set to NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   270
** {F12114} If errmsg is NULL then no attempt is made to generate an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   271
** error message. <todo>Is the return code SQLITE_NOMEM or the original
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   272
** error code?</todo> <todo>What happens if there are multiple errors?
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   273
** Do we get code for the first error, or is the choice of reported
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   274
** error arbitrary?</todo>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   275
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   276
** {F12115} The return value is is SQLITE_OK if there are no errors and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   277
** some other [SQLITE_OK | return code] if there is an error.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   278
** The particular return value depends on the type of error.  {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   279
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   280
/*IMPORT_C*/ int sqlite3_exec(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   281
  sqlite3*,                                  /* An open database */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   282
  const char *sql,                           /* SQL to be evaluted */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   283
  int (*callback)(void*,int,char**,char**),  /* Callback function */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   284
  void *,                                    /* 1st argument to callback */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   285
  char **errmsg                              /* Error msg written here */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   286
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   287
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   288
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   289
** CAPI3REF: Result Codes {F10210}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   290
** KEYWORDS: SQLITE_OK
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   291
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   292
** Many SQLite functions return an integer result code from the set shown
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   293
** above in order to indicates success or failure.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   294
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   295
** {F10211} The result codes shown here are the only ones returned 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   296
** by SQLite in its default configuration. {F10212} However, the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   297
** [sqlite3_extended_result_codes()] API can be used to set a database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   298
** connectoin to return more detailed result codes. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   299
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   300
** See also: [SQLITE_IOERR_READ | extended result codes]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   301
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   302
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   303
#define SQLITE_OK           0   /* Successful result */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   304
/* beginning-of-error-codes */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   305
#define SQLITE_ERROR        1   /* SQL error or missing database */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   306
#define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   307
#define SQLITE_PERM         3   /* Access permission denied */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   308
#define SQLITE_ABORT        4   /* Callback routine requested an abort */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   309
#define SQLITE_BUSY         5   /* The database file is locked */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   310
#define SQLITE_LOCKED       6   /* A table in the database is locked */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   311
#define SQLITE_NOMEM        7   /* A malloc() failed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   312
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   313
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   314
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   315
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   316
#define SQLITE_NOTFOUND    12   /* NOT USED. Table or record not found */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   317
#define SQLITE_FULL        13   /* Insertion failed because database is full */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   318
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   319
#define SQLITE_PROTOCOL    15   /* NOT USED. Database lock protocol error */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   320
#define SQLITE_EMPTY       16   /* Database is empty */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   321
#define SQLITE_SCHEMA      17   /* The database schema changed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   322
#define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   323
#define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   324
#define SQLITE_MISMATCH    20   /* Data type mismatch */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   325
#define SQLITE_MISUSE      21   /* Library used incorrectly */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   326
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   327
#define SQLITE_AUTH        23   /* Authorization denied */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   328
#define SQLITE_FORMAT      24   /* Auxiliary database format error */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   329
#define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   330
#define SQLITE_NOTADB      26   /* File opened that is not a database file */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   331
#define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   332
#define SQLITE_DONE        101  /* sqlite3_step() has finished executing */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   333
/* end-of-error-codes */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   334
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   335
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   336
** CAPI3REF: Extended Result Codes {F10220}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   337
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   338
** In its default configuration, SQLite API routines return one of 26 integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   339
** [SQLITE_OK | result codes].  However, experience has shown that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   340
** many of these result codes are too course-grained.  They do not provide as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   341
** much information about problems as programmers might like.  In an effort to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   342
** address this, newer versions of SQLite (version 3.3.8 and later) include
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   343
** support for additional result codes that provide more detailed information
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   344
** about errors. {F10221} The extended result codes are enabled or disabled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   345
** for each database connection using the [sqlite3_extended_result_codes()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   346
** API. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   347
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   348
** Some of the available extended result codes are listed above.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   349
** We expect the number of extended result codes will be expand
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   350
** over time.  {U10422} Software that uses extended result codes should expect
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   351
** to see new result codes in future releases of SQLite. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   352
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   353
** {F10223} The symbolic name for an extended result code always contains
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   354
** a related primary result code as a prefix. {F10224} Primary result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   355
** codes contain a single "_" character.  {F10225} Extended result codes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   356
** contain two or more "_" characters. {F10226} The numeric value of an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   357
** extended result code can be converted to its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   358
** corresponding primary result code by masking off the lower 8 bytes. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   359
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   360
** The SQLITE_OK result code will never be extended.  It will always
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   361
** be exactly zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   362
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   363
#define SQLITE_IOERR_READ          (SQLITE_IOERR | (1<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   364
#define SQLITE_IOERR_SHORT_READ    (SQLITE_IOERR | (2<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   365
#define SQLITE_IOERR_WRITE         (SQLITE_IOERR | (3<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   366
#define SQLITE_IOERR_FSYNC         (SQLITE_IOERR | (4<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   367
#define SQLITE_IOERR_DIR_FSYNC     (SQLITE_IOERR | (5<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   368
#define SQLITE_IOERR_TRUNCATE      (SQLITE_IOERR | (6<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   369
#define SQLITE_IOERR_FSTAT         (SQLITE_IOERR | (7<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   370
#define SQLITE_IOERR_UNLOCK        (SQLITE_IOERR | (8<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   371
#define SQLITE_IOERR_RDLOCK        (SQLITE_IOERR | (9<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   372
#define SQLITE_IOERR_DELETE        (SQLITE_IOERR | (10<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   373
#define SQLITE_IOERR_BLOCKED       (SQLITE_IOERR | (11<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   374
#define SQLITE_IOERR_NOMEM         (SQLITE_IOERR | (12<<8))
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   375
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   376
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   377
** CAPI3REF: Flags For File Open Operations {F10230}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   378
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   379
** {F10231} Some combination of the these bit values are used as the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   380
** third argument to the [sqlite3_open_v2()] interface and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   381
** as fourth argument to the xOpen method of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   382
** [sqlite3_vfs] object.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   383
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   384
#define SQLITE_OPEN_READONLY         0x00000001
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   385
#define SQLITE_OPEN_READWRITE        0x00000002
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   386
#define SQLITE_OPEN_CREATE           0x00000004
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   387
#define SQLITE_OPEN_DELETEONCLOSE    0x00000008
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   388
#define SQLITE_OPEN_EXCLUSIVE        0x00000010
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   389
#define SQLITE_OPEN_MAIN_DB          0x00000100
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   390
#define SQLITE_OPEN_TEMP_DB          0x00000200
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   391
#define SQLITE_OPEN_TRANSIENT_DB     0x00000400
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   392
#define SQLITE_OPEN_MAIN_JOURNAL     0x00000800
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   393
#define SQLITE_OPEN_TEMP_JOURNAL     0x00001000
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   394
#define SQLITE_OPEN_SUBJOURNAL       0x00002000
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   395
#define SQLITE_OPEN_MASTER_JOURNAL   0x00004000
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   396
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   397
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   398
** CAPI3REF: Device Characteristics {F10240}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   399
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   400
** {F10241} The xDeviceCapabilities method of the [sqlite3_io_methods]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   401
** object returns an integer which is a vector of the these
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   402
** bit values expressing I/O characteristics of the mass storage
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   403
** device that holds the file that the [sqlite3_io_methods]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   404
** refers to. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   405
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   406
** {F10242} The SQLITE_IOCAP_ATOMIC property means that all writes of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   407
** any size are atomic.  {F10243} The SQLITE_IOCAP_ATOMICnnn values
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   408
** mean that writes of blocks that are nnn bytes in size and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   409
** are aligned to an address which is an integer multiple of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   410
** nnn are atomic.  {F10244} The SQLITE_IOCAP_SAFE_APPEND value means
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   411
** that when data is appended to a file, the data is appended
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   412
** first then the size of the file is extended, never the other
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   413
** way around.  {F10245} The SQLITE_IOCAP_SEQUENTIAL property means that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   414
** information is written to disk in the same order as calls
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   415
** to xWrite().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   416
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   417
#define SQLITE_IOCAP_ATOMIC          0x00000001
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   418
#define SQLITE_IOCAP_ATOMIC512       0x00000002
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   419
#define SQLITE_IOCAP_ATOMIC1K        0x00000004
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   420
#define SQLITE_IOCAP_ATOMIC2K        0x00000008
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   421
#define SQLITE_IOCAP_ATOMIC4K        0x00000010
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   422
#define SQLITE_IOCAP_ATOMIC8K        0x00000020
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   423
#define SQLITE_IOCAP_ATOMIC16K       0x00000040
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   424
#define SQLITE_IOCAP_ATOMIC32K       0x00000080
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   425
#define SQLITE_IOCAP_ATOMIC64K       0x00000100
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   426
#define SQLITE_IOCAP_SAFE_APPEND     0x00000200
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   427
#define SQLITE_IOCAP_SEQUENTIAL      0x00000400
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   428
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   429
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   430
** CAPI3REF: File Locking Levels {F10250}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   431
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   432
** {F10251} SQLite uses one of the following integer values as the second
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   433
** argument to calls it makes to the xLock() and xUnlock() methods
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   434
** of an [sqlite3_io_methods] object. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   435
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   436
#define SQLITE_LOCK_NONE          0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   437
#define SQLITE_LOCK_SHARED        1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   438
#define SQLITE_LOCK_RESERVED      2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   439
#define SQLITE_LOCK_PENDING       3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   440
#define SQLITE_LOCK_EXCLUSIVE     4
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   441
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   442
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   443
** CAPI3REF: Synchronization Type Flags {F10260}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   444
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   445
** {F10261} When SQLite invokes the xSync() method of an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   446
** [sqlite3_io_methods] object it uses a combination of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   447
** these integer values as the second argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   448
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   449
** {F10262} When the SQLITE_SYNC_DATAONLY flag is used, it means that the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   450
** sync operation only needs to flush data to mass storage.  Inode
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   451
** information need not be flushed. {F10263} The SQLITE_SYNC_NORMAL means 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   452
** to use normal fsync() semantics. {F10264} The SQLITE_SYNC_FULL flag means 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   453
** to use Mac OS-X style fullsync instead of fsync().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   454
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   455
#define SQLITE_SYNC_NORMAL        0x00002
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   456
#define SQLITE_SYNC_FULL          0x00003
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   457
#define SQLITE_SYNC_DATAONLY      0x00010
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   458
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   459
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   460
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   461
** CAPI3REF: OS Interface Open File Handle {F11110}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   462
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   463
** An [sqlite3_file] object represents an open file in the OS
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   464
** interface layer.  Individual OS interface implementations will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   465
** want to subclass this object by appending additional fields
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   466
** for their own use.  The pMethods entry is a pointer to an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   467
** [sqlite3_io_methods] object that defines methods for performing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   468
** I/O operations on the open file.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   469
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   470
typedef struct sqlite3_file sqlite3_file;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   471
struct sqlite3_file {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   472
	int isOpen;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   473
  //const struct sqlite3_io_methods *pMethods;  /* Methods for an open file */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   474
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   475
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   476
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   477
** CAPI3REF: OS Interface File Virtual Methods Object {F11120}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   478
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   479
** Every file opened by the [sqlite3_vfs] xOpen method contains a pointer to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   480
** an instance of the this object.  This object defines the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   481
** methods used to perform various operations against the open file.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   482
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   483
** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   484
** [SQLITE_SYNC_FULL].  The first choice is the normal fsync().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   485
*  The second choice is an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   486
** OS-X style fullsync.  The SQLITE_SYNC_DATA flag may be ORed in to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   487
** indicate that only the data of the file and not its inode needs to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   488
** synced.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   489
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   490
** The integer values to xLock() and xUnlock() are one of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   491
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   492
** <li> [SQLITE_LOCK_NONE],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   493
** <li> [SQLITE_LOCK_SHARED],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   494
** <li> [SQLITE_LOCK_RESERVED],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   495
** <li> [SQLITE_LOCK_PENDING], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   496
** <li> [SQLITE_LOCK_EXCLUSIVE].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   497
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   498
** xLock() increases the lock. xUnlock() decreases the lock.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   499
** The xCheckReservedLock() method looks
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   500
** to see if any database connection, either in this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   501
** process or in some other process, is holding an RESERVED,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   502
** PENDING, or EXCLUSIVE lock on the file.  It returns true
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   503
** if such a lock exists and false if not.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   504
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   505
** The xFileControl() method is a generic interface that allows custom
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   506
** VFS implementations to directly control an open file using the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   507
** [sqlite3_file_control()] interface.  The second "op" argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   508
** is an integer opcode.   The third
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   509
** argument is a generic pointer which is intended to be a pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   510
** to a structure that may contain arguments or space in which to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   511
** write return values.  Potential uses for xFileControl() might be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   512
** functions to enable blocking locks with timeouts, to change the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   513
** locking strategy (for example to use dot-file locks), to inquire
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   514
** about the status of a lock, or to break stale locks.  The SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   515
** core reserves opcodes less than 100 for its own use. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   516
** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   517
** Applications that define a custom xFileControl method should use opcodes 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   518
** greater than 100 to avoid conflicts.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   519
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   520
** The xSectorSize() method returns the sector size of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   521
** device that underlies the file.  The sector size is the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   522
** minimum write that can be performed without disturbing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   523
** other bytes in the file.  The xDeviceCharacteristics()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   524
** method returns a bit vector describing behaviors of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   525
** underlying device:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   526
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   527
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   528
** <li> [SQLITE_IOCAP_ATOMIC]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   529
** <li> [SQLITE_IOCAP_ATOMIC512]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   530
** <li> [SQLITE_IOCAP_ATOMIC1K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   531
** <li> [SQLITE_IOCAP_ATOMIC2K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   532
** <li> [SQLITE_IOCAP_ATOMIC4K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   533
** <li> [SQLITE_IOCAP_ATOMIC8K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   534
** <li> [SQLITE_IOCAP_ATOMIC16K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   535
** <li> [SQLITE_IOCAP_ATOMIC32K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   536
** <li> [SQLITE_IOCAP_ATOMIC64K]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   537
** <li> [SQLITE_IOCAP_SAFE_APPEND]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   538
** <li> [SQLITE_IOCAP_SEQUENTIAL]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   539
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   540
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   541
** The SQLITE_IOCAP_ATOMIC property means that all writes of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   542
** any size are atomic.  The SQLITE_IOCAP_ATOMICnnn values
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   543
** mean that writes of blocks that are nnn bytes in size and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   544
** are aligned to an address which is an integer multiple of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   545
** nnn are atomic.  The SQLITE_IOCAP_SAFE_APPEND value means
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   546
** that when data is appended to a file, the data is appended
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   547
** first then the size of the file is extended, never the other
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   548
** way around.  The SQLITE_IOCAP_SEQUENTIAL property means that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   549
** information is written to disk in the same order as calls
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   550
** to xWrite().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   551
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   552
/*typedef struct sqlite3_io_methods sqlite3_io_methods;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   553
struct sqlite3_io_methods {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   554
  int iVersion;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   555
  int (*xClose)(sqlite3_file*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   556
  int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   557
  int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   558
  int (*xTruncate)(sqlite3_file*, sqlite3_int64 size);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   559
  int (*xSync)(sqlite3_file*, int flags);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   560
  int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   561
  int (*xLock)(sqlite3_file*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   562
  int (*xUnlock)(sqlite3_file*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   563
  int (*xCheckReservedLock)(sqlite3_file*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   564
  int (*xFileControl)(sqlite3_file*, int op, void *pArg);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   565
  int (*xSectorSize)(sqlite3_file*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   566
  int (*xDeviceCharacteristics)(sqlite3_file*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   567
};*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   568
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   569
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   570
** CAPI3REF: Standard File Control Opcodes {F11310}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   571
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   572
** These integer constants are opcodes for the xFileControl method
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   573
** of the [sqlite3_io_methods] object and to the [sqlite3_file_control()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   574
** interface.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   575
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   576
** {F11311} The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging.  This
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   577
** opcode cases the xFileControl method to write the current state of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   578
** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   579
** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   580
** into an integer that the pArg argument points to. {F11312} This capability
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   581
** is used during testing and only needs to be supported when SQLITE_TEST
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   582
** is defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   583
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   584
#define SQLITE_FCNTL_LOCKSTATE        1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   585
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   586
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   587
** CAPI3REF: Mutex Handle {F17110}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   588
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   589
** The mutex module within SQLite defines [sqlite3_mutex] to be an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   590
** abstract type for a mutex object.  {F17111} The SQLite core never looks
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   591
** at the internal representation of an [sqlite3_mutex]. {END} It only
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   592
** deals with pointers to the [sqlite3_mutex] object.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   593
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   594
** Mutexes are created using [sqlite3_mutex_alloc()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   595
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   596
typedef struct sqlite3_mutex sqlite3_mutex;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   597
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   598
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   599
** CAPI3REF: OS Interface Object {F11140}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   600
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   601
** An instance of this object defines the interface between the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   602
** SQLite core and the underlying operating system.  The "vfs"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   603
** in the name of the object stands for "virtual file system".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   604
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   605
** The iVersion field is initially 1 but may be larger for future
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   606
** versions of SQLite.  Additional fields may be appended to this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   607
** object when the iVersion value is increased.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   608
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   609
** The szOsFile field is the size of the subclassed [sqlite3_file]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   610
** structure used by this VFS.  mxPathname is the maximum length of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   611
** a pathname in this VFS.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   612
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   613
** Registered vfs modules are kept on a linked list formed by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   614
** the pNext pointer.  The [sqlite3_vfs_register()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   615
** and [sqlite3_vfs_unregister()] interfaces manage this list
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   616
** in a thread-safe way.  The [sqlite3_vfs_find()] interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   617
** searches the list.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   618
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   619
** The pNext field is the only fields in the sqlite3_vfs 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   620
** structure that SQLite will ever modify.  SQLite will only access
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   621
** or modify this field while holding a particular static mutex.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   622
** The application should never modify anything within the sqlite3_vfs
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   623
** object once the object has been registered.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   624
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   625
** The zName field holds the name of the VFS module.  The name must
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   626
** be unique across all VFS modules.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   627
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   628
** {F11141} SQLite will guarantee that the zFilename string passed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   629
** xOpen() is a full pathname as generated by xFullPathname() and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   630
** that the string will be valid and unchanged until xClose() is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   631
** called.  {END} So the [sqlite3_file] can store a pointer to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   632
** filename if it needs to remember the filename for some reason.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   633
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   634
** {F11142} The flags argument to xOpen() includes all bits set in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   635
** the flags argument to [sqlite3_open_v2()].  Or if [sqlite3_open()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   636
** or [sqlite3_open16()] is used, then flags includes at least
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   637
** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   638
** If xOpen() opens a file read-only then it sets *pOutFlags to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   639
** include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   640
** set.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   641
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   642
** {F11143} SQLite will also add one of the following flags to the xOpen()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   643
** call, depending on the object being opened:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   644
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   645
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   646
** <li>  [SQLITE_OPEN_MAIN_DB]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   647
** <li>  [SQLITE_OPEN_MAIN_JOURNAL]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   648
** <li>  [SQLITE_OPEN_TEMP_DB]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   649
** <li>  [SQLITE_OPEN_TEMP_JOURNAL]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   650
** <li>  [SQLITE_OPEN_TRANSIENT_DB]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   651
** <li>  [SQLITE_OPEN_SUBJOURNAL]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   652
** <li>  [SQLITE_OPEN_MASTER_JOURNAL]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   653
** </ul> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   654
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   655
** The file I/O implementation can use the object type flags to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   656
** changes the way it deals with files.  For example, an application
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   657
** that does not care about crash recovery or rollback, might make
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   658
** the open of a journal file a no-op.  Writes to this journal are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   659
** also a no-op.  Any attempt to read the journal return SQLITE_IOERR.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   660
** Or the implementation might recognize the a database file will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   661
** be doing page-aligned sector reads and writes in a random order
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   662
** and set up its I/O subsystem accordingly.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   663
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   664
** {F11144} SQLite might also add one of the following flags to the xOpen
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   665
** method:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   666
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   667
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   668
** <li> [SQLITE_OPEN_DELETEONCLOSE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   669
** <li> [SQLITE_OPEN_EXCLUSIVE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   670
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   671
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   672
** {F11145} The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   673
** deleted when it is closed.  {F11146} The [SQLITE_OPEN_DELETEONCLOSE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   674
** will be set for TEMP  databases, journals and for subjournals. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   675
** {F11147} The [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   676
** for exclusive access.  This flag is set for all files except
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   677
** for the main database file. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   678
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   679
** {F11148} At least szOsFile bytes of memory is allocated by SQLite 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   680
** to hold the  [sqlite3_file] structure passed as the third 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   681
** argument to xOpen.  {END}  The xOpen method does not have to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   682
** allocate the structure; it should just fill it in.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   683
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   684
** {F11149} The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS] 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   685
** to test for the existance of a file,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   686
** or [SQLITE_ACCESS_READWRITE] to test to see
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   687
** if a file is readable and writable, or [SQLITE_ACCESS_READ]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   688
** to test to see if a file is at least readable.  {END} The file can be a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   689
** directory.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   690
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   691
** {F11150} SQLite will always allocate at least mxPathname+1 byte for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   692
** the output buffers for xGetTempname and xFullPathname. {F11151} The exact
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   693
** size of the output buffer is also passed as a parameter to both 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   694
** methods. {END} If the output buffer is not large enough, SQLITE_CANTOPEN
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   695
** should be returned. As this is handled as a fatal error by SQLite,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   696
** vfs implementations should endeavor to prevent this by setting 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   697
** mxPathname to a sufficiently large value.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   698
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   699
** The xRandomness(), xSleep(), and xCurrentTime() interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   700
** are not strictly a part of the filesystem, but they are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   701
** included in the VFS structure for completeness.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   702
** The xRandomness() function attempts to return nBytes bytes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   703
** of good-quality randomness into zOut.  The return value is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   704
** the actual number of bytes of randomness obtained.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   705
** xSleep() method cause the calling thread to sleep for at
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   706
** least the number of microseconds given.  The xCurrentTime()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   707
** method returns a Julian Day Number for the current date and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   708
** time.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   709
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   710
typedef struct sqlite3_vfs sqlite3_vfs;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   711
struct sqlite3_vfs {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   712
  int iVersion;            /* Structure version number */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   713
  int szOsFile;            /* Size of subclassed sqlite3_file */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   714
  int mxPathname;          /* Maximum file pathname length */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   715
  sqlite3_vfs *pNext;      /* Next registered VFS */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   716
  const char *zName;       /* Name of this virtual file system */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   717
  void *pAppData;          /* Pointer to application-specific data */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   718
/*  int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   719
               int flags, int *pOutFlags);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   720
  int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   721
  int (*xAccess)(sqlite3_vfs*, const char *zName, int flags);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   722
  int (*xGetTempname)(sqlite3_vfs*, int nOut, char *zOut);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   723
  int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   724
  void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   725
  void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   726
  void *(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   727
  void (*xDlClose)(sqlite3_vfs*, void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   728
  int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   729
  int (*xSleep)(sqlite3_vfs*, int microseconds);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   730
  int (*xCurrentTime)(sqlite3_vfs*, double*);*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   731
  /* New fields may be appended in figure versions.  The iVersion
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   732
  ** value will increment whenever this happens. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   733
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   734
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   735
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   736
** CAPI3REF: Flags for the xAccess VFS method {F11190}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   737
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   738
** {F11191} These integer constants can be used as the third parameter to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   739
** the xAccess method of an [sqlite3_vfs] object. {END}  They determine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   740
** the kind of what kind of permissions the xAccess method is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   741
** looking for.  {F11192} With SQLITE_ACCESS_EXISTS, the xAccess method
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   742
** simply checks to see if the file exists. {F11193} With
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   743
** SQLITE_ACCESS_READWRITE, the xAccess method checks to see
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   744
** if the file is both readable and writable.  {F11194} With
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   745
** SQLITE_ACCESS_READ the xAccess method
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   746
** checks to see if the file is readable.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   747
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   748
#define SQLITE_ACCESS_EXISTS    0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   749
#define SQLITE_ACCESS_READWRITE 1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   750
#define SQLITE_ACCESS_READ      2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   751
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   752
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   753
** CAPI3REF: Enable Or Disable Extended Result Codes {F12200}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   754
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   755
** {F12201} The sqlite3_extended_result_codes() routine enables or disables the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   756
** [SQLITE_IOERR_READ | extended result codes] feature on a database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   757
** connection if its 2nd parameter is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   758
** non-zero or zero, respectively. {F12202}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   759
** By default, SQLite API routines return one of only 26 integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   760
** [SQLITE_OK | result codes].  {F12203} When extended result codes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   761
** are enabled by this routine, the repetoire of result codes can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   762
** much larger and can (hopefully) provide more detailed information
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   763
** about the cause of an error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   764
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   765
** {F12204} The second argument is a boolean value that turns extended result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   766
** codes on and off. {F12205} Extended result codes are off by default for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   767
** backwards compatibility with older versions of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   768
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   769
/*IMPORT_C*/ int sqlite3_extended_result_codes(sqlite3*, int onoff);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   770
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   771
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   772
** CAPI3REF: Last Insert Rowid {F12220}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   773
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   774
** {F12221} Each entry in an SQLite table has a unique 64-bit signed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   775
** integer key called the "rowid".  {F12222} The rowid is always available
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   776
** as an undeclared column named ROWID, OID, or _ROWID_ as long as those
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   777
** names are not also used by explicitly declared columns. {F12223} If
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   778
** the table has a column of type INTEGER PRIMARY KEY then that column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   779
** is another an alias for the rowid.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   780
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   781
** {F12224} This routine returns the rowid of the most recent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   782
** successful INSERT into the database from the database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   783
** shown in the first argument.  {F12225} If no successful inserts
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   784
** have ever occurred on this database connection, zero is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   785
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   786
** {F12226} If an INSERT occurs within a trigger, then the rowid of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   787
** inserted row is returned by this routine as long as the trigger
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   788
** is running.  {F12227} But once the trigger terminates, the value returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   789
** by this routine reverts to the last value inserted before the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   790
** trigger fired.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   791
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   792
** {F12228} An INSERT that fails due to a constraint violation is not a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   793
** successful insert and does not change the value returned by this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   794
** routine.  {F12229} Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   795
** and INSERT OR ABORT make no changes to the return value of this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   796
** routine when their insertion fails.  {F12231} When INSERT OR REPLACE 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   797
** encounters a constraint violation, it does not fail.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   798
** INSERT continues to completion after deleting rows that caused
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   799
** the constraint problem so INSERT OR REPLACE will always change
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   800
** the return value of this interface. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   801
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   802
** {UF12232} If another thread does a new insert on the same database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   803
** while this routine is running and thus changes the last insert rowid,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   804
** then the return value of this routine is undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   805
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   806
/*IMPORT_C*/ sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   807
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   808
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   809
** CAPI3REF: Count The Number Of Rows Modified {F12240}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   810
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   811
** {F12241} This function returns the number of database rows that were changed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   812
** or inserted or deleted by the most recently completed SQL statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   813
** on the connection specified by the first parameter. {F12242} Only
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   814
** changes that are directly specified by the INSERT, UPDATE, or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   815
** DELETE statement are counted.  Auxiliary changes caused by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   816
** triggers are not counted. {F12243} Use the [sqlite3_total_changes()] function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   817
** to find the total number of changes including changes caused by triggers.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   818
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   819
** {F12244} Within the body of a trigger, the sqlite3_changes() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   820
** can be called to find the number of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   821
** changes in the most recently completed INSERT, UPDATE, or DELETE
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   822
** statement within the body of the same trigger.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   823
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   824
** {F12245} All changes are counted, even if they are later undone by a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   825
** ROLLBACK or ABORT.  {F12246} Except, changes associated with creating and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   826
** dropping tables are not counted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   827
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   828
** {F12247} If a callback invokes [sqlite3_exec()] or [sqlite3_step()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   829
** recursively, then the changes in the inner, recursive call are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   830
** counted together with the changes in the outer call.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   831
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   832
** {F12248} SQLite implements the command "DELETE FROM table" without
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   833
** a WHERE clause by dropping and recreating the table.  (This is much
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   834
** faster than going through and deleting individual elements from the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   835
** table.)  Because of this optimization, the change count for 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   836
** "DELETE FROM table" will be zero regardless of the number of elements
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   837
** that were originally in the table. {F12251} To get an accurate count
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   838
** of the number of rows deleted, use
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   839
** "DELETE FROM table WHERE 1" instead.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   840
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   841
** {UF12252} If another thread makes changes on the same database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   842
** while this routine is running then the return value of this routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   843
** is undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   844
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   845
/*IMPORT_C*/ int sqlite3_changes(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   846
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   847
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   848
** CAPI3REF: Total Number Of Rows Modified {F12260}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   849
***
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   850
** {F12261} This function returns the number of database rows that have been
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   851
** modified by INSERT, UPDATE or DELETE statements since the database handle
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   852
** was opened. {F12262} The count includes UPDATE, INSERT and DELETE 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   853
** statements executed as part of trigger programs.  {F12263} All changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   854
** are counted as soon as the statement that makes them is completed 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   855
** (when the statement handle is passed to [sqlite3_reset()] or 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   856
** [sqlite3_finalize()]). {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   857
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   858
** See also the [sqlite3_change()] interface.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   859
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   860
** {F12265} SQLite implements the command "DELETE FROM table" without
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   861
** a WHERE clause by dropping and recreating the table.  (This is much
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   862
** faster than going
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   863
** through and deleting individual elements form the table.)  Because of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   864
** this optimization, the change count for "DELETE FROM table" will be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   865
** zero regardless of the number of elements that were originally in the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   866
** table. To get an accurate count of the number of rows deleted, use
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   867
** "DELETE FROM table WHERE 1" instead.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   868
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   869
** {U12264} If another thread makes changes on the same database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   870
** while this routine is running then the return value of this routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   871
** is undefined. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   872
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   873
/*IMPORT_C*/ int sqlite3_total_changes(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   874
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   875
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   876
** CAPI3REF: Interrupt A Long-Running Query {F12270}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   877
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   878
** {F12271} This function causes any pending database operation to abort and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   879
** return at its earliest opportunity. {END} This routine is typically
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   880
** called in response to a user action such as pressing "Cancel"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   881
** or Ctrl-C where the user wants a long query operation to halt
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   882
** immediately.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   883
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   884
** {F12272} It is safe to call this routine from a thread different from the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   885
** thread that is currently running the database operation. {U12273} But it
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   886
** is not safe to call this routine with a database connection that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   887
** is closed or might close before sqlite3_interrupt() returns.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   888
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   889
** If an SQL is very nearly finished at the time when sqlite3_interrupt()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   890
** is called, then it might not have an opportunity to be interrupted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   891
** It might continue to completion.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   892
** {F12274} The SQL operation that is interrupted will return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   893
** [SQLITE_INTERRUPT].  {F12275} If the interrupted SQL operation is an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   894
** INSERT, UPDATE, or DELETE that is inside an explicit transaction, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   895
** then the entire transaction will be rolled back automatically.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   896
** {F12276} A call to sqlite3_interrupt() has no effect on SQL statements
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   897
** that are started after sqlite3_interrupt() returns.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   898
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   899
/*IMPORT_C*/ void sqlite3_interrupt(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   900
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   901
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   902
** CAPI3REF: Determine If An SQL Statement Is Complete {F10510}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   903
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   904
** These routines are useful for command-line input to determine if the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   905
** currently entered text seems to form complete a SQL statement or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   906
** if additional input is needed before sending the text into
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   907
** SQLite for parsing.  These routines return true if the input string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   908
** appears to be a complete SQL statement.  A statement is judged to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   909
** complete if it ends with a semicolon and is not a fragment of a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   910
** CREATE TRIGGER statement.  These routines do not parse the SQL and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   911
** so will not detect syntactically incorrect SQL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   912
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   913
** {F10511} These functions return true if the given input string 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   914
** ends with a semicolon optionally followed by whitespace or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   915
** comments. {F10512} For sqlite3_complete(),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   916
** the parameter must be a zero-terminated UTF-8 string. {F10513} For
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   917
** sqlite3_complete16(), a zero-terminated machine byte order UTF-16 string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   918
** is required.  {F10514} These routines return false if the terminal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   919
** semicolon is within a comment, a string literal or a quoted identifier
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   920
** (in other words if the final semicolon is not really a separate token
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   921
** but part of a larger token) or if the final semicolon is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   922
** in between the BEGIN and END keywords of a CREATE TRIGGER statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   923
** {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   924
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   925
/*IMPORT_C*/ int sqlite3_complete(const char *sql);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   926
/*IMPORT_C*/ int sqlite3_complete16(const void *sql);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   927
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   928
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   929
** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors {F12310}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   930
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   931
** {F12311} This routine identifies a callback function that might be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   932
** invoked whenever an attempt is made to open a database table 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   933
** that another thread or process has locked.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   934
** {F12312} If the busy callback is NULL, then [SQLITE_BUSY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   935
** or [SQLITE_IOERR_BLOCKED]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   936
** is returned immediately upon encountering the lock.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   937
** {F12313} If the busy callback is not NULL, then the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   938
** callback will be invoked with two arguments.  {F12314} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   939
** first argument to the handler is a copy of the void* pointer which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   940
** is the third argument to this routine.  {F12315} The second argument to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   941
** the handler is the number of times that the busy handler has
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   942
** been invoked for this locking event.  {F12316} If the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   943
** busy callback returns 0, then no additional attempts are made to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   944
** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   945
** {F12317} If the callback returns non-zero, then another attempt
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   946
** is made to open the database for reading and the cycle repeats.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   947
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   948
** The presence of a busy handler does not guarantee that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   949
** it will be invoked when there is lock contention. {F12319}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   950
** If SQLite determines that invoking the busy handler could result in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   951
** a deadlock, it will go ahead and return [SQLITE_BUSY] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   952
** [SQLITE_IOERR_BLOCKED] instead of invoking the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   953
** busy handler. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   954
** Consider a scenario where one process is holding a read lock that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   955
** it is trying to promote to a reserved lock and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   956
** a second process is holding a reserved lock that it is trying
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   957
** to promote to an exclusive lock.  The first process cannot proceed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   958
** because it is blocked by the second and the second process cannot
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   959
** proceed because it is blocked by the first.  If both processes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   960
** invoke the busy handlers, neither will make any progress.  Therefore,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   961
** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   962
** will induce the first process to release its read lock and allow
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   963
** the second process to proceed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   964
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   965
** {F12321} The default busy callback is NULL. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   966
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   967
** {F12322} The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   968
** when SQLite is in the middle of a large transaction where all the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   969
** changes will not fit into the in-memory cache.  {F12323} SQLite will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   970
** already hold a RESERVED lock on the database file, but it needs
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   971
** to promote this lock to EXCLUSIVE so that it can spill cache
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   972
** pages into the database file without harm to concurrent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   973
** readers.  {F12324} If it is unable to promote the lock, then the in-memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   974
** cache will be left in an inconsistent state and so the error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   975
** code is promoted from the relatively benign [SQLITE_BUSY] to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   976
** the more severe [SQLITE_IOERR_BLOCKED].  {F12325} This error code promotion
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   977
** forces an automatic rollback of the changes. {END} See the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   978
** <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   979
** CorruptionFollowingBusyError</a> wiki page for a discussion of why
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   980
** this is important.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   981
**	
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   982
** {F12326} Sqlite is re-entrant, so the busy handler may start a new
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   983
** query. {END} (It is not clear why anyone would every want to do this,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   984
** but it is allowed, in theory.) {U12327} But the busy handler may not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   985
** close the database.  Closing the database from a busy handler will delete 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   986
** data structures out from under the executing query and will 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   987
** probably result in a segmentation fault or other runtime error. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   988
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   989
** {F12328} There can only be a single busy handler defined for each database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   990
** connection.  Setting a new busy handler clears any previous one. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   991
** {F12329} Note that calling [sqlite3_busy_timeout()] will also set or clear
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   992
** the busy handler.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   993
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   994
** {F12331} When operating in [sqlite3_enable_shared_cache | shared cache mode],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   995
** only a single busy handler can be defined for each database file.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   996
** So if two database connections share a single cache, then changing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   997
** the busy handler on one connection will also change the busy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   998
** handler in the other connection.  {F12332} The busy handler is invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
   999
** in the thread that was running when the lock contention occurs.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1000
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1001
/*IMPORT_C*/ int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1002
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1003
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1004
** CAPI3REF: Set A Busy Timeout {F12340}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1005
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1006
** {F12341} This routine sets a [sqlite3_busy_handler | busy handler]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1007
** that sleeps for a while when a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1008
** table is locked.  {F12342} The handler will sleep multiple times until 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1009
** at least "ms" milliseconds of sleeping have been done. {F12343} After
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1010
** "ms" milliseconds of sleeping, the handler returns 0 which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1011
** causes [sqlite3_step()] to return [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1012
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1013
** {F12344} Calling this routine with an argument less than or equal to zero
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1014
** turns off all busy handlers.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1015
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1016
** {F12345} There can only be a single busy handler for a particular database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1017
** connection.  If another busy handler was defined  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1018
** (using [sqlite3_busy_handler()]) prior to calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1019
** this routine, that other busy handler is cleared.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1020
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1021
/*IMPORT_C*/ int sqlite3_busy_timeout(sqlite3*, int ms);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1022
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1023
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1024
** CAPI3REF: Convenience Routines For Running Queries {F12370}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1025
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1026
** This next routine is a convenience wrapper around [sqlite3_exec()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1027
** {F12371} Instead of invoking a user-supplied callback for each row of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1028
** result, this routine remembers each row of the result in memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1029
** obtained from [sqlite3_malloc()], then returns all of the result after the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1030
** query has finished. {F12372}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1031
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1032
** As an example, suppose the query result where this table:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1033
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1034
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1035
**        Name        | Age
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1036
**        -----------------------
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1037
**        Alice       | 43
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1038
**        Bob         | 28
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1039
**        Cindy       | 21
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1040
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1041
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1042
** If the 3rd argument were &azResult then after the function returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1043
** azResult will contain the following data:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1044
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1045
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1046
**        azResult&#91;0] = "Name";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1047
**        azResult&#91;1] = "Age";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1048
**        azResult&#91;2] = "Alice";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1049
**        azResult&#91;3] = "43";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1050
**        azResult&#91;4] = "Bob";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1051
**        azResult&#91;5] = "28";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1052
**        azResult&#91;6] = "Cindy";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1053
**        azResult&#91;7] = "21";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1054
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1055
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1056
** Notice that there is an extra row of data containing the column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1057
** headers.  But the *nrow return value is still 3.  *ncolumn is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1058
** set to 2.  In general, the number of values inserted into azResult
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1059
** will be ((*nrow) + 1)*(*ncolumn).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1060
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1061
** {U12374} After the calling function has finished using the result, it should 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1062
** pass the result data pointer to sqlite3_free_table() in order to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1063
** release the memory that was malloc-ed.  Because of the way the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1064
** [sqlite3_malloc()] happens, the calling function must not try to call 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1065
** [sqlite3_free()] directly.  Only [sqlite3_free_table()] is able to release 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1066
** the memory properly and safely. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1067
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1068
** {F12373} The return value of this routine is the same as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1069
** from [sqlite3_exec()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1070
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1071
/*IMPORT_C*/ int sqlite3_get_table(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1072
  sqlite3*,              /* An open database */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1073
  const char *sql,       /* SQL to be executed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1074
  char ***resultp,       /* Result written to a char *[]  that this points to */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1075
  int *nrow,             /* Number of result rows written here */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1076
  int *ncolumn,          /* Number of result columns written here */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1077
  char **errmsg          /* Error msg written here */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1078
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1079
/*IMPORT_C*/ void sqlite3_free_table(char **result);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1080
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1081
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1082
** CAPI3REF: Formatted String Printing Functions {F17400}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1083
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1084
** These routines are workalikes of the "printf()" family of functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1085
** from the standard C library.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1086
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1087
** {F17401} The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1088
** results into memory obtained from [sqlite3_malloc()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1089
** {U17402} The strings returned by these two routines should be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1090
** released by [sqlite3_free()]. {F17403}  Both routines return a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1091
** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1092
** memory to hold the resulting string.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1093
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1094
** {F17404} In sqlite3_snprintf() routine is similar to "snprintf()" from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1095
** the standard C library.  The result is written into the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1096
** buffer supplied as the second parameter whose size is given by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1097
** the first parameter. {END} Note that the order of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1098
** first two parameters is reversed from snprintf().  This is an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1099
** historical accident that cannot be fixed without breaking
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1100
** backwards compatibility.  {F17405} Note also that sqlite3_snprintf()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1101
** returns a pointer to its buffer instead of the number of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1102
** characters actually written into the buffer. {END} We admit that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1103
** the number of characters written would be a more useful return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1104
** value but we cannot change the implementation of sqlite3_snprintf()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1105
** now without breaking compatibility.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1106
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1107
** {F17406} As long as the buffer size is greater than zero, sqlite3_snprintf()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1108
** guarantees that the buffer is always zero-terminated. {F17407} The first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1109
** parameter "n" is the total size of the buffer, including space for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1110
** the zero terminator.  {END} So the longest string that can be completely
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1111
** written will be n-1 characters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1112
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1113
** These routines all implement some additional formatting
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1114
** options that are useful for constructing SQL statements.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1115
** All of the usual printf formatting options apply.  In addition, there
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1116
** is are "%q", "%Q", and "%z" options.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1117
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1118
** {F17410} The %q option works like %s in that it substitutes a null-terminated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1119
** string from the argument list.  But %q also doubles every '\'' character.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1120
** %q is designed for use inside a string literal. {END} By doubling each '\''
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1121
** character it escapes that character and allows it to be inserted into
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1122
** the string.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1123
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1124
** For example, so some string variable contains text as follows:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1125
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1126
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1127
**  char *zText = "It's a happy day!";
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1128
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1129
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1130
** One can use this text in an SQL statement as follows:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1131
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1132
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1133
**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1134
**  sqlite3_exec(db, zSQL, 0, 0, 0);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1135
**  sqlite3_free(zSQL);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1136
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1137
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1138
** Because the %q format string is used, the '\'' character in zText
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1139
** is escaped and the SQL generated is as follows:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1140
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1141
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1142
**  INSERT INTO table1 VALUES('It''s a happy day!')
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1143
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1144
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1145
** This is correct.  Had we used %s instead of %q, the generated SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1146
** would have looked like this:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1147
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1148
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1149
**  INSERT INTO table1 VALUES('It's a happy day!');
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1150
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1151
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1152
** This second example is an SQL syntax error.  As a general rule you
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1153
** should always use %q instead of %s when inserting text into a string 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1154
** literal.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1155
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1156
** {F17411} The %Q option works like %q except it also adds single quotes around
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1157
** the outside of the total string.  Or if the parameter in the argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1158
** list is a NULL pointer, %Q substitutes the text "NULL" (without single
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1159
** quotes) in place of the %Q option. {END}  So, for example, one could say:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1160
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1161
** <blockquote><pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1162
**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1163
**  sqlite3_exec(db, zSQL, 0, 0, 0);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1164
**  sqlite3_free(zSQL);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1165
** </pre></blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1166
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1167
** The code above will render a correct SQL statement in the zSQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1168
** variable even if the zText variable is a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1169
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1170
** {F17412} The "%z" formatting option works exactly like "%s" with the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1171
** addition that after the string has been read and copied into
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1172
** the result, [sqlite3_free()] is called on the input string. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1173
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1174
/*IMPORT_C*/ char *sqlite3_mprintf(const char*,...);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1175
/*IMPORT_C*/ char *sqlite3_vmprintf(const char*, va_list);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1176
/*IMPORT_C*/ char *sqlite3_snprintf(int,char*,const char*, ...);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1177
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1178
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1179
** CAPI3REF: Memory Allocation Subsystem {F17300}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1180
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1181
** {F17301} The SQLite core  uses these three routines for all of its own
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1182
** internal memory allocation needs. {END}  "Core" in the previous sentence
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1183
** does not include operating-system specific VFS implementation.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1184
** windows VFS uses native malloc and free for some operations.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1185
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1186
** {F17302} The sqlite3_malloc() routine returns a pointer to a block
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1187
** of memory at least N bytes in length, where N is the parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1188
** {F17303} If sqlite3_malloc() is unable to obtain sufficient free
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1189
** memory, it returns a NULL pointer.  {F17304} If the parameter N to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1190
** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1191
** a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1192
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1193
** {F17305} Calling sqlite3_free() with a pointer previously returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1194
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1195
** that it might be reused.  {F17306} The sqlite3_free() routine is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1196
** a no-op if is called with a NULL pointer.  Passing a NULL pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1197
** to sqlite3_free() is harmless.  {U17307} After being freed, memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1198
** should neither be read nor written.  Even reading previously freed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1199
** memory might result in a segmentation fault or other severe error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1200
** {U17309} Memory corruption, a segmentation fault, or other severe error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1201
** might result if sqlite3_free() is called with a non-NULL pointer that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1202
** was not obtained from sqlite3_malloc() or sqlite3_free().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1203
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1204
** {F17310} The sqlite3_realloc() interface attempts to resize a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1205
** prior memory allocation to be at least N bytes, where N is the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1206
** second parameter.  The memory allocation to be resized is the first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1207
** parameter.  {F17311} If the first parameter to sqlite3_realloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1208
** is a NULL pointer then its behavior is identical to calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1209
** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1210
** {F17312} If the second parameter to sqlite3_realloc() is zero or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1211
** negative then the behavior is exactly the same as calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1212
** sqlite3_free(P) where P is the first parameter to sqlite3_realloc().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1213
** {F17313} Sqlite3_realloc() returns a pointer to a memory allocation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1214
** of at least N bytes in size or NULL if sufficient memory is unavailable.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1215
** {F17314} If M is the size of the prior allocation, then min(N,M) bytes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1216
** of the prior allocation are copied into the beginning of buffer returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1217
** by sqlite3_realloc() and the prior allocation is freed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1218
** {F17315} If sqlite3_realloc() returns NULL, then the prior allocation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1219
** is not freed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1220
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1221
** {F17316} The memory returned by sqlite3_malloc() and sqlite3_realloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1222
** is always aligned to at least an 8 byte boundary. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1223
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1224
** {F17381} The default implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1225
** of the memory allocation subsystem uses the malloc(), realloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1226
** and free() provided by the standard C library. {F17382} However, if 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1227
** SQLite is compiled with the following C preprocessor macro
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1228
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1229
** <blockquote> SQLITE_MEMORY_SIZE=<i>NNN</i> </blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1230
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1231
** where <i>NNN</i> is an integer, then SQLite create a static
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1232
** array of at least <i>NNN</i> bytes in size and use that array
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1233
** for all of its dynamic memory allocation needs. {END}  Additional
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1234
** memory allocator options may be added in future releases.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1235
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1236
** In SQLite version 3.5.0 and 3.5.1, it was possible to define
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1237
** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1238
** implementation of these routines to be omitted.  That capability
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1239
** is no longer provided.  Only built-in memory allocators can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1240
** used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1241
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1242
** The windows OS interface layer calls
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1243
** the system malloc() and free() directly when converting
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1244
** filenames between the UTF-8 encoding used by SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1245
** and whatever filename encoding is used by the particular windows
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1246
** installation.  Memory allocation errors are detected, but
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1247
** they are reported back as [SQLITE_CANTOPEN] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1248
** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1249
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1250
/*IMPORT_C*/ void *sqlite3_malloc(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1251
/*IMPORT_C*/ void *sqlite3_realloc(void*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1252
/*IMPORT_C*/ void sqlite3_free(void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1253
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1254
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1255
** CAPI3REF: Memory Allocator Statistics {F17370}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1256
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1257
** In addition to the basic three allocation routines 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1258
** [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1259
** the memory allocation subsystem included with the SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1260
** sources provides the interfaces shown here.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1261
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1262
** {F17371} The sqlite3_memory_used() routine returns the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1263
** number of bytes of memory currently outstanding (malloced but not freed).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1264
** {F17372} The value returned by sqlite3_memory_used() includes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1265
** any overhead added by SQLite, but not overhead added by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1266
** library malloc() that backs the sqlite3_malloc() implementation.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1267
** {F17373} The sqlite3_memory_highwater() routines returns the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1268
** maximum number of bytes that have been outstanding at any time
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1269
** since the highwater mark was last reset.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1270
** {F17374} The byte count returned by sqlite3_memory_highwater()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1271
** uses the same byte counting rules as sqlite3_memory_used(). {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1272
** In other words, overhead added internally by SQLite is counted,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1273
** but overhead from the underlying system malloc is not.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1274
** {F17375} If the parameter to sqlite3_memory_highwater() is true,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1275
** then the highwater mark is reset to the current value of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1276
** sqlite3_memory_used() and the prior highwater mark (before the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1277
** reset) is returned.  {F17376}  If the parameter to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1278
** sqlite3_memory_highwater() is zero, then the highwater mark is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1279
** unchanged.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1280
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1281
/*IMPORT_C*/ sqlite3_int64 sqlite3_memory_used(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1282
/*IMPORT_C*/ sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1283
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1284
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1285
** CAPI3REF: Compile-Time Authorization Callbacks {F12500}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1286
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1287
** {F12501} This routine registers a authorizer callback with a particular
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1288
** database connection, supplied in the first argument. {F12502}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1289
** The authorizer callback is invoked as SQL statements are being compiled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1290
** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1291
** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()].  {F12503} At various
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1292
** points during the compilation process, as logic is being created
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1293
** to perform various actions, the authorizer callback is invoked to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1294
** see if those actions are allowed.  The authorizer callback should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1295
** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1296
** specific action but allow the SQL statement to continue to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1297
** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1298
** rejected with an error.  {F12504} If the authorizer callback returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1299
** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1300
** then [sqlite3_prepare_v2()] or equivalent call that triggered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1301
** the authorizer shall
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1302
** fail with an SQLITE_ERROR error code and an appropriate error message. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1303
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1304
** When the callback returns [SQLITE_OK], that means the operation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1305
** requested is ok.  {F12505} When the callback returns [SQLITE_DENY], the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1306
** [sqlite3_prepare_v2()] or equivalent call that triggered the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1307
** authorizer shall fail
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1308
** with an SQLITE_ERROR error code and an error message explaining that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1309
** access is denied. {F12506} If the authorizer code (the 2nd parameter
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1310
** to the authorizer callback is anything other than [SQLITE_READ], then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1311
** a return of [SQLITE_IGNORE] has the same effect as [SQLITE_DENY]. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1312
** If the authorizer code is [SQLITE_READ] and the callback returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1313
** [SQLITE_IGNORE] then the prepared statement is constructed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1314
** insert a NULL value in place of the table column that would have
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1315
** been read if [SQLITE_OK] had been returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1316
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1317
** {F12510} The first parameter to the authorizer callback is a copy of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1318
** the third parameter to the sqlite3_set_authorizer() interface.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1319
** {F12511} The second parameter to the callback is an integer 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1320
** [SQLITE_COPY | action code] that specifies the particular action
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1321
** to be authorized. {END} The available action codes are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1322
** [SQLITE_COPY | documented separately].  {F12512} The third through sixth
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1323
** parameters to the callback are zero-terminated strings that contain 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1324
** additional details about the action to be authorized. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1325
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1326
** An authorizer is used when preparing SQL statements from an untrusted
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1327
** source, to ensure that the SQL statements do not try to access data
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1328
** that they are not allowed to see, or that they do not try to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1329
** execute malicious statements that damage the database.  For
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1330
** example, an application may allow a user to enter arbitrary
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1331
** SQL queries for evaluation by a database.  But the application does
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1332
** not want the user to be able to make arbitrary changes to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1333
** database.  An authorizer could then be put in place while the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1334
** user-entered SQL is being prepared that disallows everything
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1335
** except SELECT statements.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1336
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1337
** {F12520} Only a single authorizer can be in place on a database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1338
** at a time.  Each call to sqlite3_set_authorizer overrides the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1339
** previous call. {F12521}  A NULL authorizer means that no authorization
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1340
** callback is invoked.  {F12522} The default authorizer is NULL. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1341
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1342
** Note that the authorizer callback is invoked only during 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1343
** [sqlite3_prepare()] or its variants.  {F12523} Authorization is not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1344
** performed during statement evaluation in [sqlite3_step()]. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1345
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1346
/*IMPORT_C*/ int sqlite3_set_authorizer(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1347
  sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1348
  int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1349
  void *pUserData
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1350
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1351
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1352
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1353
** CAPI3REF: Authorizer Return Codes {F12590}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1354
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1355
** The [sqlite3_set_authorizer | authorizer callback function] must
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1356
** return either [SQLITE_OK] or one of these two constants in order
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1357
** to signal SQLite whether or not the action is permitted.  See the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1358
** [sqlite3_set_authorizer | authorizer documentation] for additional
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1359
** information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1360
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1361
#define SQLITE_DENY   1   /* Abort the SQL statement with an error */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1362
#define SQLITE_IGNORE 2   /* Don't allow access, but don't generate an error */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1363
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1364
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1365
** CAPI3REF: Authorizer Action Codes {F12550}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1366
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1367
** The [sqlite3_set_authorizer()] interface registers a callback function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1368
** that is invoked to authorizer certain SQL statement actions.  {F12551} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1369
** second parameter to the callback is an integer code that specifies
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1370
** what action is being authorized.  These are the integer action codes that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1371
** the authorizer callback may be passed. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1372
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1373
** These action code values signify what kind of operation is to be 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1374
** authorized.  {F12552} The 3rd and 4th parameters to the authorization
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1375
** callback function will be parameters or NULL depending on which of these
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1376
** codes is used as the second parameter. {F12553} The 5th parameter to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1377
** authorizer callback is the name of the database ("main", "temp", 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1378
** etc.) if applicable. {F12554} The 6th parameter to the authorizer callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1379
** is the name of the inner-most trigger or view that is responsible for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1380
** the access attempt or NULL if this access attempt is directly from 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1381
** top-level SQL code.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1382
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1383
/******************************************* 3rd ************ 4th ***********/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1384
#define SQLITE_CREATE_INDEX          1   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1385
#define SQLITE_CREATE_TABLE          2   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1386
#define SQLITE_CREATE_TEMP_INDEX     3   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1387
#define SQLITE_CREATE_TEMP_TABLE     4   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1388
#define SQLITE_CREATE_TEMP_TRIGGER   5   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1389
#define SQLITE_CREATE_TEMP_VIEW      6   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1390
#define SQLITE_CREATE_TRIGGER        7   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1391
#define SQLITE_CREATE_VIEW           8   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1392
#define SQLITE_DELETE                9   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1393
#define SQLITE_DROP_INDEX           10   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1394
#define SQLITE_DROP_TABLE           11   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1395
#define SQLITE_DROP_TEMP_INDEX      12   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1396
#define SQLITE_DROP_TEMP_TABLE      13   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1397
#define SQLITE_DROP_TEMP_TRIGGER    14   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1398
#define SQLITE_DROP_TEMP_VIEW       15   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1399
#define SQLITE_DROP_TRIGGER         16   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1400
#define SQLITE_DROP_VIEW            17   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1401
#define SQLITE_INSERT               18   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1402
#define SQLITE_PRAGMA               19   /* Pragma Name     1st arg or NULL */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1403
#define SQLITE_READ                 20   /* Table Name      Column Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1404
#define SQLITE_SELECT               21   /* NULL            NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1405
#define SQLITE_TRANSACTION          22   /* NULL            NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1406
#define SQLITE_UPDATE               23   /* Table Name      Column Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1407
#define SQLITE_ATTACH               24   /* Filename        NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1408
#define SQLITE_DETACH               25   /* Database Name   NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1409
#define SQLITE_ALTER_TABLE          26   /* Database Name   Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1410
#define SQLITE_REINDEX              27   /* Index Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1411
#define SQLITE_ANALYZE              28   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1412
#define SQLITE_CREATE_VTABLE        29   /* Table Name      Module Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1413
#define SQLITE_DROP_VTABLE          30   /* Table Name      Module Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1414
#define SQLITE_FUNCTION             31   /* Function Name   NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1415
#define SQLITE_COPY                  0   /* No longer used */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1416
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1417
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1418
** CAPI3REF: Tracing And Profiling Functions {F12280}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1419
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1420
** These routines register callback functions that can be used for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1421
** tracing and profiling the execution of SQL statements.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1422
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1423
** {F12281} The callback function registered by sqlite3_trace() is invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1424
** at the first [sqlite3_step()] for the evaluation of an SQL statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1425
** {F12282} Only a single trace callback can be registered at a time.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1426
** Each call to sqlite3_trace() overrides the previous.  {F12283} A
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1427
** NULL callback for sqlite3_trace() disables tracing.  {F12284} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1428
** first argument to the trace callback is a copy of the pointer which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1429
** was the 3rd argument to sqlite3_trace.  {F12285} The second argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1430
** to the trace callback is a zero-terminated UTF8 string containing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1431
** the original text of the SQL statement as it was passed into
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1432
** [sqlite3_prepare_v2()] or the equivalent. {END}  Note that the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1433
** host parameter are not expanded in the SQL statement text.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1434
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1435
** {F12287} The callback function registered by sqlite3_profile() is invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1436
** as each SQL statement finishes.  {F12288} The first parameter to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1437
** profile callback is a copy of the 3rd parameter to sqlite3_profile().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1438
** {F12289} The second parameter to the profile callback is a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1439
** zero-terminated UTF-8 string that contains the complete text of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1440
** the SQL statement as it was processed by [sqlite3_prepare_v2()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1441
** the equivalent.  {F12290} The third parameter to the profile 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1442
** callback is an estimate of the number of nanoseconds of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1443
** wall-clock time required to run the SQL statement from start
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1444
** to finish. {END}  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1445
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1446
** The sqlite3_profile() API is currently considered experimental and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1447
** is subject to change.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1448
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1449
/*IMPORT_C*/ void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1450
/*IMPORT_C*/ void *sqlite3_profile(sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1451
   void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1452
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1453
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1454
** CAPI3REF: Query Progress Callbacks {F12910}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1455
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1456
** {F12911} This routine configures a callback function - the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1457
** progress callback - that is invoked periodically during long
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1458
** running calls to [sqlite3_exec()], [sqlite3_step()] and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1459
** [sqlite3_get_table()]. {END}  An example use for this 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1460
** interface is to keep a GUI updated during a large query.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1461
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1462
** {F12912} The progress callback is invoked once for every N virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1463
** machine opcodes, where N is the second argument to this function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1464
** {F12913} The progress callback itself is identified by the third
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1465
** argument to this function. {F12914} The fourth argument to this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1466
** function is a void pointer passed to the progress callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1467
** function each time it is invoked. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1468
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1469
** {F12915} If a call to [sqlite3_exec()], [sqlite3_step()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1470
** [sqlite3_get_table()] results in fewer than N opcodes being executed,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1471
** then the progress callback is never invoked. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1472
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1473
** {F12916} Only a single progress callback function may be registered for each
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1474
** open database connection.  Every call to sqlite3_progress_handler()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1475
** overwrites the results of the previous call. {F12917}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1476
** To remove the progress callback altogether, pass NULL as the third
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1477
** argument to this function. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1478
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1479
** {F12918} If the progress callback returns a result other than 0, then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1480
** the current query is immediately terminated and any database changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1481
** rolled back. {F12919}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1482
** The containing [sqlite3_exec()], [sqlite3_step()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1483
** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. {END}  This feature
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1484
** can be used, for example, to implement the "Cancel" button on a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1485
** progress dialog box in a GUI.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1486
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1487
/*IMPORT_C*/ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1488
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1489
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1490
** CAPI3REF: Opening A New Database Connection {F12700}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1491
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1492
** {F12701} These routines open an SQLite database file whose name
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1493
** is given by the filename argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1494
** {F12702} The filename argument is interpreted as UTF-8
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1495
** for [sqlite3_open()] and [sqlite3_open_v2()] and as UTF-16
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1496
** in the native byte order for [sqlite3_open16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1497
** {F12703} An [sqlite3*] handle is returned in *ppDb, even
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1498
** if an error occurs.  {F12723} (Exception: if SQLite is unable
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1499
** to allocate memory to hold the [sqlite3] object, a NULL will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1500
** be written into *ppDb instead of a pointer to the [sqlite3] object.)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1501
** {F12704} If the database is opened (and/or created)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1502
** successfully, then [SQLITE_OK] is returned.  {F12705} Otherwise an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1503
** error code is returned.  {F12706} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1504
** [sqlite3_errmsg()] or [sqlite3_errmsg16()]  routines can be used to obtain
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1505
** an English language description of the error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1506
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1507
** {F12707} The default encoding for the database will be UTF-8 if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1508
** [sqlite3_open()] or [sqlite3_open_v2()] is called and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1509
** UTF-16 in the native byte order if [sqlite3_open16()] is used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1510
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1511
** {F12708} Whether or not an error occurs when it is opened, resources
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1512
** associated with the [sqlite3*] handle should be released by passing it
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1513
** to [sqlite3_close()] when it is no longer required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1514
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1515
** {F12709} The [sqlite3_open_v2()] interface works like [sqlite3_open()] 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1516
** except that it acccepts two additional parameters for additional control
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1517
** over the new database connection.  {F12710} The flags parameter can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1518
** one of:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1519
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1520
** <ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1521
** <li>  [SQLITE_OPEN_READONLY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1522
** <li>  [SQLITE_OPEN_READWRITE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1523
** <li>  [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1524
** </ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1525
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1526
** {F12711} The first value opens the database read-only. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1527
** {F12712} If the database does not previously exist, an error is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1528
** {F12713} The second option opens
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1529
** the database for reading and writing if possible, or reading only if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1530
** if the file is write protected.  {F12714} In either case the database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1531
** must already exist or an error is returned.  {F12715} The third option
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1532
** opens the database for reading and writing and creates it if it does
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1533
** not already exist. {F12716}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1534
** The third options is behavior that is always used for [sqlite3_open()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1535
** and [sqlite3_open16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1536
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1537
** {F12717} If the filename is ":memory:", then an private
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1538
** in-memory database is created for the connection. {F12718} This in-memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1539
** database will vanish when the database connection is closed. {END}  Future
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1540
** version of SQLite might make use of additional special filenames
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1541
** that begin with the ":" character.  It is recommended that 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1542
** when a database filename really does begin with
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1543
** ":" that you prefix the filename with a pathname like "./" to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1544
** avoid ambiguity.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1545
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1546
** {F12719} If the filename is an empty string, then a private temporary
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1547
** on-disk database will be created.  {F12720} This private database will be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1548
** automatically deleted as soon as the database connection is closed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1549
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1550
** {F12721} The fourth parameter to sqlite3_open_v2() is the name of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1551
** [sqlite3_vfs] object that defines the operating system 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1552
** interface that the new database connection should use.  {F12722} If the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1553
** fourth parameter is a NULL pointer then the default [sqlite3_vfs]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1554
** object is used. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1555
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1556
** <b>Note to windows users:</b>  The encoding used for the filename argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1557
** of [sqlite3_open()] and [sqlite3_open_v2()] must be UTF-8, not whatever
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1558
** codepage is currently defined.  Filenames containing international
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1559
** characters must be converted to UTF-8 prior to passing them into
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1560
** [sqlite3_open()] or [sqlite3_open_v2()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1561
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1562
/*IMPORT_C*/ int sqlite3_open(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1563
  const char *filename,   /* Database filename (UTF-8) */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1564
  sqlite3 **ppDb          /* OUT: SQLite db handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1565
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1566
/*IMPORT_C*/ int sqlite3_open16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1567
  const void *filename,   /* Database filename (UTF-16) */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1568
  sqlite3 **ppDb          /* OUT: SQLite db handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1569
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1570
/*IMPORT_C*/ int sqlite3_open_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1571
  const char *filename,   /* Database filename (UTF-8) */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1572
  sqlite3 **ppDb,         /* OUT: SQLite db handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1573
  int flags,              /* Flags */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1574
  const char *zVfs        /* Name of VFS module to use */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1575
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1576
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1577
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1578
** CAPI3REF: Error Codes And Messages {F12800}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1579
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1580
** {F12801} The sqlite3_errcode() interface returns the numeric
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1581
** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1582
** for the most recent failed sqlite3_* API call associated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1583
** with [sqlite3] handle 'db'. {U12802} If a prior API call failed but the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1584
** most recent API call succeeded, the return value from sqlite3_errcode()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1585
** is undefined. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1586
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1587
** {F12803} The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1588
** text that describes the error, as either UTF8 or UTF16 respectively.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1589
** {F12804} Memory to hold the error message string is managed internally.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1590
** {U12805} The 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1591
** string may be overwritten or deallocated by subsequent calls to SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1592
** interface functions. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1593
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1594
** {F12806} Calls to many sqlite3_* functions set the error code and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1595
** string returned by [sqlite3_errcode()], [sqlite3_errmsg()], and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1596
** [sqlite3_errmsg16()] overwriting the previous values.  {F12807}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1597
** Except, calls to [sqlite3_errcode()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1598
** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1599
** results of future invocations.  {F12808} Calls to API routines that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1600
** do not return an error code (example: [sqlite3_data_count()]) do not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1601
** change the error code returned by this routine.  {F12809} Interfaces that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1602
** are not associated with a specific database connection (examples:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1603
** [sqlite3_mprintf()] or [sqlite3_enable_shared_cache()] do not change
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1604
** the return code. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1605
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1606
** {F12810} Assuming no other intervening sqlite3_* API calls are made,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1607
** the error code returned by this function is associated with the same
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1608
** error as the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1609
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1610
/*IMPORT_C*/ int sqlite3_errcode(sqlite3 *db);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1611
/*IMPORT_C*/ const char *sqlite3_errmsg(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1612
/*IMPORT_C*/ const void *sqlite3_errmsg16(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1613
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1614
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1615
** CAPI3REF: SQL Statement Object {F13000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1616
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1617
** An instance of this object represent single SQL statements.  This
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1618
** object is variously known as a "prepared statement" or a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1619
** "compiled SQL statement" or simply as a "statement".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1620
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1621
** The life of a statement object goes something like this:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1622
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1623
** <ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1624
** <li> Create the object using [sqlite3_prepare_v2()] or a related
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1625
**      function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1626
** <li> Bind values to host parameters using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1627
**      [sqlite3_bind_blob | sqlite3_bind_* interfaces].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1628
** <li> Run the SQL by calling [sqlite3_step()] one or more times.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1629
** <li> Reset the statement using [sqlite3_reset()] then go back
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1630
**      to step 2.  Do this zero or more times.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1631
** <li> Destroy the object using [sqlite3_finalize()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1632
** </ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1633
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1634
** Refer to documentation on individual methods above for additional
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1635
** information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1636
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1637
typedef struct sqlite3_stmt sqlite3_stmt;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1638
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1639
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1640
** CAPI3REF: Compiling An SQL Statement {F13010}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1641
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1642
** To execute an SQL query, it must first be compiled into a byte-code
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1643
** program using one of these routines. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1644
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1645
** {F13011} The first argument "db" is an [sqlite3 | SQLite database handle] 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1646
** obtained from a prior call to [sqlite3_open()], [sqlite3_open_v2()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1647
** or [sqlite3_open16()]. {F13012}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1648
** The second argument "zSql" is the statement to be compiled, encoded
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1649
** as either UTF-8 or UTF-16.  The sqlite3_prepare() and sqlite3_prepare_v2()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1650
** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1651
** use UTF-16. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1652
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1653
** {F13013} If the nByte argument is less
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1654
** than zero, then zSql is read up to the first zero terminator.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1655
** {F13014} If nByte is non-negative, then it is the maximum number of 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1656
** bytes read from zSql.  When nByte is non-negative, the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1657
** zSql string ends at either the first '\000' or '\u0000' character or 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1658
** until the nByte-th byte, whichever comes first. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1659
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1660
** {F13015} *pzTail is made to point to the first byte past the end of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1661
** first SQL statement in zSql.  These routines only compiles the first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1662
** statement in zSql, so *pzTail is left pointing to what remains
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1663
** uncompiled. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1664
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1665
** {F13016} *ppStmt is left pointing to a compiled 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1666
** [sqlite3_stmt | SQL statement structure] that can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1667
** executed using [sqlite3_step()].  Or if there is an error, *ppStmt may be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1668
** set to NULL.  {F13017} If the input text contains no SQL (if the input
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1669
** is and empty string or a comment) then *ppStmt is set to NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1670
** {U13018} The calling procedure is responsible for deleting the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1671
** compiled SQL statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1672
** using [sqlite3_finalize()] after it has finished with it.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1673
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1674
** {F13019} On success, [SQLITE_OK] is returned.  Otherwise an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1675
** [SQLITE_ERROR | error code] is returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1676
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1677
** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1678
** recommended for all new programs. The two older interfaces are retained
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1679
** for backwards compatibility, but their use is discouraged.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1680
** {F13020} In the "v2" interfaces, the prepared statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1681
** that is returned (the [sqlite3_stmt] object) contains a copy of the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1682
** original SQL text. {END} This causes the [sqlite3_step()] interface to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1683
** behave a differently in two ways:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1684
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1685
** <ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1686
** <li>{F13022}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1687
** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1688
** always used to do, [sqlite3_step()] will automatically recompile the SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1689
** statement and try to run it again. {F12023} If the schema has changed in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1690
** a way that makes the statement no longer valid, [sqlite3_step()] will still
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1691
** return [SQLITE_SCHEMA].  {END} But unlike the legacy behavior, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1692
** [SQLITE_SCHEMA] is now a fatal error.  {F12024} Calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1693
** [sqlite3_prepare_v2()] again will not make the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1694
** error go away.  {F12025} Note: use [sqlite3_errmsg()] to find the text
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1695
** of the parsing error that results in an [SQLITE_SCHEMA] return. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1696
** </li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1697
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1698
** <li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1699
** {F13030} When an error occurs, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1700
** [sqlite3_step()] will return one of the detailed 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1701
** [SQLITE_ERROR | result codes] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1702
** [SQLITE_IOERR_READ | extended result codes].  {F13031}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1703
** The legacy behavior was that [sqlite3_step()] would only return a generic
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1704
** [SQLITE_ERROR] result code and you would have to make a second call to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1705
** [sqlite3_reset()] in order to find the underlying cause of the problem.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1706
** {F13032}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1707
** With the "v2" prepare interfaces, the underlying reason for the error is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1708
** returned immediately. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1709
** </li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1710
** </ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1711
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1712
/*IMPORT_C*/ int sqlite3_prepare(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1713
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1714
  const char *zSql,       /* SQL statement, UTF-8 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1715
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1716
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1717
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1718
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1719
/*IMPORT_C*/ int sqlite3_prepare_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1720
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1721
  const char *zSql,       /* SQL statement, UTF-8 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1722
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1723
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1724
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1725
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1726
/*IMPORT_C*/ int sqlite3_prepare16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1727
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1728
  const void *zSql,       /* SQL statement, UTF-16 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1729
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1730
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1731
  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1732
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1733
/*IMPORT_C*/ int sqlite3_prepare16_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1734
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1735
  const void *zSql,       /* SQL statement, UTF-16 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1736
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1737
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1738
  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1739
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1740
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1741
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1742
** CAPIREF: Retrieving Statement SQL {F13100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1743
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1744
** {F13101} If the compiled SQL statement passed as an argument was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1745
** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1746
** then this function returns a pointer to a zero-terminated string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1747
** containing a copy of the original SQL statement. {F13102} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1748
** pointer is valid until the statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1749
** is deleted using sqlite3_finalize().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1750
** {F13103} The string returned by sqlite3_sql() is always UTF8 even
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1751
** if a UTF16 string was originally entered using [sqlite3_prepare16_v2()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1752
** or the equivalent.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1753
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1754
** {F13104} If the statement was compiled using either of the legacy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1755
** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1756
** function returns NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1757
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1758
/*IMPORT_C*/ const char *sqlite3_sql(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1759
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1760
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1761
** CAPI3REF:  Dynamically Typed Value Object  {F15000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1762
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1763
** {F15001} SQLite uses the sqlite3_value object to represent all values
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1764
** that are or can be stored in a database table. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1765
** SQLite uses dynamic typing for the values it stores.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1766
** {F15002} Values stored in sqlite3_value objects can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1767
** be integers, floating point values, strings, BLOBs, or NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1768
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1769
typedef struct Mem sqlite3_value;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1770
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1771
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1772
** CAPI3REF:  SQL Function Context Object {F16001}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1773
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1774
** The context in which an SQL function executes is stored in an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1775
** sqlite3_context object.  {F16002} A pointer to an sqlite3_context
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1776
** object is always first parameter to application-defined SQL functions.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1777
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1778
typedef struct sqlite3_context sqlite3_context;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1779
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1780
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1781
** CAPI3REF:  Binding Values To Prepared Statements {F13500}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1782
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1783
** {F13501} In the SQL strings input to [sqlite3_prepare_v2()] and its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1784
** variants, literals may be replace by a parameter in one
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1785
** of these forms:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1786
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1787
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1788
** <li>  ?
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1789
** <li>  ?NNN
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1790
** <li>  :AAA
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1791
** <li>  @AAA
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1792
** <li>  $VVV
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1793
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1794
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1795
** In the parameter forms shown above NNN is an integer literal,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1796
** AAA is an alphanumeric identifier and VVV is a variable name according
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1797
** to the syntax rules of the TCL programming language. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1798
** The values of these parameters (also called "host parameter names")
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1799
** can be set using the sqlite3_bind_*() routines defined here.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1800
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1801
** {F13502} The first argument to the sqlite3_bind_*() routines always
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1802
** is a pointer to the [sqlite3_stmt] object returned from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1803
** [sqlite3_prepare_v2()] or its variants.  {F13503} The second
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1804
** argument is the index of the parameter to be set.  {F13504} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1805
** first parameter has an index of 1.  {F13505} When the same named
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1806
** parameter is used more than once, second and subsequent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1807
** occurrences have the same index as the first occurrence. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1808
** {F13506} The index for named parameters can be looked up using the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1809
** [sqlite3_bind_parameter_name()] API if desired.  {F13507} The index
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1810
** for "?NNN" parameters is the value of NNN.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1811
** {F13508} The NNN value must be between 1 and the compile-time
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1812
** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999). {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1813
** See <a href="limits.html">limits.html</a> for additional information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1814
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1815
** {F13509} The third argument is the value to bind to the parameter. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1816
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1817
** {F13510} In those
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1818
** routines that have a fourth argument, its value is the number of bytes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1819
** in the parameter.  To be clear: the value is the number of bytes in the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1820
** string, not the number of characters. {F13511}  The number
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1821
** of bytes does not include the zero-terminator at the end of strings.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1822
** {F13512}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1823
** If the fourth parameter is negative, the length of the string is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1824
** number of bytes up to the first zero terminator. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1825
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1826
** {F13513}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1827
** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1828
** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1829
** text after SQLite has finished with it. {F13514} If the fifth argument is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1830
** the special value [SQLITE_STATIC], then the library assumes that the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1831
** information is in static, unmanaged space and does not need to be freed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1832
** {F13515} If the fifth argument has the value [SQLITE_TRANSIENT], then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1833
** SQLite makes its own private copy of the data immediately, before
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1834
** the sqlite3_bind_*() routine returns. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1835
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1836
** {F13520} The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1837
** is filled with zeros.  {F13521} A zeroblob uses a fixed amount of memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1838
** (just an integer to hold it size) while it is being processed. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1839
** Zeroblobs are intended to serve as place-holders for BLOBs whose
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1840
** content is later written using 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1841
** [sqlite3_blob_open | increment BLOB I/O] routines. {F13522} A negative
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1842
** value for the zeroblob results in a zero-length BLOB. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1843
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1844
** {F13530} The sqlite3_bind_*() routines must be called after
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1845
** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1846
** before [sqlite3_step()]. {F13531}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1847
** Bindings are not cleared by the [sqlite3_reset()] routine.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1848
** {F13532} Unbound parameters are interpreted as NULL. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1849
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1850
** {F13540} These routines return [SQLITE_OK] on success or an error code if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1851
** anything goes wrong.  {F13541} [SQLITE_RANGE] is returned if the parameter
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1852
** index is out of range.  {F13542} [SQLITE_NOMEM] is returned if malloc fails.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1853
** {F13543} [SQLITE_MISUSE] is returned if these routines are called on a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1854
** virtual machine that is the wrong state or which has already been finalized.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1855
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1856
/*IMPORT_C*/ int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1857
/*IMPORT_C*/ int sqlite3_bind_double(sqlite3_stmt*, int, double);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1858
/*IMPORT_C*/ int sqlite3_bind_int(sqlite3_stmt*, int, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1859
/*IMPORT_C*/ int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1860
/*IMPORT_C*/ int sqlite3_bind_null(sqlite3_stmt*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1861
/*IMPORT_C*/ int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1862
/*IMPORT_C*/ int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1863
/*IMPORT_C*/ int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1864
/*IMPORT_C*/ int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1865
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1866
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1867
** CAPI3REF: Number Of Host Parameters {F13600}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1868
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1869
** {F13601} Return the largest host parameter index in the precompiled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1870
** statement given as the argument. {F13602} When the host parameters
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1871
** are of the forms like ":AAA", "$VVV", "@AAA", or "?",
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1872
** then they are assigned sequential increasing numbers beginning
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1873
** with one, so the value returned is the number of parameters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1874
** {F13603} However
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1875
** if the same host parameter name is used multiple times, each occurrance
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1876
** is given the same number, so the value returned in that case is the number
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1877
** of unique host parameter names. {F13604} If host parameters of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1878
** form "?NNN" are used (where NNN is an integer) then there might be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1879
** gaps in the numbering and the value returned by this interface is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1880
** the index of the host parameter with the largest index value. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1881
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1882
** {U13605} The prepared statement must not be [sqlite3_finalize | finalized]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1883
** prior to this routine returning.  Otherwise the results are undefined
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1884
** and probably undesirable.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1885
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1886
/*IMPORT_C*/ int sqlite3_bind_parameter_count(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1887
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1888
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1889
** CAPI3REF: Name Of A Host Parameter {F13620}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1890
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1891
** {F13621} This routine returns a pointer to the name of the n-th
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1892
** parameter in a [sqlite3_stmt | prepared statement]. {F13622}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1893
** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1894
** which is the string ":AAA" or "@AAA" or "$VVV". 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1895
** In other words, the initial ":" or "$" or "@"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1896
** is included as part of the name.  {F13626}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1897
** Parameters of the form "?" or "?NNN" have no name.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1898
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1899
** {F13623} The first host parameter has an index of 1, not 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1900
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1901
** {F13624} If the value n is out of range or if the n-th parameter is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1902
** nameless, then NULL is returned.  {F13625} The returned string is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1903
** always in the UTF-8 encoding even if the named parameter was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1904
** originally specified as UTF-16 in [sqlite3_prepare16()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1905
** [sqlite3_prepare16_v2()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1906
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1907
/*IMPORT_C*/ const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1908
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1909
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1910
** CAPI3REF: Index Of A Parameter With A Given Name {F13640}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1911
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1912
** {F13641} This routine returns the index of a host parameter with the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1913
** given name.  {F13642} The name must match exactly.  {F13643}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1914
** If no parameter with the given name is found, return 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1915
** {F13644} Parameter names must be UTF8.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1916
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1917
/*IMPORT_C*/ int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1918
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1919
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1920
** CAPI3REF: Reset All Bindings On A Prepared Statement {F13660}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1921
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1922
** {F13661} Contrary to the intuition of many, [sqlite3_reset()] does not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1923
** reset the [sqlite3_bind_blob | bindings] on a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1924
** [sqlite3_stmt | prepared statement]. {F13662} Use this routine to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1925
** reset all host parameters to NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1926
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1927
/*IMPORT_C*/ int sqlite3_clear_bindings(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1928
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1929
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1930
** CAPI3REF: Number Of Columns In A Result Set {F13710}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1931
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1932
** {F13711} Return the number of columns in the result set returned by the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1933
** [sqlite3_stmt | compiled SQL statement]. {F13712} This routine returns 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1934
** if pStmt is an SQL statement that does not return data (for 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1935
** example an UPDATE).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1936
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1937
/*IMPORT_C*/ int sqlite3_column_count(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1938
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1939
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1940
** CAPI3REF: Column Names In A Result Set {F13720}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1941
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1942
** {F13721} These routines return the name assigned to a particular column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1943
** in the result set of a SELECT statement.  {F13722} The sqlite3_column_name()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1944
** interface returns a pointer to a zero-terminated UTF8 string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1945
** and sqlite3_column_name16() returns a pointer to a zero-terminated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1946
** UTF16 string. {F13723}  The first parameter is the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1947
** [sqlite3_stmt | prepared statement] that implements the SELECT statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1948
** The second parameter is the column number.  The left-most column is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1949
** number 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1950
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1951
** {F13724} The returned string pointer is valid until either the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1952
** [sqlite3_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1953
** or until the next call sqlite3_column_name() or sqlite3_column_name16()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1954
** on the same column.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1955
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1956
** {F13725} If sqlite3_malloc() fails during the processing of either routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1957
** (for example during a conversion from UTF-8 to UTF-16) then a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1958
** NULL pointer is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1959
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1960
/*IMPORT_C*/ const char *sqlite3_column_name(sqlite3_stmt*, int N);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1961
/*IMPORT_C*/ const void *sqlite3_column_name16(sqlite3_stmt*, int N);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1962
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1963
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1964
** CAPI3REF: Source Of Data In A Query Result {F13740}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1965
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1966
** {F13741} These routines provide a means to determine what column of what
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1967
** table in which database a result of a SELECT statement comes from.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1968
** {F13742} The name of the database or table or column can be returned as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1969
** either a UTF8 or UTF16 string.  {F13743} The _database_ routines return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1970
** the database name, the _table_ routines return the table name, and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1971
** the origin_ routines return the column name. {F13744}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1972
** The returned string is valid until
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1973
** the [sqlite3_stmt | prepared statement] is destroyed using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1974
** [sqlite3_finalize()] or until the same information is requested
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1975
** again in a different encoding.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1976
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1977
** {F13745} The names returned are the original un-aliased names of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1978
** database, table, and column.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1979
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1980
** {F13746} The first argument to the following calls is a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1981
** [sqlite3_stmt | compiled SQL statement].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1982
** {F13747} These functions return information about the Nth column returned by 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1983
** the statement, where N is the second function argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1984
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1985
** {F13748} If the Nth column returned by the statement is an expression
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1986
** or subquery and is not a column value, then all of these functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1987
** return NULL.  {F13749} Otherwise, they return the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1988
** name of the attached database, table and column that query result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1989
** column was extracted from.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1990
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1991
** {F13750} As with all other SQLite APIs, those postfixed with "16" return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1992
** UTF-16 encoded strings, the other functions return UTF-8. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1993
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1994
** These APIs are only available if the library was compiled with the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1995
** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1996
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1997
** {U13751}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1998
** If two or more threads call one or more of these routines against the same
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1999
** prepared statement and column at the same time then the results are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2000
** undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2001
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2002
/*IMPORT_C*/ const char *sqlite3_column_database_name(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2003
/*IMPORT_C*/ const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2004
/*IMPORT_C*/ const char *sqlite3_column_table_name(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2005
/*IMPORT_C*/ const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2006
/*IMPORT_C*/ const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2007
/*IMPORT_C*/ const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2008
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2009
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2010
** CAPI3REF: Declared Datatype Of A Query Result {F13760}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2011
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2012
** The first parameter is a [sqlite3_stmt | compiled SQL statement]. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2013
** {F13761} If this statement is a SELECT statement and the Nth column of the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2014
** returned result set of that SELECT is a table column (not an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2015
** expression or subquery) then the declared type of the table
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2016
** column is returned.  {F13762} If the Nth column of the result set is an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2017
** expression or subquery, then a NULL pointer is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2018
** {F13763} The returned string is always UTF-8 encoded.  {END} 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2019
** For example, in the database schema:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2020
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2021
** CREATE TABLE t1(c1 VARIANT);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2022
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2023
** And the following statement compiled:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2024
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2025
** SELECT c1 + 1, c1 FROM t1;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2026
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2027
** Then this routine would return the string "VARIANT" for the second
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2028
** result column (i==1), and a NULL pointer for the first result column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2029
** (i==0).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2030
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2031
** SQLite uses dynamic run-time typing.  So just because a column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2032
** is declared to contain a particular type does not mean that the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2033
** data stored in that column is of the declared type.  SQLite is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2034
** strongly typed, but the typing is dynamic not static.  Type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2035
** is associated with individual values, not with the containers
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2036
** used to hold those values.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2037
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2038
/*IMPORT_C*/ const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2039
/*IMPORT_C*/ const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2040
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2041
/* 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2042
** CAPI3REF:  Evaluate An SQL Statement {F13200}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2043
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2044
** After an [sqlite3_stmt | SQL statement] has been prepared with a call
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2045
** to either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or to one of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2046
** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2047
** then this function must be called one or more times to evaluate the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2048
** statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2049
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2050
** The details of the behavior of this sqlite3_step() interface depend
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2051
** on whether the statement was prepared using the newer "v2" interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2052
** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2053
** interface [sqlite3_prepare()] and [sqlite3_prepare16()].  The use of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2054
** new "v2" interface is recommended for new applications but the legacy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2055
** interface will continue to be supported.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2056
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2057
** In the lagacy interface, the return value will be either [SQLITE_BUSY], 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2058
** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2059
** With the "v2" interface, any of the other [SQLITE_OK | result code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2060
** or [SQLITE_IOERR_READ | extended result code] might be returned as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2061
** well.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2062
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2063
** [SQLITE_BUSY] means that the database engine was unable to acquire the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2064
** database locks it needs to do its job.  If the statement is a COMMIT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2065
** or occurs outside of an explicit transaction, then you can retry the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2066
** statement.  If the statement is not a COMMIT and occurs within a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2067
** explicit transaction then you should rollback the transaction before
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2068
** continuing.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2069
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2070
** [SQLITE_DONE] means that the statement has finished executing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2071
** successfully.  sqlite3_step() should not be called again on this virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2072
** machine without first calling [sqlite3_reset()] to reset the virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2073
** machine back to its initial state.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2074
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2075
** If the SQL statement being executed returns any data, then 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2076
** [SQLITE_ROW] is returned each time a new row of data is ready
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2077
** for processing by the caller. The values may be accessed using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2078
** the [sqlite3_column_int | column access functions].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2079
** sqlite3_step() is called again to retrieve the next row of data.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2080
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2081
** [SQLITE_ERROR] means that a run-time error (such as a constraint
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2082
** violation) has occurred.  sqlite3_step() should not be called again on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2083
** the VM. More information may be found by calling [sqlite3_errmsg()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2084
** With the legacy interface, a more specific error code (example:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2085
** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2086
** can be obtained by calling [sqlite3_reset()] on the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2087
** [sqlite3_stmt | prepared statement].  In the "v2" interface,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2088
** the more specific error code is returned directly by sqlite3_step().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2089
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2090
** [SQLITE_MISUSE] means that the this routine was called inappropriately.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2091
** Perhaps it was called on a [sqlite3_stmt | prepared statement] that has
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2092
** already been [sqlite3_finalize | finalized] or on one that had 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2093
** previously returned [SQLITE_ERROR] or [SQLITE_DONE].  Or it could
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2094
** be the case that the same database connection is being used by two or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2095
** more threads at the same moment in time.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2096
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2097
** <b>Goofy Interface Alert:</b>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2098
** In the legacy interface, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2099
** the sqlite3_step() API always returns a generic error code,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2100
** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2101
** and [SQLITE_MISUSE].  You must call [sqlite3_reset()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2102
** [sqlite3_finalize()] in order to find one of the specific
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2103
** [SQLITE_ERROR | result codes] that better describes the error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2104
** We admit that this is a goofy design.  The problem has been fixed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2105
** with the "v2" interface.  If you prepare all of your SQL statements
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2106
** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2107
** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2108
** more specific [SQLITE_ERROR | result codes] are returned directly
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2109
** by sqlite3_step().  The use of the "v2" interface is recommended.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2110
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2111
/*IMPORT_C*/ int sqlite3_step(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2112
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2113
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2114
** CAPI3REF: Number of columns in a result set {F13770}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2115
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2116
** Return the number of values in the current row of the result set.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2117
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2118
** {F13771} After a call to [sqlite3_step()] that returns [SQLITE_ROW],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2119
** this routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2120
** will return the same value as the [sqlite3_column_count()] function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2121
** {F13772}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2122
** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2123
** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2124
** called on the [sqlite3_stmt | prepared statement] for the first time,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2125
** this routine returns zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2126
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2127
/*IMPORT_C*/ int sqlite3_data_count(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2128
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2129
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2130
** CAPI3REF: Fundamental Datatypes {F10265}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2131
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2132
** {F10266}Every value in SQLite has one of five fundamental datatypes:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2133
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2134
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2135
** <li> 64-bit signed integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2136
** <li> 64-bit IEEE floating point number
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2137
** <li> string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2138
** <li> BLOB
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2139
** <li> NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2140
** </ul> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2141
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2142
** These constants are codes for each of those types.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2143
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2144
** Note that the SQLITE_TEXT constant was also used in SQLite version 2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2145
** for a completely different meaning.  Software that links against both
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2146
** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2147
** SQLITE_TEXT.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2148
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2149
#define SQLITE_INTEGER  1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2150
#define SQLITE_FLOAT    2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2151
#define SQLITE_BLOB     4
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2152
#define SQLITE_NULL     5
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2153
#ifdef SQLITE_TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2154
# undef SQLITE_TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2155
#else
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2156
# define SQLITE_TEXT     3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2157
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2158
#define SQLITE3_TEXT     3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2159
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2160
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2161
** CAPI3REF: Results Values From A Query {F13800}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2162
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2163
** These routines return information about
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2164
** a single column of the current result row of a query.  In every
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2165
** case the first argument is a pointer to the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2166
** [sqlite3_stmt | SQL statement] that is being
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2167
** evaluated (the [sqlite3_stmt*] that was returned from 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2168
** [sqlite3_prepare_v2()] or one of its variants) and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2169
** the second argument is the index of the column for which information 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2170
** should be returned.  The left-most column of the result set
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2171
** has an index of 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2172
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2173
** If the SQL statement is not currently point to a valid row, or if the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2174
** the column index is out of range, the result is undefined. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2175
** These routines may only be called when the most recent call to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2176
** [sqlite3_step()] has returned [SQLITE_ROW] and neither
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2177
** [sqlite3_reset()] nor [sqlite3_finalize()] has been call subsequently.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2178
** If any of these routines are called after [sqlite3_reset()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2179
** [sqlite3_finalize()] or after [sqlite3_step()] has returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2180
** something other than [SQLITE_ROW], the results are undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2181
** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2182
** are called from a different thread while any of these routines
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2183
** are pending, then the results are undefined.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2184
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2185
** The sqlite3_column_type() routine returns 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2186
** [SQLITE_INTEGER | datatype code] for the initial data type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2187
** of the result column.  The returned value is one of [SQLITE_INTEGER],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2188
** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].  The value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2189
** returned by sqlite3_column_type() is only meaningful if no type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2190
** conversions have occurred as described below.  After a type conversion,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2191
** the value returned by sqlite3_column_type() is undefined.  Future
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2192
** versions of SQLite may change the behavior of sqlite3_column_type()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2193
** following a type conversion.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2194
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2195
** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes() 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2196
** routine returns the number of bytes in that BLOB or string.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2197
** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2198
** the string to UTF-8 and then returns the number of bytes.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2199
** If the result is a numeric value then sqlite3_column_bytes() uses
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2200
** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2201
** the number of bytes in that string.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2202
** The value returned does not include the zero terminator at the end
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2203
** of the string.  For clarity: the value returned is the number of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2204
** bytes in the string, not the number of characters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2205
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2206
** Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2207
** even zero-length strings, are always zero terminated.  The return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2208
** value from sqlite3_column_blob() for a zero-length blob is an arbitrary
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2209
** pointer, possibly even a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2210
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2211
** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2212
** but leaves the result in UTF-16 instead of UTF-8.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2213
** The zero terminator is not included in this count.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2214
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2215
** These routines attempt to convert the value where appropriate.  For
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2216
** example, if the internal representation is FLOAT and a text result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2217
** is requested, [sqlite3_snprintf()] is used internally to do the conversion
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2218
** automatically.  The following table details the conversions that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2219
** are applied:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2220
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2221
** <blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2222
** <table border="1">
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2223
** <tr><th> Internal<br>Type <th> Requested<br>Type <th>  Conversion
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2224
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2225
** <tr><td>  NULL    <td> INTEGER   <td> Result is 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2226
** <tr><td>  NULL    <td>  FLOAT    <td> Result is 0.0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2227
** <tr><td>  NULL    <td>   TEXT    <td> Result is NULL pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2228
** <tr><td>  NULL    <td>   BLOB    <td> Result is NULL pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2229
** <tr><td> INTEGER  <td>  FLOAT    <td> Convert from integer to float
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2230
** <tr><td> INTEGER  <td>   TEXT    <td> ASCII rendering of the integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2231
** <tr><td> INTEGER  <td>   BLOB    <td> Same as for INTEGER->TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2232
** <tr><td>  FLOAT   <td> INTEGER   <td> Convert from float to integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2233
** <tr><td>  FLOAT   <td>   TEXT    <td> ASCII rendering of the float
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2234
** <tr><td>  FLOAT   <td>   BLOB    <td> Same as FLOAT->TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2235
** <tr><td>  TEXT    <td> INTEGER   <td> Use atoi()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2236
** <tr><td>  TEXT    <td>  FLOAT    <td> Use atof()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2237
** <tr><td>  TEXT    <td>   BLOB    <td> No change
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2238
** <tr><td>  BLOB    <td> INTEGER   <td> Convert to TEXT then use atoi()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2239
** <tr><td>  BLOB    <td>  FLOAT    <td> Convert to TEXT then use atof()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2240
** <tr><td>  BLOB    <td>   TEXT    <td> Add a zero terminator if needed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2241
** </table>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2242
** </blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2243
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2244
** The table above makes reference to standard C library functions atoi()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2245
** and atof().  SQLite does not really use these functions.  It has its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2246
** on equavalent internal routines.  The atoi() and atof() names are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2247
** used in the table for brevity and because they are familiar to most
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2248
** C programmers.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2249
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2250
** Note that when type conversions occur, pointers returned by prior
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2251
** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2252
** sqlite3_column_text16() may be invalidated. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2253
** Type conversions and pointer invalidations might occur
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2254
** in the following cases:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2255
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2256
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2257
** <li><p>  The initial content is a BLOB and sqlite3_column_text() 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2258
**          or sqlite3_column_text16() is called.  A zero-terminator might
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2259
**          need to be added to the string.</p></li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2260
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2261
** <li><p>  The initial content is UTF-8 text and sqlite3_column_bytes16() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2262
**          sqlite3_column_text16() is called.  The content must be converted
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2263
**          to UTF-16.</p></li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2264
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2265
** <li><p>  The initial content is UTF-16 text and sqlite3_column_bytes() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2266
**          sqlite3_column_text() is called.  The content must be converted
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2267
**          to UTF-8.</p></li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2268
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2269
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2270
** Conversions between UTF-16be and UTF-16le are always done in place and do
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2271
** not invalidate a prior pointer, though of course the content of the buffer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2272
** that the prior pointer points to will have been modified.  Other kinds
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2273
** of conversion are done in place when it is possible, but sometime it is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2274
** not possible and in those cases prior pointers are invalidated.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2275
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2276
** The safest and easiest to remember policy is to invoke these routines
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2277
** in one of the following ways:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2278
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2279
**  <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2280
**  <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2281
**  <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2282
**  <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2283
**  </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2284
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2285
** In other words, you should call sqlite3_column_text(), sqlite3_column_blob(),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2286
** or sqlite3_column_text16() first to force the result into the desired
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2287
** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2288
** find the size of the result.  Do not mix call to sqlite3_column_text() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2289
** sqlite3_column_blob() with calls to sqlite3_column_bytes16().  And do not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2290
** mix calls to sqlite3_column_text16() with calls to sqlite3_column_bytes().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2291
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2292
** The pointers returned are valid until a type conversion occurs as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2293
** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2294
** [sqlite3_finalize()] is called.  The memory space used to hold strings
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2295
** and blobs is freed automatically.  Do <b>not</b> pass the pointers returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2296
** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2297
** [sqlite3_free()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2298
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2299
** If a memory allocation error occurs during the evaluation of any
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2300
** of these routines, a default value is returned.  The default value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2301
** is either the integer 0, the floating point number 0.0, or a NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2302
** pointer.  Subsequent calls to [sqlite3_errcode()] will return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2303
** [SQLITE_NOMEM].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2304
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2305
/*IMPORT_C*/ const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2306
/*IMPORT_C*/ int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2307
/*IMPORT_C*/ int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2308
/*IMPORT_C*/ double sqlite3_column_double(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2309
/*IMPORT_C*/ int sqlite3_column_int(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2310
/*IMPORT_C*/ sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2311
/*IMPORT_C*/ const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2312
/*IMPORT_C*/ const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2313
/*IMPORT_C*/ int sqlite3_column_type(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2314
/*IMPORT_C*/ sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2315
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2316
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2317
** CAPI3REF: Destroy A Prepared Statement Object {F13300}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2318
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2319
** The sqlite3_finalize() function is called to delete a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2320
** [sqlite3_stmt | compiled SQL statement]. If the statement was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2321
** executed successfully, or not executed at all, then SQLITE_OK is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2322
** If execution of the statement failed then an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2323
** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2324
** is returned. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2325
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2326
** This routine can be called at any point during the execution of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2327
** [sqlite3_stmt | virtual machine].  If the virtual machine has not 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2328
** completed execution when this routine is called, that is like
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2329
** encountering an error or an interrupt.  (See [sqlite3_interrupt()].) 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2330
** Incomplete updates may be rolled back and transactions cancelled,  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2331
** depending on the circumstances, and the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2332
** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2333
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2334
/*IMPORT_C*/ int sqlite3_finalize(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2335
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2336
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2337
** CAPI3REF: Reset A Prepared Statement Object {F13330}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2338
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2339
** The sqlite3_reset() function is called to reset a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2340
** [sqlite3_stmt | compiled SQL statement] object.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2341
** back to its initial state, ready to be re-executed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2342
** Any SQL statement variables that had values bound to them using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2343
** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2344
** Use [sqlite3_clear_bindings()] to reset the bindings.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2345
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2346
/*IMPORT_C*/ int sqlite3_reset(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2347
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2348
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2349
** CAPI3REF: Create Or Redefine SQL Functions {F16100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2350
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2351
** The following two functions are used to add SQL functions or aggregates
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2352
** or to redefine the behavior of existing SQL functions or aggregates.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2353
** difference only between the two is that the second parameter, the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2354
** name of the (scalar) function or aggregate, is encoded in UTF-8 for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2355
** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2356
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2357
** The first argument is the [sqlite3 | database handle] that holds the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2358
** SQL function or aggregate is to be added or redefined. If a single
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2359
** program uses more than one database handle internally, then SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2360
** functions or aggregates must be added individually to each database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2361
** handle with which they will be used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2362
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2363
** The second parameter is the name of the SQL function to be created
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2364
** or redefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2365
** The length of the name is limited to 255 bytes, exclusive of the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2366
** zero-terminator.  Note that the name length limit is in bytes, not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2367
** characters.  Any attempt to create a function with a longer name
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2368
** will result in an SQLITE_ERROR error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2369
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2370
** The third parameter is the number of arguments that the SQL function or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2371
** aggregate takes. If this parameter is negative, then the SQL function or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2372
** aggregate may take any number of arguments.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2373
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2374
** The fourth parameter, eTextRep, specifies what 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2375
** [SQLITE_UTF8 | text encoding] this SQL function prefers for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2376
** its parameters.  Any SQL function implementation should be able to work
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2377
** work with UTF-8, UTF-16le, or UTF-16be.  But some implementations may be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2378
** more efficient with one encoding than another.  It is allowed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2379
** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2380
** times with the same function but with different values of eTextRep.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2381
** When multiple implementations of the same function are available, SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2382
** will pick the one that involves the least amount of data conversion.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2383
** If there is only a single implementation which does not care what
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2384
** text encoding is used, then the fourth argument should be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2385
** [SQLITE_ANY].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2386
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2387
** The fifth parameter is an arbitrary pointer.  The implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2388
** of the function can gain access to this pointer using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2389
** [sqlite3_user_data()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2390
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2391
** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2392
** pointers to C-language functions that implement the SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2393
** function or aggregate. A scalar SQL function requires an implementation of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2394
** the xFunc callback only, NULL pointers should be passed as the xStep
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2395
** and xFinal parameters. An aggregate SQL function requires an implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2396
** of xStep and xFinal and NULL should be passed for xFunc. To delete an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2397
** existing SQL function or aggregate, pass NULL for all three function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2398
** callback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2399
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2400
** It is permitted to register multiple implementations of the same
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2401
** functions with the same name but with either differing numbers of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2402
** arguments or differing perferred text encodings.  SQLite will use
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2403
** the implementation most closely matches the way in which the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2404
** SQL function is used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2405
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2406
/*IMPORT_C*/ int sqlite3_create_function(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2407
  sqlite3 *,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2408
  const char *zFunctionName,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2409
  int nArg,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2410
  int eTextRep,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2411
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2412
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2413
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2414
  void (*xFinal)(sqlite3_context*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2415
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2416
/*IMPORT_C*/ int sqlite3_create_function16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2417
  sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2418
  const void *zFunctionName,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2419
  int nArg,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2420
  int eTextRep,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2421
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2422
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2423
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2424
  void (*xFinal)(sqlite3_context*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2425
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2426
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2427
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2428
** CAPI3REF: Text Encodings {F10267}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2429
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2430
** These constant define integer codes that represent the various
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2431
** text encodings supported by SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2432
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2433
#define SQLITE_UTF8           1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2434
#define SQLITE_UTF16LE        2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2435
#define SQLITE_UTF16BE        3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2436
#define SQLITE_UTF16          4    /* Use native byte order */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2437
#define SQLITE_ANY            5    /* sqlite3_create_function only */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2438
#define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2439
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2440
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2441
** CAPI3REF: Obsolete Functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2442
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2443
** These functions are all now obsolete.  In order to maintain
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2444
** backwards compatibility with older code, we continue to support
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2445
** these functions.  However, new development projects should avoid
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2446
** the use of these functions.  To help encourage people to avoid
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2447
** using these functions, we are not going to tell you want they do.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2448
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2449
/*IMPORT_C*/ int sqlite3_aggregate_count(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2450
/*IMPORT_C*/ int sqlite3_expired(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2451
/*IMPORT_C*/ int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2452
/*IMPORT_C*/ int sqlite3_global_recover(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2453
/*IMPORT_C*/ void sqlite3_thread_cleanup(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2454
/*IMPORT_C*/ int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2455
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2456
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2457
** CAPI3REF: Obtaining SQL Function Parameter Values {F15100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2458
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2459
** The C-language implementation of SQL functions and aggregates uses
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2460
** this set of interface routines to access the parameter values on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2461
** the function or aggregate.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2462
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2463
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2464
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2465
** define callbacks that implement the SQL functions and aggregates.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2466
** The 4th parameter to these callbacks is an array of pointers to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2467
** [sqlite3_value] objects.  There is one [sqlite3_value] object for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2468
** each parameter to the SQL function.  These routines are used to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2469
** extract values from the [sqlite3_value] objects.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2470
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2471
** These routines work just like the corresponding 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2472
** [sqlite3_column_blob | sqlite3_column_* routines] except that 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2473
** these routines take a single [sqlite3_value*] pointer instead
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2474
** of an [sqlite3_stmt*] pointer and an integer column number.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2475
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2476
** The sqlite3_value_text16() interface extracts a UTF16 string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2477
** in the native byte-order of the host machine.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2478
** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2479
** extract UTF16 strings as big-endian and little-endian respectively.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2480
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2481
** The sqlite3_value_numeric_type() interface attempts to apply
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2482
** numeric affinity to the value.  This means that an attempt is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2483
** made to convert the value to an integer or floating point.  If
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2484
** such a conversion is possible without loss of information (in other
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2485
** words if the value is a string that looks like a number)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2486
** then the conversion is done.  Otherwise no conversion occurs.  The 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2487
** [SQLITE_INTEGER | datatype] after conversion is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2488
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2489
** Please pay particular attention to the fact that the pointer that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2490
** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2491
** [sqlite3_value_text16()] can be invalidated by a subsequent call to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2492
** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2493
** or [sqlite3_value_text16()].  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2494
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2495
** These routines must be called from the same thread as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2496
** the SQL function that supplied the sqlite3_value* parameters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2497
** Or, if the sqlite3_value* argument comes from the [sqlite3_column_value()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2498
** interface, then these routines should be called from the same thread
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2499
** that ran [sqlite3_column_value()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2500
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2501
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2502
/*IMPORT_C*/ const void *sqlite3_value_blob(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2503
/*IMPORT_C*/ int sqlite3_value_bytes(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2504
/*IMPORT_C*/ int sqlite3_value_bytes16(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2505
/*IMPORT_C*/ double sqlite3_value_double(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2506
/*IMPORT_C*/ int sqlite3_value_int(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2507
/*IMPORT_C*/ sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2508
/*IMPORT_C*/ const unsigned char *sqlite3_value_text(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2509
/*IMPORT_C*/ const void *sqlite3_value_text16(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2510
/*IMPORT_C*/ const void *sqlite3_value_text16le(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2511
/*IMPORT_C*/ const void *sqlite3_value_text16be(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2512
/*IMPORT_C*/ int sqlite3_value_type(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2513
/*IMPORT_C*/ int sqlite3_value_numeric_type(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2514
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2515
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2516
** CAPI3REF: Obtain Aggregate Function Context {F16210}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2517
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2518
** The implementation of aggregate SQL functions use this routine to allocate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2519
** a structure for storing their state.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2520
** {F16211} The first time the sqlite3_aggregate_context() routine is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2521
** is called for a particular aggregate, SQLite allocates nBytes of memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2522
** zeros that memory, and returns a pointer to it.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2523
** {F16212} On second and subsequent calls to sqlite3_aggregate_context()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2524
** for the same aggregate function index, the same buffer is returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2525
** The implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2526
** of the aggregate can use the returned buffer to accumulate data.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2527
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2528
** {F16213} SQLite automatically frees the allocated buffer when the aggregate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2529
** query concludes. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2530
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2531
** The first parameter should be a copy of the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2532
** [sqlite3_context | SQL function context] that is the first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2533
** parameter to the callback routine that implements the aggregate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2534
** function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2535
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2536
** This routine must be called from the same thread in which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2537
** the aggregate SQL function is running.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2538
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2539
/*IMPORT_C*/ void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2540
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2541
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2542
** CAPI3REF: User Data For Functions {F16240}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2543
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2544
** {F16241} The sqlite3_user_data() interface returns a copy of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2545
** the pointer that was the pUserData parameter (the 5th parameter)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2546
** of the the [sqlite3_create_function()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2547
** and [sqlite3_create_function16()] routines that originally
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2548
** registered the application defined function. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2549
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2550
** {U16243} This routine must be called from the same thread in which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2551
** the application-defined function is running.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2552
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2553
/*IMPORT_C*/ void *sqlite3_user_data(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2554
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2555
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2556
** CAPI3REF: Function Auxiliary Data {F16270}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2557
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2558
** The following two functions may be used by scalar SQL functions to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2559
** associate meta-data with argument values. If the same value is passed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2560
** multiple invocations of the same SQL function during query execution, under
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2561
** some circumstances the associated meta-data may be preserved. This may
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2562
** be used, for example, to add a regular-expression matching scalar
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2563
** function. The compiled version of the regular expression is stored as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2564
** meta-data associated with the SQL value passed as the regular expression
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2565
** pattern.  The compiled regular expression can be reused on multiple
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2566
** invocations of the same function so that the original pattern string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2567
** does not need to be recompiled on each invocation.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2568
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2569
** {F16271}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2570
** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2571
** associated by the sqlite3_set_auxdata() function with the Nth argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2572
** value to the application-defined function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2573
** {F16272} If no meta-data has been ever been set for the Nth
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2574
** argument of the function, or if the cooresponding function parameter
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2575
** has changed since the meta-data was set, then sqlite3_get_auxdata()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2576
** returns a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2577
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2578
** {F16275} The sqlite3_set_auxdata() interface saves the meta-data
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2579
** pointed to by its 3rd parameter as the meta-data for the N-th
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2580
** argument of the application-defined function. {END} Subsequent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2581
** calls to sqlite3_get_auxdata() might return this data, if it has
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2582
** not been destroyed. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2583
** {F16277} If it is not NULL, SQLite will invoke the destructor 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2584
** function given by the 4th parameter to sqlite3_set_auxdata() on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2585
** the meta-data when the corresponding function parameter changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2586
** or when the SQL statement completes, whichever comes first. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2587
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2588
** In practice, meta-data is preserved between function calls for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2589
** expressions that are constant at compile time. This includes literal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2590
** values and SQL variables.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2591
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2592
** These routines must be called from the same thread in which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2593
** the SQL function is running.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2594
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2595
/*IMPORT_C*/ void *sqlite3_get_auxdata(sqlite3_context*, int N);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2596
/*IMPORT_C*/ void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2597
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2598
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2599
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2600
** CAPI3REF: Constants Defining Special Destructor Behavior {F10280}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2601
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2602
** These are special value for the destructor that is passed in as the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2603
** final argument to routines like [sqlite3_result_blob()].  If the destructor
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2604
** argument is SQLITE_STATIC, it means that the content pointer is constant
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2605
** and will never change.  It does not need to be destroyed.  The 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2606
** SQLITE_TRANSIENT value means that the content will likely change in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2607
** the near future and that SQLite should make its own private copy of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2608
** the content before returning.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2609
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2610
** The typedef is necessary to work around problems in certain
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2611
** C++ compilers.  See ticket #2191.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2612
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2613
typedef void (*sqlite3_destructor_type)(void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2614
#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2615
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2616
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2617
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2618
** CAPI3REF: Setting The Result Of An SQL Function {F16400}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2619
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2620
** These routines are used by the xFunc or xFinal callbacks that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2621
** implement SQL functions and aggregates.  See
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2622
** [sqlite3_create_function()] and [sqlite3_create_function16()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2623
** for additional information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2624
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2625
** These functions work very much like the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2626
** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2627
** to bind values to host parameters in prepared statements.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2628
** Refer to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2629
** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2630
** additional information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2631
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2632
** {F16402} The sqlite3_result_blob() interface sets the result from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2633
** an application defined function to be the BLOB whose content is pointed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2634
** to by the second parameter and which is N bytes long where N is the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2635
** third parameter. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2636
** {F16403} The sqlite3_result_zeroblob() inerfaces set the result of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2637
** the application defined function to be a BLOB containing all zero
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2638
** bytes and N bytes in size, where N is the value of the 2nd parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2639
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2640
** {F16407} The sqlite3_result_double() interface sets the result from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2641
** an application defined function to be a floating point value specified
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2642
** by its 2nd argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2643
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2644
** {F16409} The sqlite3_result_error() and sqlite3_result_error16() functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2645
** cause the implemented SQL function to throw an exception.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2646
** {F16411} SQLite uses the string pointed to by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2647
** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2648
** as the text of an error message. {F16412} SQLite interprets the error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2649
** message string from sqlite3_result_error() as UTF8.  {F16413} SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2650
** interprets the string from sqlite3_result_error16() as UTF16 in native
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2651
** byte order.  {F16414} If the third parameter to sqlite3_result_error()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2652
** or sqlite3_result_error16() is negative then SQLite takes as the error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2653
** message all text up through the first zero character.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2654
** {F16415} If the third parameter to sqlite3_result_error() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2655
** sqlite3_result_error16() is non-negative then SQLite takes that many
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2656
** bytes (not characters) from the 2nd parameter as the error message.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2657
** {F16417} The sqlite3_result_error() and sqlite3_result_error16()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2658
** routines make a copy private copy of the error message text before
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2659
** they return.  {END} Hence, the calling function can deallocate or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2660
** modify the text after they return without harm.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2661
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2662
** {F16421} The sqlite3_result_toobig() interface causes SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2663
** to throw an error indicating that a string or BLOB is to long
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2664
** to represent.  {F16422} The sqlite3_result_nomem() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2665
** causes SQLite to throw an exception indicating that the a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2666
** memory allocation failed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2667
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2668
** {F16431} The sqlite3_result_int() interface sets the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2669
** of the application-defined function to be the 32-bit signed integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2670
** value given in the 2nd argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2671
** {F16432} The sqlite3_result_int64() interface sets the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2672
** of the application-defined function to be the 64-bit signed integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2673
** value given in the 2nd argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2674
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2675
** {F16437} The sqlite3_result_null() interface sets the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2676
** of the application-defined function to be NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2677
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2678
** {F16441} The sqlite3_result_text(), sqlite3_result_text16(), 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2679
** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2680
** set the return value of the application-defined function to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2681
** a text string which is represented as UTF-8, UTF-16 native byte order,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2682
** UTF-16 little endian, or UTF-16 big endian, respectively.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2683
** {F16442} SQLite takes the text result from the application from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2684
** the 2nd parameter of the sqlite3_result_text* interfaces.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2685
** {F16444} If the 3rd parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2686
** is negative, then SQLite takes result text from the 2nd parameter 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2687
** through the first zero character.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2688
** {F16447} If the 3rd parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2689
** is non-negative, then as many bytes (not characters) of the text
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2690
** pointed to by the 2nd parameter are taken as the application-defined
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2691
** function result.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2692
** {F16451} If the 4th parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2693
** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2694
** function as the destructor on the text or blob result when it has
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2695
** finished using that result.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2696
** {F16453} If the 4th parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2697
** or sqlite3_result_blob is the special constant SQLITE_STATIC, then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2698
** SQLite assumes that the text or blob result is constant space and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2699
** does not copy the space or call a destructor when it has
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2700
** finished using that result.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2701
** {F16454} If the 4th parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2702
** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2703
** then SQLite makes a copy of the result into space obtained from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2704
** from [sqlite3_malloc()] before it returns.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2705
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2706
** {F16461} The sqlite3_result_value() interface sets the result of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2707
** the application-defined function to be a copy the [sqlite3_value]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2708
** object specified by the 2nd parameter.  {F16463} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2709
** sqlite3_result_value() interface makes a copy of the [sqlite3_value]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2710
** so that [sqlite3_value] specified in the parameter may change or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2711
** be deallocated after sqlite3_result_value() returns without harm.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2712
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2713
** {U16491} These routines are called from within the different thread 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2714
** than the one containing the application-defined function that recieved
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2715
** the [sqlite3_context] pointer, the results are undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2716
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2717
/*IMPORT_C*/ void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2718
/*IMPORT_C*/ void sqlite3_result_double(sqlite3_context*, double);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2719
/*IMPORT_C*/ void sqlite3_result_error(sqlite3_context*, const char*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2720
/*IMPORT_C*/ void sqlite3_result_error16(sqlite3_context*, const void*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2721
/*IMPORT_C*/ void sqlite3_result_error_toobig(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2722
/*IMPORT_C*/ void sqlite3_result_error_nomem(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2723
/*IMPORT_C*/ void sqlite3_result_int(sqlite3_context*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2724
/*IMPORT_C*/ void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2725
/*IMPORT_C*/ void sqlite3_result_null(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2726
/*IMPORT_C*/ void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2727
/*IMPORT_C*/ void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2728
/*IMPORT_C*/ void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2729
/*IMPORT_C*/ void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2730
/*IMPORT_C*/ void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2731
/*IMPORT_C*/ void sqlite3_result_zeroblob(sqlite3_context*, int n);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2732
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2733
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2734
** CAPI3REF: Define New Collating Sequences {F16600}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2735
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2736
** {F16601}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2737
** These functions are used to add new collation sequences to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2738
** [sqlite3*] handle specified as the first argument. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2739
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2740
** {F16602}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2741
** The name of the new collation sequence is specified as a UTF-8 string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2742
** for sqlite3_create_collation() and sqlite3_create_collation_v2()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2743
** and a UTF-16 string for sqlite3_create_collation16(). {F16603} In all cases
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2744
** the name is passed as the second function argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2745
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2746
** {F16604}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2747
** The third argument may be one of the constants [SQLITE_UTF8],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2748
** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2749
** routine expects to be passed pointers to strings encoded using UTF-8,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2750
** UTF-16 little-endian or UTF-16 big-endian respectively. {F16605} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2751
** third argument might also be [SQLITE_UTF16_ALIGNED] to indicate that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2752
** the routine expects pointers to 16-bit word aligned strings
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2753
** of UTF16 in the native byte order of the host computer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2754
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2755
** {F16607}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2756
** A pointer to the user supplied routine must be passed as the fifth
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2757
** argument. {F16609} If it is NULL, this is the same as deleting the collation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2758
** sequence (so that SQLite cannot call it anymore).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2759
** {F16611} Each time the application
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2760
** supplied function is invoked, it is passed a copy of the void* passed as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2761
** the fourth argument to sqlite3_create_collation() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2762
** sqlite3_create_collation16() as its first parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2763
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2764
** {F16612}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2765
** The remaining arguments to the application-supplied routine are two strings,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2766
** each represented by a [length, data] pair and encoded in the encoding
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2767
** that was passed as the third argument when the collation sequence was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2768
** registered. {END} The application defined collation routine should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2769
** return negative, zero or positive if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2770
** the first string is less than, equal to, or greater than the second
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2771
** string. i.e. (STRING1 - STRING2).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2772
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2773
** {F16615}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2774
** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2775
** excapt that it takes an extra argument which is a destructor for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2776
** the collation.  {F16617} The destructor is called when the collation is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2777
** destroyed and is passed a copy of the fourth parameter void* pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2778
** of the sqlite3_create_collation_v2().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2779
** {F16618}  Collations are destroyed when
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2780
** they are overridden by later calls to the collation creation functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2781
** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2782
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2783
/*IMPORT_C*/ int sqlite3_create_collation(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2784
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2785
  const char *zName, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2786
  int eTextRep, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2787
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2788
  int(*xCompare)(void*,int,const void*,int,const void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2789
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2790
/*IMPORT_C*/ int sqlite3_create_collation_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2791
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2792
  const char *zName, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2793
  int eTextRep, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2794
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2795
  int(*xCompare)(void*,int,const void*,int,const void*),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2796
  void(*xDestroy)(void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2797
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2798
/*IMPORT_C*/ int sqlite3_create_collation16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2799
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2800
  const char *zName, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2801
  int eTextRep, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2802
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2803
  int(*xCompare)(void*,int,const void*,int,const void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2804
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2805
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2806
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2807
** CAPI3REF: Collation Needed Callbacks {F16700}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2808
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2809
** {F16701}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2810
** To avoid having to register all collation sequences before a database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2811
** can be used, a single callback function may be registered with the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2812
** database handle to be called whenever an undefined collation sequence is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2813
** required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2814
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2815
** {F16702}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2816
** If the function is registered using the sqlite3_collation_needed() API,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2817
** then it is passed the names of undefined collation sequences as strings
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2818
** encoded in UTF-8. {F16703} If sqlite3_collation_needed16() is used, the names
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2819
** are passed as UTF-16 in machine native byte order. {F16704} A call to either
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2820
** function replaces any existing callback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2821
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2822
** {F16705} When the callback is invoked, the first argument passed is a copy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2823
** of the second argument to sqlite3_collation_needed() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2824
** sqlite3_collation_needed16(). {F16706} The second argument is the database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2825
** handle.  {F16707} The third argument is one of [SQLITE_UTF8],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2826
** [SQLITE_UTF16BE], or [SQLITE_UTF16LE], indicating the most
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2827
** desirable form of the collation sequence function required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2828
** {F16708} The fourth parameter is the name of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2829
** required collation sequence. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2830
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2831
** The callback function should register the desired collation using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2832
** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2833
** [sqlite3_create_collation_v2()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2834
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2835
/*IMPORT_C*/ int sqlite3_collation_needed(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2836
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2837
  void*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2838
  void(*)(void*,sqlite3*,int eTextRep,const char*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2839
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2840
/*IMPORT_C*/ int sqlite3_collation_needed16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2841
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2842
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2843
  void(*)(void*,sqlite3*,int eTextRep,const void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2844
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2845
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2846
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2847
** Specify the key for an encrypted database.  This routine should be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2848
** called right after sqlite3_open().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2849
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2850
** The code to implement this API is not available in the public release
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2851
** of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2852
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2853
/*IMPORT_C*/ int sqlite3_key(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2854
  sqlite3 *db,                   /* Database to be rekeyed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2855
  const void *pKey, int nKey     /* The key */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2856
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2857
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2858
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2859
** Change the key on an open database.  If the current database is not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2860
** encrypted, this routine will encrypt it.  If pNew==0 or nNew==0, the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2861
** database is decrypted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2862
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2863
** The code to implement this API is not available in the public release
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2864
** of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2865
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2866
/*IMPORT_C*/ int sqlite3_rekey(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2867
  sqlite3 *db,                   /* Database to be rekeyed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2868
  const void *pKey, int nKey     /* The new key */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2869
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2870
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2871
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2872
** CAPI3REF:  Suspend Execution For A Short Time {F10530}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2873
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2874
** {F10531} The sqlite3_sleep() function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2875
** causes the current thread to suspend execution
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2876
** for at least a number of milliseconds specified in its parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2877
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2878
** {F10532} If the operating system does not support sleep requests with 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2879
** millisecond time resolution, then the time will be rounded up to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2880
** the nearest second. {F10533} The number of milliseconds of sleep actually 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2881
** requested from the operating system is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2882
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2883
** {F10534} SQLite implements this interface by calling the xSleep()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2884
** method of the default [sqlite3_vfs] object. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2885
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2886
/*IMPORT_C*/ int sqlite3_sleep(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2887
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2888
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2889
** CAPI3REF:  Name Of The Folder Holding Temporary Files {F10310}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2890
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2891
** If this global variable is made to point to a string which is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2892
** the name of a folder (a.ka. directory), then all temporary files
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2893
** created by SQLite will be placed in that directory.  If this variable
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2894
** is NULL pointer, then SQLite does a search for an appropriate temporary
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2895
** file directory.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2896
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2897
** It is not safe to modify this variable once a database connection
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2898
** has been opened.  It is intended that this variable be set once
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2899
** as part of process initialization and before any SQLite interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2900
** routines have been call and remain unchanged thereafter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2901
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2902
SQLITE_EXTERN char *sqlite3_temp_directory;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2903
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2904
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2905
** CAPI3REF:  Test To See If The Database Is In Auto-Commit Mode {F12930}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2906
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2907
** {F12931} The sqlite3_get_autocommit() interfaces returns non-zero or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2908
** zero if the given database connection is or is not in autocommit mode,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2909
** respectively. {F12932}  Autocommit mode is on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2910
** by default.  {F12933} Autocommit mode is disabled by a BEGIN statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2911
** {F12934} Autocommit mode is reenabled by a COMMIT or ROLLBACK. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2912
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2913
** If certain kinds of errors occur on a statement within a multi-statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2914
** transactions (errors including [SQLITE_FULL], [SQLITE_IOERR], 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2915
** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2916
** transaction might be rolled back automatically.  {F12935} The only way to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2917
** find out if SQLite automatically rolled back the transaction after
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2918
** an error is to use this function. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2919
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2920
** {U12936} If another thread changes the autocommit status of the database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2921
** connection while this routine is running, then the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2922
** is undefined. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2923
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2924
/*IMPORT_C*/ int sqlite3_get_autocommit(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2925
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2926
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2927
** CAPI3REF:  Find The Database Handle Of A Prepared Statement {F13120}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2928
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2929
** {F13121} The sqlite3_db_handle interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2930
** returns the [sqlite3*] database handle to which a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2931
** [sqlite3_stmt | prepared statement] belongs.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2932
** {F13122} the database handle returned by sqlite3_db_handle
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2933
** is the same database handle that was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2934
** the first argument to the [sqlite3_prepare_v2()] or its variants
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2935
** that was used to create the statement in the first place.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2936
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2937
/*IMPORT_C*/ sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2938
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2939
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2940
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2941
** CAPI3REF: Commit And Rollback Notification Callbacks {F12950}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2942
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2943
** {F12951} The sqlite3_commit_hook() interface registers a callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2944
** function to be invoked whenever a transaction is committed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2945
** {F12952} Any callback set by a previous call to sqlite3_commit_hook()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2946
** for the same database connection is overridden.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2947
** {F12953} The sqlite3_rollback_hook() interface registers a callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2948
** function to be invoked whenever a transaction is committed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2949
** {F12954} Any callback set by a previous call to sqlite3_commit_hook()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2950
** for the same database connection is overridden.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2951
** {F12956} The pArg argument is passed through
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2952
** to the callback.  {F12957} If the callback on a commit hook function 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2953
** returns non-zero, then the commit is converted into a rollback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2954
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2955
** {F12958} If another function was previously registered, its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2956
** pArg value is returned.  Otherwise NULL is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2957
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2958
** {F12959} Registering a NULL function disables the callback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2959
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2960
** {F12961} For the purposes of this API, a transaction is said to have been 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2961
** rolled back if an explicit "ROLLBACK" statement is executed, or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2962
** an error or constraint causes an implicit rollback to occur.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2963
** {F12962} The rollback callback is not invoked if a transaction is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2964
** automatically rolled back because the database connection is closed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2965
** {F12964} The rollback callback is not invoked if a transaction is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2966
** rolled back because a commit callback returned non-zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2967
** <todo> Check on this </todo> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2968
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2969
** These are experimental interfaces and are subject to change.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2970
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2971
/*IMPORT_C*/ void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2972
/*IMPORT_C*/ void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2973
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2974
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2975
** CAPI3REF: Data Change Notification Callbacks {F12970}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2976
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2977
** {F12971} The sqlite3_update_hook() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2978
** registers a callback function with the database connection identified by the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2979
** first argument to be invoked whenever a row is updated, inserted or deleted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2980
** {F12972} Any callback set by a previous call to this function for the same 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2981
** database connection is overridden.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2982
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2983
** {F12974} The second argument is a pointer to the function to invoke when a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2984
** row is updated, inserted or deleted. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2985
** {F12976} The first argument to the callback is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2986
** a copy of the third argument to sqlite3_update_hook().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2987
** {F12977} The second callback 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2988
** argument is one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2989
** depending on the operation that caused the callback to be invoked.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2990
** {F12978} The third and 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2991
** fourth arguments to the callback contain pointers to the database and 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2992
** table name containing the affected row.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2993
** {F12979} The final callback parameter is 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2994
** the rowid of the row.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2995
** {F12981} In the case of an update, this is the rowid after 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2996
** the update takes place.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2997
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2998
** {F12983} The update hook is not invoked when internal system tables are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2999
** modified (i.e. sqlite_master and sqlite_sequence).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3000
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3001
** {F12984} If another function was previously registered, its pArg value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3002
** is returned.  {F12985} Otherwise NULL is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3003
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3004
/*IMPORT_C*/ void *sqlite3_update_hook(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3005
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3006
  void(*)(void *,int ,char const *,char const *,sqlite3_int64),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3007
  void*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3008
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3009
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3010
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3011
** CAPI3REF:  Enable Or Disable Shared Pager Cache {F10330}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3012
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3013
** {F10331}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3014
** This routine enables or disables the sharing of the database cache
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3015
** and schema data structures between connections to the same database.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3016
** {F10332}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3017
** Sharing is enabled if the argument is true and disabled if the argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3018
** is false.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3019
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3020
** {F10333} Cache sharing is enabled and disabled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3021
** for an entire process. {END} This is a change as of SQLite version 3.5.0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3022
** In prior versions of SQLite, sharing was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3023
** enabled or disabled for each thread separately.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3024
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3025
** {F10334}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3026
** The cache sharing mode set by this interface effects all subsequent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3027
** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3028
** {F10335} Existing database connections continue use the sharing mode
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3029
** that was in effect at the time they were opened. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3030
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3031
** Virtual tables cannot be used with a shared cache.  {F10336} When shared
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3032
** cache is enabled, the [sqlite3_create_module()] API used to register
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3033
** virtual tables will always return an error. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3034
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3035
** {F10337} This routine returns [SQLITE_OK] if shared cache was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3036
** enabled or disabled successfully.  {F10338} An [SQLITE_ERROR | error code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3037
** is returned otherwise. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3038
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3039
** {F10339} Shared cache is disabled by default. {END} But this might change in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3040
** future releases of SQLite.  Applications that care about shared
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3041
** cache setting should set it explicitly.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3042
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3043
/*IMPORT_C*/ int sqlite3_enable_shared_cache(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3044
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3045
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3046
** CAPI3REF:  Attempt To Free Heap Memory {F17340}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3047
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3048
** {F17341} The sqlite3_release_memory() interface attempts to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3049
** free N bytes of heap memory by deallocating non-essential memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3050
** allocations held by the database labrary. {END}  Memory used
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3051
** to cache database pages to improve performance is an example of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3052
** non-essential memory.  {F16342} sqlite3_release_memory() returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3053
** the number of bytes actually freed, which might be more or less
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3054
** than the amount requested.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3055
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3056
/*IMPORT_C*/ int sqlite3_release_memory(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3057
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3058
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3059
** CAPI3REF:  Impose A Limit On Heap Size {F17350}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3060
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3061
** {F16351} The sqlite3_soft_heap_limit() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3062
** places a "soft" limit on the amount of heap memory that may be allocated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3063
** by SQLite. {F16352} If an internal allocation is requested 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3064
** that would exceed the soft heap limit, [sqlite3_release_memory()] is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3065
** invoked one or more times to free up some space before the allocation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3066
** is made. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3067
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3068
** {F16353} The limit is called "soft", because if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3069
** [sqlite3_release_memory()] cannot
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3070
** free sufficient memory to prevent the limit from being exceeded,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3071
** the memory is allocated anyway and the current operation proceeds.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3072
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3073
** {F16354}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3074
** A negative or zero value for N means that there is no soft heap limit and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3075
** [sqlite3_release_memory()] will only be called when memory is exhausted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3076
** {F16355} The default value for the soft heap limit is zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3077
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3078
** SQLite makes a best effort to honor the soft heap limit.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3079
** {F16356} But if the soft heap limit cannot honored, execution will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3080
** continue without error or notification. {END}  This is why the limit is 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3081
** called a "soft" limit.  It is advisory only.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3082
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3083
** Prior to SQLite version 3.5.0, this routine only constrained the memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3084
** allocated by a single thread - the same thread in which this routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3085
** runs.  Beginning with SQLite version 3.5.0, the soft heap limit is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3086
** applied to all threads. {F16357} The value specified for the soft heap limit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3087
** is an upper bound on the total memory allocation for all threads. {END}  In
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3088
** version 3.5.0 there is no mechanism for limiting the heap usage for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3089
** individual threads.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3090
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3091
/*IMPORT_C*/ void sqlite3_soft_heap_limit(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3092
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3093
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3094
** CAPI3REF:  Extract Metadata About A Column Of A Table {F12850}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3095
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3096
** This routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3097
** returns meta-data about a specific column of a specific database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3098
** table accessible using the connection handle passed as the first function 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3099
** argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3100
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3101
** The column is identified by the second, third and fourth parameters to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3102
** this function. The second parameter is either the name of the database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3103
** (i.e. "main", "temp" or an attached database) containing the specified
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3104
** table or NULL. If it is NULL, then all attached databases are searched
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3105
** for the table using the same algorithm as the database engine uses to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3106
** resolve unqualified table references.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3107
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3108
** The third and fourth parameters to this function are the table and column 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3109
** name of the desired column, respectively. Neither of these parameters 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3110
** may be NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3111
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3112
** Meta information is returned by writing to the memory locations passed as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3113
** the 5th and subsequent parameters to this function. Any of these 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3114
** arguments may be NULL, in which case the corresponding element of meta 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3115
** information is ommitted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3116
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3117
** <pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3118
** Parameter     Output Type      Description
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3119
** -----------------------------------
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3120
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3121
**   5th         const char*      Data type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3122
**   6th         const char*      Name of the default collation sequence 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3123
**   7th         int              True if the column has a NOT NULL constraint
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3124
**   8th         int              True if the column is part of the PRIMARY KEY
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3125
**   9th         int              True if the column is AUTOINCREMENT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3126
** </pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3127
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3128
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3129
** The memory pointed to by the character pointers returned for the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3130
** declaration type and collation sequence is valid only until the next 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3131
** call to any sqlite API function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3132
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3133
** If the specified table is actually a view, then an error is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3134
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3135
** If the specified column is "rowid", "oid" or "_rowid_" and an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3136
** INTEGER PRIMARY KEY column has been explicitly declared, then the output 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3137
** parameters are set for the explicitly declared column. If there is no
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3138
** explicitly declared IPK column, then the output parameters are set as 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3139
** follows:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3140
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3141
** <pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3142
**     data type: "INTEGER"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3143
**     collation sequence: "BINARY"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3144
**     not null: 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3145
**     primary key: 1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3146
**     auto increment: 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3147
** </pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3148
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3149
** This function may load one or more schemas from database files. If an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3150
** error occurs during this process, or if the requested table or column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3151
** cannot be found, an SQLITE error code is returned and an error message
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3152
** left in the database handle (to be retrieved using sqlite3_errmsg()).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3153
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3154
** This API is only available if the library was compiled with the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3155
** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3156
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3157
/*IMPORT_C*/ int sqlite3_table_column_metadata(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3158
  sqlite3 *db,                /* Connection handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3159
  const char *zDbName,        /* Database name or NULL */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3160
  const char *zTableName,     /* Table name */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3161
  const char *zColumnName,    /* Column name */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3162
  char const **pzDataType,    /* OUTPUT: Declared data type */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3163
  char const **pzCollSeq,     /* OUTPUT: Collation sequence name */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3164
  int *pNotNull,              /* OUTPUT: True if NOT NULL constraint exists */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3165
  int *pPrimaryKey,           /* OUTPUT: True if column part of PK */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3166
  int *pAutoinc               /* OUTPUT: True if column is auto-increment */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3167
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3168
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3169
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3170
** CAPI3REF: Load An Extension {F12600}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3171
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3172
** {F12601} The sqlite3_load_extension() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3173
** attempts to load an SQLite extension library contained in the file
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3174
** zFile. {F12602} The entry point is zProc. {F12603} zProc may be 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3175
** in which case the name of the entry point defaults
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3176
** to "sqlite3_extension_init".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3177
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3178
** {F12604} The sqlite3_load_extension() interface shall
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3179
** return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3180
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3181
** {F12605}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3182
** If an error occurs and pzErrMsg is not 0, then the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3183
** sqlite3_load_extension() interface shall attempt to fill *pzErrMsg with 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3184
** error message text stored in memory obtained from [sqlite3_malloc()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3185
** {END}  The calling function should free this memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3186
** by calling [sqlite3_free()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3187
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3188
** {F12606}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3189
** Extension loading must be enabled using [sqlite3_enable_load_extension()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3190
** prior to calling this API or an error will be returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3191
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3192
/*IMPORT_C*/ int sqlite3_load_extension(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3193
  sqlite3 *db,          /* Load the extension into this database connection */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3194
  const char *zFile,    /* Name of the shared library containing extension */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3195
  const char *zProc,    /* Entry point.  Derived from zFile if 0 */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3196
  char **pzErrMsg       /* Put error message here if not 0 */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3197
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3198
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3199
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3200
** CAPI3REF:  Enable Or Disable Extension Loading {F12620}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3201
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3202
** So as not to open security holes in older applications that are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3203
** unprepared to deal with extension loading, and as a means of disabling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3204
** extension loading while evaluating user-entered SQL, the following
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3205
** API is provided to turn the [sqlite3_load_extension()] mechanism on and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3206
** off.  {F12622} It is off by default. {END} See ticket #1863.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3207
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3208
** {F12621} Call the sqlite3_enable_load_extension() routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3209
** with onoff==1 to turn extension loading on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3210
** and call it with onoff==0 to turn it back off again. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3211
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3212
/*IMPORT_C*/ int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3213
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3214
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3215
** CAPI3REF: Make Arrangements To Automatically Load An Extension {F12640}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3216
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3217
** {F12641} This function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3218
** registers an extension entry point that is automatically invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3219
** whenever a new database connection is opened using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3220
** [sqlite3_open()], [sqlite3_open16()], or [sqlite3_open_v2()]. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3221
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3222
** This API can be invoked at program startup in order to register
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3223
** one or more statically linked extensions that will be available
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3224
** to all new database connections.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3225
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3226
** {F12642} Duplicate extensions are detected so calling this routine multiple
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3227
** times with the same extension is harmless.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3228
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3229
** {F12643} This routine stores a pointer to the extension in an array
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3230
** that is obtained from sqlite_malloc(). {END} If you run a memory leak
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3231
** checker on your program and it reports a leak because of this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3232
** array, then invoke [sqlite3_reset_auto_extension()] prior
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3233
** to shutdown to free the memory.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3234
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3235
** {F12644} Automatic extensions apply across all threads. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3236
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3237
** This interface is experimental and is subject to change or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3238
** removal in future releases of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3239
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3240
/*IMPORT_C*/ int sqlite3_auto_extension(void *xEntryPoint);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3241
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3242
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3243
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3244
** CAPI3REF: Reset Automatic Extension Loading {F12660}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3245
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3246
** {F12661} This function disables all previously registered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3247
** automatic extensions. {END}  This
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3248
** routine undoes the effect of all prior [sqlite3_automatic_extension()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3249
** calls.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3250
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3251
** {F12662} This call disabled automatic extensions in all threads. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3252
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3253
** This interface is experimental and is subject to change or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3254
** removal in future releases of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3255
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3256
/*IMPORT_C*/ void sqlite3_reset_auto_extension(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3257
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3258
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3259
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3260
****** EXPERIMENTAL - subject to change without notice **************
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3261
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3262
** The interface to the virtual-table mechanism is currently considered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3263
** to be experimental.  The interface might change in incompatible ways.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3264
** If this is a problem for you, do not use the interface at this time.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3265
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3266
** When the virtual-table mechanism stablizes, we will declare the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3267
** interface fixed, support it indefinitely, and remove this comment.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3268
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3269
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3270
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3271
** Structures used by the virtual table interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3272
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3273
typedef struct sqlite3_vtab sqlite3_vtab;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3274
typedef struct sqlite3_index_info sqlite3_index_info;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3275
typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3276
typedef struct sqlite3_module sqlite3_module;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3277
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3278
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3279
** A module is a class of virtual tables.  Each module is defined
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3280
** by an instance of the following structure.  This structure consists
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3281
** mostly of methods for the module.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3282
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3283
struct sqlite3_module {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3284
  int iVersion;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3285
  int (*xCreate)(sqlite3*, void *pAux,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3286
               int argc, const char *const*argv,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3287
               sqlite3_vtab **ppVTab, char**);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3288
  int (*xConnect)(sqlite3*, void *pAux,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3289
               int argc, const char *const*argv,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3290
               sqlite3_vtab **ppVTab, char**);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3291
  int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3292
  int (*xDisconnect)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3293
  int (*xDestroy)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3294
  int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3295
  int (*xClose)(sqlite3_vtab_cursor*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3296
  int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3297
                int argc, sqlite3_value **argv);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3298
  int (*xNext)(sqlite3_vtab_cursor*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3299
  int (*xEof)(sqlite3_vtab_cursor*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3300
  int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3301
  int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3302
  int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3303
  int (*xBegin)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3304
  int (*xSync)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3305
  int (*xCommit)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3306
  int (*xRollback)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3307
  int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3308
                       void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3309
                       void **ppArg);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3310
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3311
  int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3312
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3313
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3314
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3315
** The sqlite3_index_info structure and its substructures is used to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3316
** pass information into and receive the reply from the xBestIndex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3317
** method of an sqlite3_module.  The fields under **Inputs** are the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3318
** inputs to xBestIndex and are read-only.  xBestIndex inserts its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3319
** results into the **Outputs** fields.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3320
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3321
** The aConstraint[] array records WHERE clause constraints of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3322
** form:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3323
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3324
**         column OP expr
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3325
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3326
** Where OP is =, &lt;, &lt;=, &gt;, or &gt;=.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3327
** The particular operator is stored
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3328
** in aConstraint[].op.  The index of the column is stored in 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3329
** aConstraint[].iColumn.  aConstraint[].usable is TRUE if the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3330
** expr on the right-hand side can be evaluated (and thus the constraint
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3331
** is usable) and false if it cannot.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3332
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3333
** The optimizer automatically inverts terms of the form "expr OP column"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3334
** and makes other simplifications to the WHERE clause in an attempt to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3335
** get as many WHERE clause terms into the form shown above as possible.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3336
** The aConstraint[] array only reports WHERE clause terms in the correct
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3337
** form that refer to the particular virtual table being queried.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3338
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3339
** Information about the ORDER BY clause is stored in aOrderBy[].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3340
** Each term of aOrderBy records a column of the ORDER BY clause.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3341
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3342
** The xBestIndex method must fill aConstraintUsage[] with information
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3343
** about what parameters to pass to xFilter.  If argvIndex>0 then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3344
** the right-hand side of the corresponding aConstraint[] is evaluated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3345
** and becomes the argvIndex-th entry in argv.  If aConstraintUsage[].omit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3346
** is true, then the constraint is assumed to be fully handled by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3347
** virtual table and is not checked again by SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3348
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3349
** The idxNum and idxPtr values are recorded and passed into xFilter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3350
** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3351
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3352
** The orderByConsumed means that output from xFilter will occur in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3353
** the correct order to satisfy the ORDER BY clause so that no separate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3354
** sorting step is required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3355
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3356
** The estimatedCost value is an estimate of the cost of doing the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3357
** particular lookup.  A full scan of a table with N entries should have
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3358
** a cost of N.  A binary search of a table of N entries should have a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3359
** cost of approximately log(N).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3360
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3361
struct sqlite3_index_info {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3362
  /* Inputs */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3363
  int nConstraint;           /* Number of entries in aConstraint */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3364
  struct sqlite3_index_constraint {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3365
     int iColumn;              /* Column on left-hand side of constraint */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3366
     unsigned char op;         /* Constraint operator */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3367
     unsigned char usable;     /* True if this constraint is usable */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3368
     int iTermOffset;          /* Used internally - xBestIndex should ignore */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3369
  } *aConstraint;            /* Table of WHERE clause constraints */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3370
  int nOrderBy;              /* Number of terms in the ORDER BY clause */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3371
  struct sqlite3_index_orderby {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3372
     int iColumn;              /* Column number */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3373
     unsigned char desc;       /* True for DESC.  False for ASC. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3374
  } *aOrderBy;               /* The ORDER BY clause */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3375
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3376
  /* Outputs */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3377
  struct sqlite3_index_constraint_usage {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3378
    int argvIndex;           /* if >0, constraint is part of argv to xFilter */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3379
    unsigned char omit;      /* Do not code a test for this constraint */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3380
  } *aConstraintUsage;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3381
  int idxNum;                /* Number used to identify the index */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3382
  char *idxStr;              /* String, possibly obtained from sqlite3_malloc */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3383
  int needToFreeIdxStr;      /* Free idxStr using sqlite3_free() if true */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3384
  int orderByConsumed;       /* True if output is already ordered */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3385
  double estimatedCost;      /* Estimated cost of using this index */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3386
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3387
#define SQLITE_INDEX_CONSTRAINT_EQ    2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3388
#define SQLITE_INDEX_CONSTRAINT_GT    4
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3389
#define SQLITE_INDEX_CONSTRAINT_LE    8
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3390
#define SQLITE_INDEX_CONSTRAINT_LT    16
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3391
#define SQLITE_INDEX_CONSTRAINT_GE    32
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3392
#define SQLITE_INDEX_CONSTRAINT_MATCH 64
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3393
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3394
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3395
** This routine is used to register a new module name with an SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3396
** connection.  Module names must be registered before creating new
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3397
** virtual tables on the module, or before using preexisting virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3398
** tables of the module.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3399
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3400
/*IMPORT_C*/ int sqlite3_create_module(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3401
  sqlite3 *db,               /* SQLite connection to register module with */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3402
  const char *zName,         /* Name of the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3403
  const sqlite3_module *,    /* Methods for the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3404
  void *                     /* Client data for xCreate/xConnect */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3405
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3406
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3407
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3408
** This routine is identical to the sqlite3_create_module() method above,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3409
** except that it allows a destructor function to be specified. It is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3410
** even more experimental than the rest of the virtual tables API.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3411
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3412
/*IMPORT_C*/ int sqlite3_create_module_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3413
  sqlite3 *db,               /* SQLite connection to register module with */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3414
  const char *zName,         /* Name of the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3415
  const sqlite3_module *,    /* Methods for the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3416
  void *,                    /* Client data for xCreate/xConnect */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3417
  void(*xDestroy)(void*)     /* Module destructor function */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3418
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3419
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3420
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3421
** Every module implementation uses a subclass of the following structure
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3422
** to describe a particular instance of the module.  Each subclass will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3423
** be tailored to the specific needs of the module implementation.   The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3424
** purpose of this superclass is to define certain fields that are common
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3425
** to all module implementations.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3426
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3427
** Virtual tables methods can set an error message by assigning a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3428
** string obtained from sqlite3_mprintf() to zErrMsg.  The method should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3429
** take care that any prior string is freed by a call to sqlite3_free()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3430
** prior to assigning a new string to zErrMsg.  After the error message
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3431
** is delivered up to the client application, the string will be automatically
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3432
** freed by sqlite3_free() and the zErrMsg field will be zeroed.  Note
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3433
** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3434
** since virtual tables are commonly implemented in loadable extensions which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3435
** do not have access to sqlite3MPrintf() or sqlite3Free().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3436
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3437
struct sqlite3_vtab {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3438
  const sqlite3_module *pModule;  /* The module for this virtual table */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3439
  int nRef;                       /* Used internally */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3440
  char *zErrMsg;                  /* Error message from sqlite3_mprintf() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3441
  /* Virtual table implementations will typically add additional fields */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3442
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3443
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3444
/* Every module implementation uses a subclass of the following structure
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3445
** to describe cursors that point into the virtual table and are used
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3446
** to loop through the virtual table.  Cursors are created using the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3447
** xOpen method of the module.  Each module implementation will define
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3448
** the content of a cursor structure to suit its own needs.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3449
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3450
** This superclass exists in order to define fields of the cursor that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3451
** are common to all implementations.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3452
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3453
struct sqlite3_vtab_cursor {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3454
  sqlite3_vtab *pVtab;      /* Virtual table of this cursor */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3455
  /* Virtual table implementations will typically add additional fields */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3456
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3457
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3458
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3459
** The xCreate and xConnect methods of a module use the following API
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3460
** to declare the format (the names and datatypes of the columns) of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3461
** the virtual tables they implement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3462
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3463
/*IMPORT_C*/ int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3464
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3465
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3466
** Virtual tables can provide alternative implementations of functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3467
** using the xFindFunction method.  But global versions of those functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3468
** must exist in order to be overloaded.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3469
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3470
** This API makes sure a global version of a function with a particular
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3471
** name and number of parameters exists.  If no such function exists
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3472
** before this API is called, a new function is created.  The implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3473
** of the new function always causes an exception to be thrown.  So
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3474
** the new function is not good for anything by itself.  Its only
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3475
** purpose is to be a place-holder function that can be overloaded
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3476
** by virtual tables.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3477
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3478
** This API should be considered part of the virtual table interface,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3479
** which is experimental and subject to change.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3480
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3481
/*IMPORT_C*/ int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3482
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3483
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3484
** The interface to the virtual-table mechanism defined above (back up
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3485
** to a comment remarkably similar to this one) is currently considered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3486
** to be experimental.  The interface might change in incompatible ways.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3487
** If this is a problem for you, do not use the interface at this time.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3488
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3489
** When the virtual-table mechanism stabilizes, we will declare the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3490
** interface fixed, support it indefinitely, and remove this comment.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3491
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3492
****** EXPERIMENTAL - subject to change without notice **************
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3493
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3494
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3495
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3496
** CAPI3REF: A Handle To An Open BLOB {F17800}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3497
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3498
** An instance of the following opaque structure is used to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3499
** represent an blob-handle.  A blob-handle is created by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3500
** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3501
** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3502
** can be used to read or write small subsections of the blob.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3503
** The [sqlite3_blob_bytes()] interface returns the size of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3504
** blob in bytes.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3505
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3506
typedef struct sqlite3_blob sqlite3_blob;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3507
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3508
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3509
** CAPI3REF: Open A BLOB For Incremental I/O {F17810}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3510
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3511
** {F17811} This interfaces opens a handle to the blob located
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3512
** in row iRow,, column zColumn, table zTable in database zDb;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3513
** in other words,  the same blob that would be selected by:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3514
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3515
** <pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3516
**     SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3517
** </pre> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3518
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3519
** {F17812} If the flags parameter is non-zero, the blob is opened for 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3520
** read and write access. If it is zero, the blob is opened for read 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3521
** access. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3522
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3523
** {F17813} On success, [SQLITE_OK] is returned and the new 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3524
** [sqlite3_blob | blob handle] is written to *ppBlob. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3525
** {F17814} Otherwise an error code is returned and 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3526
** any value written to *ppBlob should not be used by the caller.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3527
** {F17815} This function sets the database-handle error code and message
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3528
** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3529
** <todo>We should go through and mark all interfaces that behave this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3530
** way with a similar statement</todo>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3531
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3532
/*IMPORT_C*/ int sqlite3_blob_open(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3533
  sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3534
  const char *zDb,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3535
  const char *zTable,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3536
  const char *zColumn,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3537
  sqlite3_int64 iRow,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3538
  int flags,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3539
  sqlite3_blob **ppBlob
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3540
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3541
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3542
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3543
** CAPI3REF:  Close A BLOB Handle {F17830}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3544
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3545
** Close an open [sqlite3_blob | blob handle].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3546
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3547
** {F17831} Closing a BLOB shall cause the current transaction to commit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3548
** if there are no other BLOBs, no pending prepared statements, and the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3549
** database connection is in autocommit mode.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3550
** {F17832} If any writes were made to the BLOB, they might be held in cache
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3551
** until the close operation if they will fit. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3552
** Closing the BLOB often forces the changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3553
** out to disk and so if any I/O errors occur, they will likely occur
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3554
** at the time when the BLOB is closed.  {F17833} Any errors that occur during
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3555
** closing are reported as a non-zero return value.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3556
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3557
** {F17839} The BLOB is closed unconditionally.  Even if this routine returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3558
** an error code, the BLOB is still closed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3559
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3560
/*IMPORT_C*/ int sqlite3_blob_close(sqlite3_blob *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3561
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3562
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3563
** CAPI3REF:  Return The Size Of An Open BLOB {F17805}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3564
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3565
** {F16806} Return the size in bytes of the blob accessible via the open 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3566
** [sqlite3_blob | blob-handle] passed as an argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3567
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3568
/*IMPORT_C*/ int sqlite3_blob_bytes(sqlite3_blob *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3569
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3570
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3571
** CAPI3REF:  Read Data From A BLOB Incrementally {F17850}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3572
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3573
** This function is used to read data from an open 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3574
** [sqlite3_blob | blob-handle] into a caller supplied buffer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3575
** {F17851} n bytes of data are copied into buffer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3576
** z from the open blob, starting at offset iOffset.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3577
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3578
** {F17852} If offset iOffset is less than n bytes from the end of the blob, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3579
** [SQLITE_ERROR] is returned and no data is read.  {F17853} If n is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3580
** less than zero [SQLITE_ERROR] is returned and no data is read.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3581
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3582
** {F17854} On success, SQLITE_OK is returned. Otherwise, an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3583
** [SQLITE_ERROR | SQLite error code] or an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3584
** [SQLITE_IOERR_READ | extended error code] is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3585
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3586
/*IMPORT_C*/ int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3587
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3588
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3589
** CAPI3REF:  Write Data Into A BLOB Incrementally {F17870}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3590
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3591
** This function is used to write data into an open 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3592
** [sqlite3_blob | blob-handle] from a user supplied buffer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3593
** {F17871} n bytes of data are copied from the buffer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3594
** pointed to by z into the open blob, starting at offset iOffset.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3595
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3596
** {F17872} If the [sqlite3_blob | blob-handle] passed as the first argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3597
** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3598
*** was zero), this function returns [SQLITE_READONLY].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3599
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3600
** {F17873} This function may only modify the contents of the blob; it is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3601
** not possible to increase the size of a blob using this API.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3602
** {F17874} If offset iOffset is less than n bytes from the end of the blob, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3603
** [SQLITE_ERROR] is returned and no data is written.  {F17875} If n is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3604
** less than zero [SQLITE_ERROR] is returned and no data is written.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3605
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3606
** {F17876} On success, SQLITE_OK is returned. Otherwise, an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3607
** [SQLITE_ERROR | SQLite error code] or an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3608
** [SQLITE_IOERR_READ | extended error code] is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3609
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3610
/*IMPORT_C*/ int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3611
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3612
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3613
** CAPI3REF:  Virtual File System Objects {F11200}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3614
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3615
** A virtual filesystem (VFS) is an [sqlite3_vfs] object
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3616
** that SQLite uses to interact
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3617
** with the underlying operating system.  Most builds come with a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3618
** single default VFS that is appropriate for the host computer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3619
** New VFSes can be registered and existing VFSes can be unregistered.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3620
** The following interfaces are provided.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3621
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3622
** {F11201} The sqlite3_vfs_find() interface returns a pointer to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3623
** a VFS given its name.  {F11202} Names are case sensitive.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3624
** {F11203} Names are zero-terminated UTF-8 strings.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3625
** {F11204} If there is no match, a NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3626
** pointer is returned. {F11205} If zVfsName is NULL then the default 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3627
** VFS is returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3628
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3629
** {F11210} New VFSes are registered with sqlite3_vfs_register().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3630
** {F11211} Each new VFS becomes the default VFS if the makeDflt flag is set.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3631
** {F11212} The same VFS can be registered multiple times without injury.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3632
** {F11213} To make an existing VFS into the default VFS, register it again
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3633
** with the makeDflt flag set. {U11214} If two different VFSes with the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3634
** same name are registered, the behavior is undefined.  {U11215} If a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3635
** VFS is registered with a name that is NULL or an empty string,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3636
** then the behavior is undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3637
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3638
** {F11220} Unregister a VFS with the sqlite3_vfs_unregister() interface.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3639
** {F11221} If the default VFS is unregistered, another VFS is chosen as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3640
** the default.  The choice for the new VFS is arbitrary.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3641
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3642
/*IMPORT_C*/ sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3643
/*IMPORT_C*/ int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3644
/*IMPORT_C*/ int sqlite3_vfs_unregister(sqlite3_vfs*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3645
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3646
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3647
** CAPI3REF: Mutexes {F17000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3648
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3649
** The SQLite core uses these routines for thread
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3650
** synchronization.  Though they are intended for internal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3651
** use by SQLite, code that links against SQLite is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3652
** permitted to use any of these routines.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3653
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3654
** The SQLite source code contains multiple implementations 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3655
** of these mutex routines.  An appropriate implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3656
** is selected automatically at compile-time.  The following
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3657
** implementations are available in the SQLite core:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3658
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3659
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3660
** <li>   SQLITE_MUTEX_OS2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3661
** <li>   SQLITE_MUTEX_PTHREAD
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3662
** <li>   SQLITE_MUTEX_W32
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3663
** <li>   SQLITE_MUTEX_NOOP
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3664
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3665
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3666
** The SQLITE_MUTEX_NOOP implementation is a set of routines 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3667
** that does no real locking and is appropriate for use in 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3668
** a single-threaded application.  The SQLITE_MUTEX_OS2,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3669
** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3670
** are appropriate for use on os/2, unix, and windows.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3671
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3672
** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3673
** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3674
** implementation is included with the library.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3675
** mutex interface routines defined here become external
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3676
** references in the SQLite library for which implementations
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3677
** must be provided by the application.  This facility allows an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3678
** application that links against SQLite to provide its own mutex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3679
** implementation without having to modify the SQLite core.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3680
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3681
** {F17011} The sqlite3_mutex_alloc() routine allocates a new
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3682
** mutex and returns a pointer to it. {F17012} If it returns NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3683
** that means that a mutex could not be allocated. {F17013} SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3684
** will unwind its stack and return an error. {F17014} The argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3685
** to sqlite3_mutex_alloc() is one of these integer constants:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3686
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3687
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3688
** <li>  SQLITE_MUTEX_FAST
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3689
** <li>  SQLITE_MUTEX_RECURSIVE
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3690
** <li>  SQLITE_MUTEX_STATIC_MASTER
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3691
** <li>  SQLITE_MUTEX_STATIC_MEM
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3692
** <li>  SQLITE_MUTEX_STATIC_MEM2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3693
** <li>  SQLITE_MUTEX_STATIC_PRNG
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3694
** <li>  SQLITE_MUTEX_STATIC_LRU
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3695
** </ul> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3696
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3697
** {F17015} The first two constants cause sqlite3_mutex_alloc() to create
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3698
** a new mutex.  The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3699
** is used but not necessarily so when SQLITE_MUTEX_FAST is used. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3700
** The mutex implementation does not need to make a distinction
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3701
** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3702
** not want to.  {F17016} But SQLite will only request a recursive mutex in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3703
** cases where it really needs one.  {END} If a faster non-recursive mutex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3704
** implementation is available on the host platform, the mutex subsystem
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3705
** might return such a mutex in response to SQLITE_MUTEX_FAST.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3706
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3707
** {F17017} The other allowed parameters to sqlite3_mutex_alloc() each return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3708
** a pointer to a static preexisting mutex. {END}  Four static mutexes are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3709
** used by the current version of SQLite.  Future versions of SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3710
** may add additional static mutexes.  Static mutexes are for internal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3711
** use by SQLite only.  Applications that use SQLite mutexes should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3712
** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3713
** SQLITE_MUTEX_RECURSIVE.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3714
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3715
** {F17018} Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3716
** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3717
** returns a different mutex on every call.  {F17034} But for the static 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3718
** mutex types, the same mutex is returned on every call that has
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3719
** the same type number. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3720
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3721
** {F17019} The sqlite3_mutex_free() routine deallocates a previously
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3722
** allocated dynamic mutex. {F17020} SQLite is careful to deallocate every
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3723
** dynamic mutex that it allocates. {U17021} The dynamic mutexes must not be in 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3724
** use when they are deallocated. {U17022} Attempting to deallocate a static
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3725
** mutex results in undefined behavior. {F17023} SQLite never deallocates
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3726
** a static mutex. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3727
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3728
** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3729
** to enter a mutex. {F17024} If another thread is already within the mutex,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3730
** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3731
** SQLITE_BUSY. {F17025}  The sqlite3_mutex_try() interface returns SQLITE_OK
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3732
** upon successful entry.  {F17026} Mutexes created using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3733
** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3734
** {F17027} In such cases the,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3735
** mutex must be exited an equal number of times before another thread
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3736
** can enter.  {U17028} If the same thread tries to enter any other
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3737
** kind of mutex more than once, the behavior is undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3738
** {F17029} SQLite will never exhibit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3739
** such behavior in its own use of mutexes. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3740
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3741
** Some systems (ex: windows95) do not the operation implemented by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3742
** sqlite3_mutex_try().  On those systems, sqlite3_mutex_try() will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3743
** always return SQLITE_BUSY.  {F17030} The SQLite core only ever uses
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3744
** sqlite3_mutex_try() as an optimization so this is acceptable behavior. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3745
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3746
** {F17031} The sqlite3_mutex_leave() routine exits a mutex that was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3747
** previously entered by the same thread.  {U17032} The behavior
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3748
** is undefined if the mutex is not currently entered by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3749
** calling thread or is not currently allocated.  {F17033} SQLite will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3750
** never do either. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3751
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3752
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3753
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3754
/*IMPORT_C*/ sqlite3_mutex *sqlite3_mutex_alloc(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3755
/*IMPORT_C*/ void sqlite3_mutex_free(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3756
/*IMPORT_C*/ void sqlite3_mutex_enter(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3757
/*IMPORT_C*/ int sqlite3_mutex_try(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3758
/*IMPORT_C*/ void sqlite3_mutex_leave(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3759
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3760
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3761
** CAPI3REF: Mutex Verifcation Routines {F17080}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3762
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3763
** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3764
** are intended for use inside assert() statements. {F17081} The SQLite core
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3765
** never uses these routines except inside an assert() and applications
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3766
** are advised to follow the lead of the core.  {F17082} The core only
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3767
** provides implementations for these routines when it is compiled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3768
** with the SQLITE_DEBUG flag.  {U17087} External mutex implementations
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3769
** are only required to provide these routines if SQLITE_DEBUG is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3770
** defined and if NDEBUG is not defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3771
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3772
** {F17083} These routines should return true if the mutex in their argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3773
** is held or not held, respectively, by the calling thread. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3774
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3775
** {X17084} The implementation is not required to provided versions of these
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3776
** routines that actually work.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3777
** If the implementation does not provide working
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3778
** versions of these routines, it should at least provide stubs
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3779
** that always return true so that one does not get spurious
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3780
** assertion failures. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3781
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3782
** {F17085} If the argument to sqlite3_mutex_held() is a NULL pointer then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3783
** the routine should return 1.  {END} This seems counter-intuitive since
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3784
** clearly the mutex cannot be held if it does not exist.  But the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3785
** the reason the mutex does not exist is because the build is not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3786
** using mutexes.  And we do not want the assert() containing the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3787
** call to sqlite3_mutex_held() to fail, so a non-zero return is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3788
** the appropriate thing to do.  {F17086} The sqlite3_mutex_notheld() 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3789
** interface should also return 1 when given a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3790
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3791
/*IMPORT_C*/ int sqlite3_mutex_held(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3792
/*IMPORT_C*/ int sqlite3_mutex_notheld(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3793
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3794
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3795
** CAPI3REF: Mutex Types {F17001}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3796
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3797
** {F17002} The [sqlite3_mutex_alloc()] interface takes a single argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3798
** which is one of these integer constants. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3799
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3800
#define SQLITE_MUTEX_FAST             0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3801
#define SQLITE_MUTEX_RECURSIVE        1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3802
#define SQLITE_MUTEX_STATIC_MASTER    2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3803
#define SQLITE_MUTEX_STATIC_MEM       3  /* sqlite3_malloc() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3804
#define SQLITE_MUTEX_STATIC_MEM2      4  /* sqlite3_release_memory() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3805
#define SQLITE_MUTEX_STATIC_PRNG      5  /* sqlite3_random() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3806
#define SQLITE_MUTEX_STATIC_LRU       6  /* lru page list */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3807
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3808
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3809
** CAPI3REF: Low-Level Control Of Database Files {F11300}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3810
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3811
** {F11301} The [sqlite3_file_control()] interface makes a direct call to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3812
** xFileControl method for the [sqlite3_io_methods] object associated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3813
** with a particular database identified by the second argument. {F11302} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3814
** name of the database is the name assigned to the database by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3815
** <a href="lang_attach.html">ATTACH</a> SQL command that opened the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3816
** database. {F11303} To control the main database file, use the name "main"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3817
** or a NULL pointer. {F11304} The third and fourth parameters to this routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3818
** are passed directly through to the second and third parameters of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3819
** the xFileControl method.  {F11305} The return value of the xFileControl
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3820
** method becomes the return value of this routine.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3821
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3822
** {F11306} If the second parameter (zDbName) does not match the name of any
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3823
** open database file, then SQLITE_ERROR is returned. {F11307} This error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3824
** code is not remembered and will not be recalled by [sqlite3_errcode()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3825
** or [sqlite3_errmsg()]. {U11308} The underlying xFileControl method might
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3826
** also return SQLITE_ERROR.  {U11309} There is no way to distinguish between
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3827
** an incorrect zDbName and an SQLITE_ERROR return from the underlying
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3828
** xFileControl method. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3829
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3830
** See also: [SQLITE_FCNTL_LOCKSTATE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3831
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3832
/*IMPORT_C*/ int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3833
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3834
/*IMPORT_C*/ int sqlite3_openTest(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3835
  const char *zFilename 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3836
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3837
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3838
/*IMPORT_C*/ int sqlite3_bind_double_ref(sqlite3_stmt *stmt, int iCol, double *val);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3839
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3840
/*IMPORT_C*/ int sqlite3_bind_int64_ref(sqlite3_stmt *stmt, int iCol, sqlite_int64 *val);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3841
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3842
/*IMPORT_C*/ void sqlite3_column_double_ref(sqlite3_stmt *stmt, int iCol, double *val);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3843
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3844
/*IMPORT_C*/ void sqlite3_column_int64_ref(sqlite3_stmt *stmt, int iCol, sqlite_int64 *val);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3845
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3846
/*IMPORT_C*/ unsigned int sqlite3_strlen(char *ptr);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3847
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3848
/*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3849
** Undo the hack that converts floating point types to integer for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3850
** builds on processors without floating point support.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3851
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3852
#ifdef SQLITE_OMIT_FLOATING_POINT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3853
# undef double
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3854
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3855
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3856
#ifdef __cplusplus
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3857
}  /* End of the 'extern "C"' block */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3858
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3859
#endif