engine/inc/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
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_snprintf(int,char*,const char*, ...);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1176
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
** CAPI3REF: Memory Allocation Subsystem {F17300}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1179
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1180
** {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
  1181
** internal memory allocation needs. {END}  "Core" in the previous sentence
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1182
** does not include operating-system specific VFS implementation.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1183
** windows VFS uses native malloc and free for some operations.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1184
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1185
** {F17302} The sqlite3_malloc() routine returns a pointer to a block
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1186
** 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
  1187
** {F17303} If sqlite3_malloc() is unable to obtain sufficient free
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1188
** 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
  1189
** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1190
** a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1191
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1192
** {F17305} Calling sqlite3_free() with a pointer previously returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1193
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1194
** that it might be reused.  {F17306} The sqlite3_free() routine is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1195
** 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
  1196
** to sqlite3_free() is harmless.  {U17307} After being freed, memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1197
** should neither be read nor written.  Even reading previously freed
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1198
** memory might result in a segmentation fault or other severe error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1199
** {U17309} Memory corruption, a segmentation fault, or other severe error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1200
** 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
  1201
** was not obtained from sqlite3_malloc() or sqlite3_free().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1202
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1203
** {F17310} The sqlite3_realloc() interface attempts to resize a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1204
** 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
  1205
** second parameter.  The memory allocation to be resized is the first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1206
** parameter.  {F17311} If the first parameter to sqlite3_realloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1207
** is a NULL pointer then its behavior is identical to calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1208
** 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
  1209
** {F17312} If the second parameter to sqlite3_realloc() is zero or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1210
** negative then the behavior is exactly the same as calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1211
** 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
  1212
** {F17313} Sqlite3_realloc() returns a pointer to a memory allocation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1213
** 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
  1214
** {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
  1215
** 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
  1216
** by sqlite3_realloc() and the prior allocation is freed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1217
** {F17315} If sqlite3_realloc() returns NULL, then the prior allocation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1218
** is not freed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1219
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1220
** {F17316} The memory returned by sqlite3_malloc() and sqlite3_realloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1221
** is always aligned to at least an 8 byte boundary. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1222
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1223
** {F17381} The default implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1224
** of the memory allocation subsystem uses the malloc(), realloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1225
** and free() provided by the standard C library. {F17382} However, if 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1226
** SQLite is compiled with the following C preprocessor macro
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1227
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1228
** <blockquote> SQLITE_MEMORY_SIZE=<i>NNN</i> </blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1229
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1230
** 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
  1231
** 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
  1232
** for all of its dynamic memory allocation needs. {END}  Additional
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1233
** memory allocator options may be added in future releases.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1234
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1235
** 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
  1236
** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1237
** implementation of these routines to be omitted.  That capability
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1238
** is no longer provided.  Only built-in memory allocators can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1239
** used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1240
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1241
** The windows OS interface layer calls
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1242
** the system malloc() and free() directly when converting
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1243
** filenames between the UTF-8 encoding used by SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1244
** and whatever filename encoding is used by the particular windows
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1245
** installation.  Memory allocation errors are detected, but
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1246
** they are reported back as [SQLITE_CANTOPEN] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1247
** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1248
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1249
/*IMPORT_C*/ void *sqlite3_malloc(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1250
/*IMPORT_C*/ void *sqlite3_realloc(void*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1251
/*IMPORT_C*/ void sqlite3_free(void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1252
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
** CAPI3REF: Memory Allocator Statistics {F17370}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1255
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1256
** In addition to the basic three allocation routines 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1257
** [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1258
** the memory allocation subsystem included with the SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1259
** sources provides the interfaces shown here.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1260
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1261
** {F17371} The sqlite3_memory_used() routine returns the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1262
** number of bytes of memory currently outstanding (malloced but not freed).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1263
** {F17372} The value returned by sqlite3_memory_used() includes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1264
** any overhead added by SQLite, but not overhead added by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1265
** library malloc() that backs the sqlite3_malloc() implementation.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1266
** {F17373} The sqlite3_memory_highwater() routines returns the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1267
** maximum number of bytes that have been outstanding at any time
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1268
** since the highwater mark was last reset.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1269
** {F17374} The byte count returned by sqlite3_memory_highwater()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1270
** uses the same byte counting rules as sqlite3_memory_used(). {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1271
** In other words, overhead added internally by SQLite is counted,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1272
** but overhead from the underlying system malloc is not.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1273
** {F17375} If the parameter to sqlite3_memory_highwater() is true,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1274
** then the highwater mark is reset to the current value of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1275
** sqlite3_memory_used() and the prior highwater mark (before the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1276
** reset) is returned.  {F17376}  If the parameter to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1277
** sqlite3_memory_highwater() is zero, then the highwater mark is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1278
** unchanged.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1279
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1280
/*IMPORT_C*/ sqlite3_int64 sqlite3_memory_used(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1281
/*IMPORT_C*/ sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1282
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
** CAPI3REF: Compile-Time Authorization Callbacks {F12500}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1285
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1286
** {F12501} This routine registers a authorizer callback with a particular
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1287
** database connection, supplied in the first argument. {F12502}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1288
** The authorizer callback is invoked as SQL statements are being compiled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1289
** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1290
** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()].  {F12503} At various
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1291
** points during the compilation process, as logic is being created
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1292
** to perform various actions, the authorizer callback is invoked to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1293
** see if those actions are allowed.  The authorizer callback should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1294
** 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
  1295
** specific action but allow the SQL statement to continue to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1296
** 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
  1297
** rejected with an error.  {F12504} If the authorizer callback returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1298
** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1299
** then [sqlite3_prepare_v2()] or equivalent call that triggered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1300
** the authorizer shall
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1301
** 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
  1302
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1303
** When the callback returns [SQLITE_OK], that means the operation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1304
** requested is ok.  {F12505} When the callback returns [SQLITE_DENY], the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1305
** [sqlite3_prepare_v2()] or equivalent call that triggered the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1306
** authorizer shall fail
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1307
** 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
  1308
** access is denied. {F12506} If the authorizer code (the 2nd parameter
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1309
** to the authorizer callback is anything other than [SQLITE_READ], then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1310
** 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
  1311
** If the authorizer code is [SQLITE_READ] and the callback returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1312
** [SQLITE_IGNORE] then the prepared statement is constructed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1313
** 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
  1314
** been read if [SQLITE_OK] had been returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1315
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1316
** {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
  1317
** the third parameter to the sqlite3_set_authorizer() interface.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1318
** {F12511} The second parameter to the callback is an integer 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1319
** [SQLITE_COPY | action code] that specifies the particular action
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1320
** to be authorized. {END} The available action codes are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1321
** [SQLITE_COPY | documented separately].  {F12512} The third through sixth
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1322
** parameters to the callback are zero-terminated strings that contain 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1323
** additional details about the action to be authorized. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1324
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1325
** An authorizer is used when preparing SQL statements from an untrusted
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1326
** 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
  1327
** 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
  1328
** execute malicious statements that damage the database.  For
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1329
** example, an application may allow a user to enter arbitrary
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1330
** SQL queries for evaluation by a database.  But the application does
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1331
** 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
  1332
** database.  An authorizer could then be put in place while the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1333
** user-entered SQL is being prepared that disallows everything
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1334
** except SELECT statements.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1335
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1336
** {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
  1337
** at a time.  Each call to sqlite3_set_authorizer overrides the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1338
** previous call. {F12521}  A NULL authorizer means that no authorization
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1339
** callback is invoked.  {F12522} The default authorizer is NULL. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1340
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1341
** Note that the authorizer callback is invoked only during 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1342
** [sqlite3_prepare()] or its variants.  {F12523} Authorization is not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1343
** performed during statement evaluation in [sqlite3_step()]. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1344
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1345
/*IMPORT_C*/ int sqlite3_set_authorizer(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1346
  sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1347
  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
  1348
  void *pUserData
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1349
);
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
** CAPI3REF: Authorizer Return Codes {F12590}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1353
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1354
** The [sqlite3_set_authorizer | authorizer callback function] must
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1355
** 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
  1356
** 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
  1357
** [sqlite3_set_authorizer | authorizer documentation] for additional
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1358
** information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1359
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1360
#define SQLITE_DENY   1   /* Abort the SQL statement with an error */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1361
#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
  1362
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
** CAPI3REF: Authorizer Action Codes {F12550}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1365
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1366
** The [sqlite3_set_authorizer()] interface registers a callback function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1367
** that is invoked to authorizer certain SQL statement actions.  {F12551} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1368
** second parameter to the callback is an integer code that specifies
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1369
** 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
  1370
** the authorizer callback may be passed. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1371
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1372
** 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
  1373
** authorized.  {F12552} The 3rd and 4th parameters to the authorization
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1374
** 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
  1375
** 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
  1376
** authorizer callback is the name of the database ("main", "temp", 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1377
** etc.) if applicable. {F12554} The 6th parameter to the authorizer callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1378
** 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
  1379
** 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
  1380
** top-level SQL code.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1381
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1382
/******************************************* 3rd ************ 4th ***********/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1383
#define SQLITE_CREATE_INDEX          1   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1384
#define SQLITE_CREATE_TABLE          2   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1385
#define SQLITE_CREATE_TEMP_INDEX     3   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1386
#define SQLITE_CREATE_TEMP_TABLE     4   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1387
#define SQLITE_CREATE_TEMP_TRIGGER   5   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1388
#define SQLITE_CREATE_TEMP_VIEW      6   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1389
#define SQLITE_CREATE_TRIGGER        7   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1390
#define SQLITE_CREATE_VIEW           8   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1391
#define SQLITE_DELETE                9   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1392
#define SQLITE_DROP_INDEX           10   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1393
#define SQLITE_DROP_TABLE           11   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1394
#define SQLITE_DROP_TEMP_INDEX      12   /* Index Name      Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1395
#define SQLITE_DROP_TEMP_TABLE      13   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1396
#define SQLITE_DROP_TEMP_TRIGGER    14   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1397
#define SQLITE_DROP_TEMP_VIEW       15   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1398
#define SQLITE_DROP_TRIGGER         16   /* Trigger Name    Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1399
#define SQLITE_DROP_VIEW            17   /* View Name       NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1400
#define SQLITE_INSERT               18   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1401
#define SQLITE_PRAGMA               19   /* Pragma Name     1st arg or NULL */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1402
#define SQLITE_READ                 20   /* Table Name      Column Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1403
#define SQLITE_SELECT               21   /* NULL            NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1404
#define SQLITE_TRANSACTION          22   /* NULL            NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1405
#define SQLITE_UPDATE               23   /* Table Name      Column Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1406
#define SQLITE_ATTACH               24   /* Filename        NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1407
#define SQLITE_DETACH               25   /* Database Name   NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1408
#define SQLITE_ALTER_TABLE          26   /* Database Name   Table Name      */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1409
#define SQLITE_REINDEX              27   /* Index Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1410
#define SQLITE_ANALYZE              28   /* Table Name      NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1411
#define SQLITE_CREATE_VTABLE        29   /* Table Name      Module Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1412
#define SQLITE_DROP_VTABLE          30   /* Table Name      Module Name     */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1413
#define SQLITE_FUNCTION             31   /* Function Name   NULL            */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1414
#define SQLITE_COPY                  0   /* No longer used */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1415
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
** CAPI3REF: Tracing And Profiling Functions {F12280}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1418
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1419
** These routines register callback functions that can be used for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1420
** tracing and profiling the execution of SQL statements.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1421
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1422
** {F12281} The callback function registered by sqlite3_trace() is invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1423
** 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
  1424
** {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
  1425
** Each call to sqlite3_trace() overrides the previous.  {F12283} A
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1426
** NULL callback for sqlite3_trace() disables tracing.  {F12284} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1427
** 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
  1428
** was the 3rd argument to sqlite3_trace.  {F12285} The second argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1429
** to the trace callback is a zero-terminated UTF8 string containing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1430
** 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
  1431
** [sqlite3_prepare_v2()] or the equivalent. {END}  Note that the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1432
** host parameter are not expanded in the SQL statement text.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1433
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1434
** {F12287} The callback function registered by sqlite3_profile() is invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1435
** as each SQL statement finishes.  {F12288} The first parameter to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1436
** 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
  1437
** {F12289} The second parameter to the profile callback is a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1438
** zero-terminated UTF-8 string that contains the complete text of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1439
** 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
  1440
** the equivalent.  {F12290} The third parameter to the profile 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1441
** callback is an estimate of the number of nanoseconds of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1442
** wall-clock time required to run the SQL statement from start
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1443
** to finish. {END}  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1444
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1445
** The sqlite3_profile() API is currently considered experimental and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1446
** is subject to change.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1447
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1448
/*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
  1449
/*IMPORT_C*/ void *sqlite3_profile(sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1450
   void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1451
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
** CAPI3REF: Query Progress Callbacks {F12910}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1454
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1455
** {F12911} This routine configures a callback function - the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1456
** progress callback - that is invoked periodically during long
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1457
** running calls to [sqlite3_exec()], [sqlite3_step()] and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1458
** [sqlite3_get_table()]. {END}  An example use for this 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1459
** interface is to keep a GUI updated during a large query.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1460
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1461
** {F12912} The progress callback is invoked once for every N virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1462
** machine opcodes, where N is the second argument to this function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1463
** {F12913} The progress callback itself is identified by the third
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1464
** argument to this function. {F12914} The fourth argument to this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1465
** function is a void pointer passed to the progress callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1466
** function each time it is invoked. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1467
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1468
** {F12915} If a call to [sqlite3_exec()], [sqlite3_step()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1469
** [sqlite3_get_table()] results in fewer than N opcodes being executed,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1470
** then the progress callback is never invoked. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1471
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1472
** {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
  1473
** open database connection.  Every call to sqlite3_progress_handler()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1474
** overwrites the results of the previous call. {F12917}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1475
** To remove the progress callback altogether, pass NULL as the third
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1476
** argument to this function. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1477
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1478
** {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
  1479
** the current query is immediately terminated and any database changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1480
** rolled back. {F12919}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1481
** The containing [sqlite3_exec()], [sqlite3_step()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1482
** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. {END}  This feature
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1483
** 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
  1484
** progress dialog box in a GUI.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1485
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1486
/*IMPORT_C*/ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1487
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
** CAPI3REF: Opening A New Database Connection {F12700}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1490
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1491
** {F12701} These routines open an SQLite database file whose name
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1492
** is given by the filename argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1493
** {F12702} The filename argument is interpreted as UTF-8
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1494
** for [sqlite3_open()] and [sqlite3_open_v2()] and as UTF-16
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1495
** in the native byte order for [sqlite3_open16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1496
** {F12703} An [sqlite3*] handle is returned in *ppDb, even
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1497
** if an error occurs.  {F12723} (Exception: if SQLite is unable
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1498
** to allocate memory to hold the [sqlite3] object, a NULL will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1499
** 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
  1500
** {F12704} If the database is opened (and/or created)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1501
** successfully, then [SQLITE_OK] is returned.  {F12705} Otherwise an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1502
** error code is returned.  {F12706} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1503
** [sqlite3_errmsg()] or [sqlite3_errmsg16()]  routines can be used to obtain
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1504
** an English language description of the error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1505
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1506
** {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
  1507
** [sqlite3_open()] or [sqlite3_open_v2()] is called and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1508
** 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
  1509
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1510
** {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
  1511
** associated with the [sqlite3*] handle should be released by passing it
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1512
** to [sqlite3_close()] when it is no longer required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1513
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1514
** {F12709} The [sqlite3_open_v2()] interface works like [sqlite3_open()] 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1515
** except that it acccepts two additional parameters for additional control
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1516
** over the new database connection.  {F12710} The flags parameter can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1517
** one of:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1518
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1519
** <ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1520
** <li>  [SQLITE_OPEN_READONLY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1521
** <li>  [SQLITE_OPEN_READWRITE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1522
** <li>  [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1523
** </ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1524
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1525
** {F12711} The first value opens the database read-only. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1526
** {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
  1527
** {F12713} The second option opens
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1528
** 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
  1529
** 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
  1530
** 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
  1531
** 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
  1532
** not already exist. {F12716}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1533
** 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
  1534
** and [sqlite3_open16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1535
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1536
** {F12717} If the filename is ":memory:", then an private
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1537
** 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
  1538
** database will vanish when the database connection is closed. {END}  Future
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1539
** version of SQLite might make use of additional special filenames
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1540
** that begin with the ":" character.  It is recommended that 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1541
** when a database filename really does begin with
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1542
** ":" that you prefix the filename with a pathname like "./" to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1543
** avoid ambiguity.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1544
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1545
** {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
  1546
** 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
  1547
** automatically deleted as soon as the database connection is closed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1548
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1549
** {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
  1550
** [sqlite3_vfs] object that defines the operating system 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1551
** interface that the new database connection should use.  {F12722} If the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1552
** fourth parameter is a NULL pointer then the default [sqlite3_vfs]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1553
** object is used. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1554
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1555
** <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
  1556
** 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
  1557
** codepage is currently defined.  Filenames containing international
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1558
** 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
  1559
** [sqlite3_open()] or [sqlite3_open_v2()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1560
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1561
/*IMPORT_C*/ int sqlite3_open(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1562
  const char *filename,   /* Database filename (UTF-8) */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1563
  sqlite3 **ppDb          /* OUT: SQLite db handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1564
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1565
/*IMPORT_C*/ int sqlite3_open16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1566
  const void *filename,   /* Database filename (UTF-16) */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1567
  sqlite3 **ppDb          /* OUT: SQLite db handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1568
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1569
/*IMPORT_C*/ int sqlite3_open_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1570
  const char *filename,   /* Database filename (UTF-8) */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1571
  sqlite3 **ppDb,         /* OUT: SQLite db handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1572
  int flags,              /* Flags */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1573
  const char *zVfs        /* Name of VFS module to use */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1574
);
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
** CAPI3REF: Error Codes And Messages {F12800}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1578
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1579
** {F12801} The sqlite3_errcode() interface returns the numeric
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1580
** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1581
** for the most recent failed sqlite3_* API call associated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1582
** 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
  1583
** most recent API call succeeded, the return value from sqlite3_errcode()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1584
** is undefined. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1585
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1586
** {F12803} The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1587
** text that describes the error, as either UTF8 or UTF16 respectively.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1588
** {F12804} Memory to hold the error message string is managed internally.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1589
** {U12805} The 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1590
** string may be overwritten or deallocated by subsequent calls to SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1591
** interface functions. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1592
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1593
** {F12806} Calls to many sqlite3_* functions set the error code and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1594
** string returned by [sqlite3_errcode()], [sqlite3_errmsg()], and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1595
** [sqlite3_errmsg16()] overwriting the previous values.  {F12807}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1596
** Except, calls to [sqlite3_errcode()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1597
** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1598
** results of future invocations.  {F12808} Calls to API routines that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1599
** 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
  1600
** change the error code returned by this routine.  {F12809} Interfaces that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1601
** are not associated with a specific database connection (examples:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1602
** [sqlite3_mprintf()] or [sqlite3_enable_shared_cache()] do not change
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1603
** the return code. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1604
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1605
** {F12810} Assuming no other intervening sqlite3_* API calls are made,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1606
** 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
  1607
** error as the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1608
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1609
/*IMPORT_C*/ int sqlite3_errcode(sqlite3 *db);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1610
/*IMPORT_C*/ const char *sqlite3_errmsg(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1611
/*IMPORT_C*/ const void *sqlite3_errmsg16(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1612
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
** CAPI3REF: SQL Statement Object {F13000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1615
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1616
** An instance of this object represent single SQL statements.  This
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1617
** object is variously known as a "prepared statement" or a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1618
** "compiled SQL statement" or simply as a "statement".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1619
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1620
** The life of a statement object goes something like this:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1621
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1622
** <ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1623
** <li> Create the object using [sqlite3_prepare_v2()] or a related
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1624
**      function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1625
** <li> Bind values to host parameters using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1626
**      [sqlite3_bind_blob | sqlite3_bind_* interfaces].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1627
** <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
  1628
** <li> Reset the statement using [sqlite3_reset()] then go back
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1629
**      to step 2.  Do this zero or more times.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1630
** <li> Destroy the object using [sqlite3_finalize()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1631
** </ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1632
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1633
** Refer to documentation on individual methods above for additional
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1634
** information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1635
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1636
typedef struct sqlite3_stmt sqlite3_stmt;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1637
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
** CAPI3REF: Compiling An SQL Statement {F13010}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1640
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1641
** 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
  1642
** program using one of these routines. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1643
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1644
** {F13011} The first argument "db" is an [sqlite3 | SQLite database handle] 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1645
** obtained from a prior call to [sqlite3_open()], [sqlite3_open_v2()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1646
** or [sqlite3_open16()]. {F13012}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1647
** The second argument "zSql" is the statement to be compiled, encoded
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1648
** 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
  1649
** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1650
** use UTF-16. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1651
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1652
** {F13013} If the nByte argument is less
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1653
** 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
  1654
** {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
  1655
** bytes read from zSql.  When nByte is non-negative, the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1656
** 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
  1657
** until the nByte-th byte, whichever comes first. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1658
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1659
** {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
  1660
** first SQL statement in zSql.  These routines only compiles the first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1661
** statement in zSql, so *pzTail is left pointing to what remains
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1662
** uncompiled. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1663
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1664
** {F13016} *ppStmt is left pointing to a compiled 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1665
** [sqlite3_stmt | SQL statement structure] that can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1666
** 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
  1667
** 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
  1668
** 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
  1669
** {U13018} The calling procedure is responsible for deleting the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1670
** compiled SQL statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1671
** using [sqlite3_finalize()] after it has finished with it.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1672
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1673
** {F13019} On success, [SQLITE_OK] is returned.  Otherwise an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1674
** [SQLITE_ERROR | error code] is returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1675
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1676
** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1677
** recommended for all new programs. The two older interfaces are retained
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1678
** for backwards compatibility, but their use is discouraged.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1679
** {F13020} In the "v2" interfaces, the prepared statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1680
** 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
  1681
** original SQL text. {END} This causes the [sqlite3_step()] interface to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1682
** behave a differently in two ways:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1683
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1684
** <ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1685
** <li>{F13022}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1686
** 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
  1687
** always used to do, [sqlite3_step()] will automatically recompile the SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1688
** 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
  1689
** 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
  1690
** return [SQLITE_SCHEMA].  {END} But unlike the legacy behavior, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1691
** [SQLITE_SCHEMA] is now a fatal error.  {F12024} Calling
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1692
** [sqlite3_prepare_v2()] again will not make the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1693
** 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
  1694
** 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
  1695
** </li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1696
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1697
** <li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1698
** {F13030} When an error occurs, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1699
** [sqlite3_step()] will return one of the detailed 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1700
** [SQLITE_ERROR | result codes] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1701
** [SQLITE_IOERR_READ | extended result codes].  {F13031}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1702
** 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
  1703
** [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
  1704
** [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
  1705
** {F13032}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1706
** 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
  1707
** returned immediately. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1708
** </li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1709
** </ol>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1710
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1711
/*IMPORT_C*/ int sqlite3_prepare(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1712
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1713
  const char *zSql,       /* SQL statement, UTF-8 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1714
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1715
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1716
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1717
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1718
/*IMPORT_C*/ int sqlite3_prepare_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1719
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1720
  const char *zSql,       /* SQL statement, UTF-8 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1721
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1722
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1723
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1724
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1725
/*IMPORT_C*/ int sqlite3_prepare16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1726
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1727
  const void *zSql,       /* SQL statement, UTF-16 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1728
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1729
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1730
  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1731
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1732
/*IMPORT_C*/ int sqlite3_prepare16_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1733
  sqlite3 *db,            /* Database handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1734
  const void *zSql,       /* SQL statement, UTF-16 encoded */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1735
  int nByte,              /* Maximum length of zSql in bytes. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1736
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1737
  const void **pzTail     /* OUT: Pointer to unused portion of zSql */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1738
);
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
** CAPIREF: Retrieving Statement SQL {F13100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1742
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1743
** {F13101} If the compiled SQL statement passed as an argument was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1744
** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1745
** then this function returns a pointer to a zero-terminated string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1746
** containing a copy of the original SQL statement. {F13102} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1747
** pointer is valid until the statement
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1748
** is deleted using sqlite3_finalize().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1749
** {F13103} The string returned by sqlite3_sql() is always UTF8 even
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1750
** if a UTF16 string was originally entered using [sqlite3_prepare16_v2()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1751
** or the equivalent.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1752
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1753
** {F13104} If the statement was compiled using either of the legacy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1754
** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1755
** function returns NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1756
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1757
/*IMPORT_C*/ const char *sqlite3_sql(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1758
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
** CAPI3REF:  Dynamically Typed Value Object  {F15000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1761
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1762
** {F15001} SQLite uses the sqlite3_value object to represent all values
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1763
** that are or can be stored in a database table. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1764
** SQLite uses dynamic typing for the values it stores.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1765
** {F15002} Values stored in sqlite3_value objects can be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1766
** be integers, floating point values, strings, BLOBs, or NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1767
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1768
typedef struct Mem sqlite3_value;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1769
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
** CAPI3REF:  SQL Function Context Object {F16001}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1772
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1773
** 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
  1774
** sqlite3_context object.  {F16002} A pointer to an sqlite3_context
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1775
** object is always first parameter to application-defined SQL functions.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1776
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1777
typedef struct sqlite3_context sqlite3_context;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1778
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
** CAPI3REF:  Binding Values To Prepared Statements {F13500}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1781
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1782
** {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
  1783
** variants, literals may be replace by a parameter in one
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1784
** of these forms:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1785
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1786
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1787
** <li>  ?
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1788
** <li>  ?NNN
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1789
** <li>  :AAA
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>  $VVV
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1792
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1793
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1794
** In the parameter forms shown above NNN is an integer literal,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1795
** 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
  1796
** to the syntax rules of the TCL programming language. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1797
** The values of these parameters (also called "host parameter names")
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1798
** can be set using the sqlite3_bind_*() routines defined here.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1799
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1800
** {F13502} The first argument to the sqlite3_bind_*() routines always
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1801
** is a pointer to the [sqlite3_stmt] object returned from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1802
** [sqlite3_prepare_v2()] or its variants.  {F13503} The second
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1803
** 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
  1804
** 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
  1805
** parameter is used more than once, second and subsequent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1806
** occurrences have the same index as the first occurrence. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1807
** {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
  1808
** [sqlite3_bind_parameter_name()] API if desired.  {F13507} The index
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1809
** for "?NNN" parameters is the value of NNN.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1810
** {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
  1811
** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999). {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1812
** See <a href="limits.html">limits.html</a> for additional information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1813
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1814
** {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
  1815
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1816
** {F13510} In those
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1817
** 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
  1818
** 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
  1819
** string, not the number of characters. {F13511}  The number
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1820
** 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
  1821
** {F13512}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1822
** 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
  1823
** number of bytes up to the first zero terminator. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1824
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1825
** {F13513}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1826
** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1827
** 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
  1828
** 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
  1829
** the special value [SQLITE_STATIC], then the library assumes that the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1830
** 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
  1831
** {F13515} If the fifth argument has the value [SQLITE_TRANSIENT], then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1832
** SQLite makes its own private copy of the data immediately, before
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1833
** the sqlite3_bind_*() routine returns. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1834
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1835
** {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
  1836
** 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
  1837
** (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
  1838
** Zeroblobs are intended to serve as place-holders for BLOBs whose
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1839
** content is later written using 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1840
** [sqlite3_blob_open | increment BLOB I/O] routines. {F13522} A negative
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1841
** value for the zeroblob results in a zero-length BLOB. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1842
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1843
** {F13530} The sqlite3_bind_*() routines must be called after
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1844
** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1845
** before [sqlite3_step()]. {F13531}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1846
** Bindings are not cleared by the [sqlite3_reset()] routine.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1847
** {F13532} Unbound parameters are interpreted as NULL. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1848
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1849
** {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
  1850
** anything goes wrong.  {F13541} [SQLITE_RANGE] is returned if the parameter
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1851
** 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
  1852
** {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
  1853
** 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
  1854
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1855
/*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
  1856
/*IMPORT_C*/ int sqlite3_bind_double(sqlite3_stmt*, int, double);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1857
/*IMPORT_C*/ int sqlite3_bind_int(sqlite3_stmt*, int, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1858
/*IMPORT_C*/ int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1859
/*IMPORT_C*/ int sqlite3_bind_null(sqlite3_stmt*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1860
/*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
  1861
/*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
  1862
/*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
  1863
/*IMPORT_C*/ int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1864
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
** CAPI3REF: Number Of Host Parameters {F13600}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1867
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1868
** {F13601} Return the largest host parameter index in the precompiled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1869
** statement given as the argument. {F13602} When the host parameters
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1870
** are of the forms like ":AAA", "$VVV", "@AAA", or "?",
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1871
** then they are assigned sequential increasing numbers beginning
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1872
** with one, so the value returned is the number of parameters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1873
** {F13603} However
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1874
** 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
  1875
** 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
  1876
** of unique host parameter names. {F13604} If host parameters of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1877
** 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
  1878
** 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
  1879
** 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
  1880
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1881
** {U13605} The prepared statement must not be [sqlite3_finalize | finalized]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1882
** prior to this routine returning.  Otherwise the results are undefined
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1883
** and probably undesirable.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1884
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1885
/*IMPORT_C*/ int sqlite3_bind_parameter_count(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1886
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
** CAPI3REF: Name Of A Host Parameter {F13620}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1889
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1890
** {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
  1891
** parameter in a [sqlite3_stmt | prepared statement]. {F13622}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1892
** 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
  1893
** which is the string ":AAA" or "@AAA" or "$VVV". 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1894
** In other words, the initial ":" or "$" or "@"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1895
** is included as part of the name.  {F13626}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1896
** Parameters of the form "?" or "?NNN" have no name.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1897
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1898
** {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
  1899
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1900
** {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
  1901
** nameless, then NULL is returned.  {F13625} The returned string is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1902
** 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
  1903
** originally specified as UTF-16 in [sqlite3_prepare16()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1904
** [sqlite3_prepare16_v2()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1905
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1906
/*IMPORT_C*/ const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1907
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
** CAPI3REF: Index Of A Parameter With A Given Name {F13640}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1910
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1911
** {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
  1912
** given name.  {F13642} The name must match exactly.  {F13643}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1913
** If no parameter with the given name is found, return 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1914
** {F13644} Parameter names must be UTF8.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1915
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1916
/*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
  1917
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
** CAPI3REF: Reset All Bindings On A Prepared Statement {F13660}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1920
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1921
** {F13661} Contrary to the intuition of many, [sqlite3_reset()] does not
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1922
** reset the [sqlite3_bind_blob | bindings] on a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1923
** [sqlite3_stmt | prepared statement]. {F13662} Use this routine to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1924
** reset all host parameters to NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1925
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1926
/*IMPORT_C*/ int sqlite3_clear_bindings(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1927
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
** CAPI3REF: Number Of Columns In A Result Set {F13710}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1930
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1931
** {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
  1932
** [sqlite3_stmt | compiled SQL statement]. {F13712} This routine returns 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1933
** 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
  1934
** example an UPDATE).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1935
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1936
/*IMPORT_C*/ int sqlite3_column_count(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1937
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
** CAPI3REF: Column Names In A Result Set {F13720}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1940
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1941
** {F13721} These routines return the name assigned to a particular column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1942
** 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
  1943
** interface returns a pointer to a zero-terminated UTF8 string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1944
** and sqlite3_column_name16() returns a pointer to a zero-terminated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1945
** UTF16 string. {F13723}  The first parameter is the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1946
** [sqlite3_stmt | prepared statement] that implements the SELECT statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1947
** 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
  1948
** number 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1949
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1950
** {F13724} The returned string pointer is valid until either the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1951
** [sqlite3_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1952
** 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
  1953
** on the same column.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1954
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1955
** {F13725} If sqlite3_malloc() fails during the processing of either routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1956
** (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
  1957
** NULL pointer is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1958
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1959
/*IMPORT_C*/ const char *sqlite3_column_name(sqlite3_stmt*, int N);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1960
/*IMPORT_C*/ const void *sqlite3_column_name16(sqlite3_stmt*, int N);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1961
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
** CAPI3REF: Source Of Data In A Query Result {F13740}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1964
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1965
** {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
  1966
** 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
  1967
** {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
  1968
** either a UTF8 or UTF16 string.  {F13743} The _database_ routines return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1969
** the database name, the _table_ routines return the table name, and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1970
** the origin_ routines return the column name. {F13744}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1971
** The returned string is valid until
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1972
** the [sqlite3_stmt | prepared statement] is destroyed using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1973
** [sqlite3_finalize()] or until the same information is requested
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1974
** again in a different encoding.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1975
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1976
** {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
  1977
** database, table, and column.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1978
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1979
** {F13746} The first argument to the following calls is a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1980
** [sqlite3_stmt | compiled SQL statement].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1981
** {F13747} These functions return information about the Nth column returned by 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1982
** the statement, where N is the second function argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1983
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1984
** {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
  1985
** 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
  1986
** return NULL.  {F13749} Otherwise, they return the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1987
** name of the attached database, table and column that query result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1988
** column was extracted from.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1989
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1990
** {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
  1991
** UTF-16 encoded strings, the other functions return UTF-8. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1992
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1993
** 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
  1994
** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1995
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1996
** {U13751}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  1997
** 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
  1998
** 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
  1999
** undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2000
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2001
/*IMPORT_C*/ const char *sqlite3_column_database_name(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2002
/*IMPORT_C*/ const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2003
/*IMPORT_C*/ const char *sqlite3_column_table_name(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2004
/*IMPORT_C*/ const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2005
/*IMPORT_C*/ const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2006
/*IMPORT_C*/ const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2007
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
** CAPI3REF: Declared Datatype Of A Query Result {F13760}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2010
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2011
** The first parameter is a [sqlite3_stmt | compiled SQL statement]. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2012
** {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
  2013
** 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
  2014
** expression or subquery) then the declared type of the table
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2015
** 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
  2016
** expression or subquery, then a NULL pointer is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2017
** {F13763} The returned string is always UTF-8 encoded.  {END} 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2018
** For example, in the database schema:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2019
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2020
** CREATE TABLE t1(c1 VARIANT);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2021
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2022
** And the following statement compiled:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2023
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2024
** SELECT c1 + 1, c1 FROM t1;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2025
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2026
** Then this routine would return the string "VARIANT" for the second
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2027
** 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
  2028
** (i==0).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2029
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2030
** SQLite uses dynamic run-time typing.  So just because a column
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2031
** 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
  2032
** 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
  2033
** strongly typed, but the typing is dynamic not static.  Type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2034
** is associated with individual values, not with the containers
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2035
** used to hold those values.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2036
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2037
/*IMPORT_C*/ const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2038
/*IMPORT_C*/ const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2039
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
** CAPI3REF:  Evaluate An SQL Statement {F13200}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2042
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2043
** 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
  2044
** 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
  2045
** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2046
** 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
  2047
** statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2048
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2049
** The details of the behavior of this sqlite3_step() interface depend
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2050
** on whether the statement was prepared using the newer "v2" interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2051
** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2052
** interface [sqlite3_prepare()] and [sqlite3_prepare16()].  The use of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2053
** new "v2" interface is recommended for new applications but the legacy
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2054
** interface will continue to be supported.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2055
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2056
** 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
  2057
** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2058
** 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
  2059
** or [SQLITE_IOERR_READ | extended result code] might be returned as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2060
** well.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2061
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2062
** [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
  2063
** 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
  2064
** 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
  2065
** 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
  2066
** explicit transaction then you should rollback the transaction before
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2067
** continuing.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2068
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2069
** [SQLITE_DONE] means that the statement has finished executing
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2070
** successfully.  sqlite3_step() should not be called again on this virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2071
** machine without first calling [sqlite3_reset()] to reset the virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2072
** machine back to its initial state.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2073
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2074
** If the SQL statement being executed returns any data, then 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2075
** [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
  2076
** for processing by the caller. The values may be accessed using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2077
** the [sqlite3_column_int | column access functions].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2078
** 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
  2079
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2080
** [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
  2081
** violation) has occurred.  sqlite3_step() should not be called again on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2082
** the VM. More information may be found by calling [sqlite3_errmsg()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2083
** With the legacy interface, a more specific error code (example:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2084
** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2085
** can be obtained by calling [sqlite3_reset()] on the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2086
** [sqlite3_stmt | prepared statement].  In the "v2" interface,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2087
** the more specific error code is returned directly by sqlite3_step().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2088
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2089
** [SQLITE_MISUSE] means that the this routine was called inappropriately.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2090
** 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
  2091
** already been [sqlite3_finalize | finalized] or on one that had 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2092
** previously returned [SQLITE_ERROR] or [SQLITE_DONE].  Or it could
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2093
** 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
  2094
** more threads at the same moment in time.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2095
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2096
** <b>Goofy Interface Alert:</b>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2097
** In the legacy interface, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2098
** the sqlite3_step() API always returns a generic error code,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2099
** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2100
** and [SQLITE_MISUSE].  You must call [sqlite3_reset()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2101
** [sqlite3_finalize()] in order to find one of the specific
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2102
** [SQLITE_ERROR | result codes] that better describes the error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2103
** 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
  2104
** 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
  2105
** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2106
** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2107
** more specific [SQLITE_ERROR | result codes] are returned directly
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2108
** by sqlite3_step().  The use of the "v2" interface is recommended.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2109
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2110
/*IMPORT_C*/ int sqlite3_step(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2111
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
** CAPI3REF: Number of columns in a result set {F13770}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2114
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2115
** 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
  2116
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2117
** {F13771} After a call to [sqlite3_step()] that returns [SQLITE_ROW],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2118
** this routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2119
** will return the same value as the [sqlite3_column_count()] function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2120
** {F13772}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2121
** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2122
** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2123
** called on the [sqlite3_stmt | prepared statement] for the first time,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2124
** this routine returns zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2125
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2126
/*IMPORT_C*/ int sqlite3_data_count(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2127
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
** CAPI3REF: Fundamental Datatypes {F10265}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2130
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2131
** {F10266}Every value in SQLite has one of five fundamental datatypes:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2132
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2133
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2134
** <li> 64-bit signed integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2135
** <li> 64-bit IEEE floating point number
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2136
** <li> string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2137
** <li> BLOB
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2138
** <li> NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2139
** </ul> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2140
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2141
** These constants are codes for each of those types.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2142
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2143
** 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
  2144
** for a completely different meaning.  Software that links against both
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2145
** 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
  2146
** SQLITE_TEXT.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2147
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2148
#define SQLITE_INTEGER  1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2149
#define SQLITE_FLOAT    2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2150
#define SQLITE_BLOB     4
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2151
#define SQLITE_NULL     5
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2152
#ifdef SQLITE_TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2153
# undef SQLITE_TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2154
#else
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2155
# define SQLITE_TEXT     3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2156
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2157
#define SQLITE3_TEXT     3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2158
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
** CAPI3REF: Results Values From A Query {F13800}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2161
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2162
** These routines return information about
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2163
** 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
  2164
** case the first argument is a pointer to the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2165
** [sqlite3_stmt | SQL statement] that is being
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2166
** evaluated (the [sqlite3_stmt*] that was returned from 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2167
** [sqlite3_prepare_v2()] or one of its variants) and
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2168
** 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
  2169
** should be returned.  The left-most column of the result set
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2170
** has an index of 0.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2171
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2172
** 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
  2173
** the column index is out of range, the result is undefined. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2174
** 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
  2175
** [sqlite3_step()] has returned [SQLITE_ROW] and neither
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2176
** [sqlite3_reset()] nor [sqlite3_finalize()] has been call subsequently.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2177
** If any of these routines are called after [sqlite3_reset()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2178
** [sqlite3_finalize()] or after [sqlite3_step()] has returned
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2179
** something other than [SQLITE_ROW], the results are undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2180
** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2181
** are called from a different thread while any of these routines
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2182
** are pending, then the results are undefined.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2183
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2184
** The sqlite3_column_type() routine returns 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2185
** [SQLITE_INTEGER | datatype code] for the initial data type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2186
** 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
  2187
** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].  The value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2188
** returned by sqlite3_column_type() is only meaningful if no type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2189
** conversions have occurred as described below.  After a type conversion,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2190
** the value returned by sqlite3_column_type() is undefined.  Future
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2191
** versions of SQLite may change the behavior of sqlite3_column_type()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2192
** following a type conversion.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2193
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2194
** 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
  2195
** routine returns the number of bytes in that BLOB or string.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2196
** 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
  2197
** 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
  2198
** 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
  2199
** [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
  2200
** the number of bytes in that string.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2201
** 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
  2202
** 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
  2203
** bytes in the string, not the number of characters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2204
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2205
** Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2206
** even zero-length strings, are always zero terminated.  The return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2207
** 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
  2208
** pointer, possibly even a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2209
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2210
** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2211
** but leaves the result in UTF-16 instead of UTF-8.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2212
** The zero terminator is not included in this count.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2213
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2214
** These routines attempt to convert the value where appropriate.  For
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2215
** example, if the internal representation is FLOAT and a text result
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2216
** is requested, [sqlite3_snprintf()] is used internally to do the conversion
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2217
** automatically.  The following table details the conversions that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2218
** are applied:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2219
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2220
** <blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2221
** <table border="1">
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2222
** <tr><th> Internal<br>Type <th> Requested<br>Type <th>  Conversion
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2223
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2224
** <tr><td>  NULL    <td> INTEGER   <td> Result is 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2225
** <tr><td>  NULL    <td>  FLOAT    <td> Result is 0.0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2226
** <tr><td>  NULL    <td>   TEXT    <td> Result is NULL pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2227
** <tr><td>  NULL    <td>   BLOB    <td> Result is NULL pointer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2228
** <tr><td> INTEGER  <td>  FLOAT    <td> Convert from integer to float
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2229
** <tr><td> INTEGER  <td>   TEXT    <td> ASCII rendering of the integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2230
** <tr><td> INTEGER  <td>   BLOB    <td> Same as for INTEGER->TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2231
** <tr><td>  FLOAT   <td> INTEGER   <td> Convert from float to integer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2232
** <tr><td>  FLOAT   <td>   TEXT    <td> ASCII rendering of the float
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2233
** <tr><td>  FLOAT   <td>   BLOB    <td> Same as FLOAT->TEXT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2234
** <tr><td>  TEXT    <td> INTEGER   <td> Use atoi()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2235
** <tr><td>  TEXT    <td>  FLOAT    <td> Use atof()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2236
** <tr><td>  TEXT    <td>   BLOB    <td> No change
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2237
** <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
  2238
** <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
  2239
** <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
  2240
** </table>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2241
** </blockquote>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2242
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2243
** The table above makes reference to standard C library functions atoi()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2244
** 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
  2245
** on equavalent internal routines.  The atoi() and atof() names are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2246
** 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
  2247
** C programmers.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2248
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2249
** Note that when type conversions occur, pointers returned by prior
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2250
** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2251
** sqlite3_column_text16() may be invalidated. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2252
** Type conversions and pointer invalidations might occur
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2253
** in the following cases:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2254
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2255
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2256
** <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
  2257
**          or sqlite3_column_text16() is called.  A zero-terminator might
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2258
**          need to be added to the string.</p></li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2259
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2260
** <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
  2261
**          sqlite3_column_text16() is called.  The content must be converted
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2262
**          to UTF-16.</p></li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2263
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2264
** <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
  2265
**          sqlite3_column_text() is called.  The content must be converted
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2266
**          to UTF-8.</p></li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2267
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2268
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2269
** 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
  2270
** 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
  2271
** 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
  2272
** 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
  2273
** not possible and in those cases prior pointers are invalidated.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2274
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2275
** 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
  2276
** in one of the following ways:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2277
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2278
**  <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2279
**  <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2280
**  <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2281
**  <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2282
**  </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2283
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2284
** 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
  2285
** 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
  2286
** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2287
** 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
  2288
** 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
  2289
** 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
  2290
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2291
** The pointers returned are valid until a type conversion occurs as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2292
** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2293
** [sqlite3_finalize()] is called.  The memory space used to hold strings
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2294
** 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
  2295
** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2296
** [sqlite3_free()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2297
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2298
** If a memory allocation error occurs during the evaluation of any
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2299
** of these routines, a default value is returned.  The default value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2300
** 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
  2301
** pointer.  Subsequent calls to [sqlite3_errcode()] will return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2302
** [SQLITE_NOMEM].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2303
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2304
/*IMPORT_C*/ const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2305
/*IMPORT_C*/ int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2306
/*IMPORT_C*/ int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2307
/*IMPORT_C*/ double sqlite3_column_double(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2308
/*IMPORT_C*/ int sqlite3_column_int(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2309
/*IMPORT_C*/ sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2310
/*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
  2311
/*IMPORT_C*/ const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2312
/*IMPORT_C*/ int sqlite3_column_type(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2313
/*IMPORT_C*/ sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2314
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
** CAPI3REF: Destroy A Prepared Statement Object {F13300}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2317
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2318
** The sqlite3_finalize() function is called to delete a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2319
** [sqlite3_stmt | compiled SQL statement]. If the statement was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2320
** 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
  2321
** If execution of the statement failed then an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2322
** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2323
** is returned. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2324
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2325
** 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
  2326
** [sqlite3_stmt | virtual machine].  If the virtual machine has not 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2327
** completed execution when this routine is called, that is like
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2328
** encountering an error or an interrupt.  (See [sqlite3_interrupt()].) 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2329
** Incomplete updates may be rolled back and transactions cancelled,  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2330
** depending on the circumstances, and the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2331
** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2332
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2333
/*IMPORT_C*/ int sqlite3_finalize(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2334
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
** CAPI3REF: Reset A Prepared Statement Object {F13330}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2337
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2338
** The sqlite3_reset() function is called to reset a 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2339
** [sqlite3_stmt | compiled SQL statement] object.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2340
** back to its initial state, ready to be re-executed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2341
** Any SQL statement variables that had values bound to them using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2342
** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2343
** Use [sqlite3_clear_bindings()] to reset the bindings.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2344
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2345
/*IMPORT_C*/ int sqlite3_reset(sqlite3_stmt *pStmt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2346
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
** CAPI3REF: Create Or Redefine SQL Functions {F16100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2349
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2350
** 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
  2351
** 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
  2352
** difference only between the two is that the second parameter, the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2353
** 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
  2354
** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2355
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2356
** The first argument is the [sqlite3 | database handle] that holds the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2357
** 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
  2358
** program uses more than one database handle internally, then SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2359
** functions or aggregates must be added individually to each database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2360
** handle with which they will be used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2361
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2362
** 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
  2363
** or redefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2364
** 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
  2365
** 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
  2366
** characters.  Any attempt to create a function with a longer name
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2367
** will result in an SQLITE_ERROR error.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2368
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2369
** 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
  2370
** 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
  2371
** aggregate may take any number of arguments.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2372
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2373
** The fourth parameter, eTextRep, specifies what 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2374
** [SQLITE_UTF8 | text encoding] this SQL function prefers for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2375
** its parameters.  Any SQL function implementation should be able to work
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2376
** 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
  2377
** more efficient with one encoding than another.  It is allowed to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2378
** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2379
** times with the same function but with different values of eTextRep.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2380
** When multiple implementations of the same function are available, SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2381
** 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
  2382
** 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
  2383
** text encoding is used, then the fourth argument should be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2384
** [SQLITE_ANY].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2385
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2386
** The fifth parameter is an arbitrary pointer.  The implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2387
** of the function can gain access to this pointer using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2388
** [sqlite3_user_data()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2389
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2390
** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2391
** pointers to C-language functions that implement the SQL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2392
** function or aggregate. A scalar SQL function requires an implementation of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2393
** 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
  2394
** and xFinal parameters. An aggregate SQL function requires an implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2395
** 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
  2396
** existing SQL function or aggregate, pass NULL for all three function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2397
** callback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2398
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2399
** It is permitted to register multiple implementations of the same
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2400
** functions with the same name but with either differing numbers of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2401
** arguments or differing perferred text encodings.  SQLite will use
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2402
** the implementation most closely matches the way in which the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2403
** SQL function is used.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2404
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2405
/*IMPORT_C*/ int sqlite3_create_function(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2406
  sqlite3 *,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2407
  const char *zFunctionName,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2408
  int nArg,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2409
  int eTextRep,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2410
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2411
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2412
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2413
  void (*xFinal)(sqlite3_context*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2414
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2415
/*IMPORT_C*/ int sqlite3_create_function16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2416
  sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2417
  const void *zFunctionName,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2418
  int nArg,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2419
  int eTextRep,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2420
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2421
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2422
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2423
  void (*xFinal)(sqlite3_context*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2424
);
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
** CAPI3REF: Text Encodings {F10267}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2428
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2429
** These constant define integer codes that represent the various
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2430
** text encodings supported by SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2431
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2432
#define SQLITE_UTF8           1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2433
#define SQLITE_UTF16LE        2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2434
#define SQLITE_UTF16BE        3
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2435
#define SQLITE_UTF16          4    /* Use native byte order */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2436
#define SQLITE_ANY            5    /* sqlite3_create_function only */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2437
#define SQLITE_UTF16_ALIGNED  8    /* sqlite3_create_collation only */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2438
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
** CAPI3REF: Obsolete Functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2441
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2442
** These functions are all now obsolete.  In order to maintain
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2443
** backwards compatibility with older code, we continue to support
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2444
** these functions.  However, new development projects should avoid
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2445
** the use of these functions.  To help encourage people to avoid
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2446
** 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
  2447
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2448
/*IMPORT_C*/ int sqlite3_aggregate_count(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2449
/*IMPORT_C*/ int sqlite3_expired(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2450
/*IMPORT_C*/ int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2451
/*IMPORT_C*/ int sqlite3_global_recover(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2452
/*IMPORT_C*/ void sqlite3_thread_cleanup(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2453
/*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
  2454
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
** CAPI3REF: Obtaining SQL Function Parameter Values {F15100}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2457
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2458
** The C-language implementation of SQL functions and aggregates uses
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2459
** this set of interface routines to access the parameter values on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2460
** the function or aggregate.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2461
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2462
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2463
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2464
** define callbacks that implement the SQL functions and aggregates.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2465
** 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
  2466
** [sqlite3_value] objects.  There is one [sqlite3_value] object for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2467
** each parameter to the SQL function.  These routines are used to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2468
** extract values from the [sqlite3_value] objects.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2469
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2470
** These routines work just like the corresponding 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2471
** [sqlite3_column_blob | sqlite3_column_* routines] except that 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2472
** these routines take a single [sqlite3_value*] pointer instead
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2473
** of an [sqlite3_stmt*] pointer and an integer column number.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2474
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2475
** The sqlite3_value_text16() interface extracts a UTF16 string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2476
** in the native byte-order of the host machine.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2477
** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2478
** extract UTF16 strings as big-endian and little-endian respectively.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2479
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2480
** The sqlite3_value_numeric_type() interface attempts to apply
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2481
** numeric affinity to the value.  This means that an attempt is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2482
** 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
  2483
** such a conversion is possible without loss of information (in other
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2484
** 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
  2485
** then the conversion is done.  Otherwise no conversion occurs.  The 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2486
** [SQLITE_INTEGER | datatype] after conversion is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2487
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2488
** Please pay particular attention to the fact that the pointer that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2489
** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2490
** [sqlite3_value_text16()] can be invalidated by a subsequent call to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2491
** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2492
** or [sqlite3_value_text16()].  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2493
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2494
** These routines must be called from the same thread as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2495
** the SQL function that supplied the sqlite3_value* parameters.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2496
** 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
  2497
** interface, then these routines should be called from the same thread
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2498
** that ran [sqlite3_column_value()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2499
**
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
/*IMPORT_C*/ const void *sqlite3_value_blob(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2502
/*IMPORT_C*/ int sqlite3_value_bytes(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2503
/*IMPORT_C*/ int sqlite3_value_bytes16(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2504
/*IMPORT_C*/ double sqlite3_value_double(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2505
/*IMPORT_C*/ int sqlite3_value_int(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2506
/*IMPORT_C*/ sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2507
/*IMPORT_C*/ const unsigned char *sqlite3_value_text(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2508
/*IMPORT_C*/ const void *sqlite3_value_text16(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2509
/*IMPORT_C*/ const void *sqlite3_value_text16le(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2510
/*IMPORT_C*/ const void *sqlite3_value_text16be(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2511
/*IMPORT_C*/ int sqlite3_value_type(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2512
/*IMPORT_C*/ int sqlite3_value_numeric_type(sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2513
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
** CAPI3REF: Obtain Aggregate Function Context {F16210}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2516
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2517
** The implementation of aggregate SQL functions use this routine to allocate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2518
** a structure for storing their state.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2519
** {F16211} The first time the sqlite3_aggregate_context() routine is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2520
** is called for a particular aggregate, SQLite allocates nBytes of memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2521
** zeros that memory, and returns a pointer to it.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2522
** {F16212} On second and subsequent calls to sqlite3_aggregate_context()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2523
** 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
  2524
** The implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2525
** of the aggregate can use the returned buffer to accumulate data.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2526
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2527
** {F16213} SQLite automatically frees the allocated buffer when the aggregate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2528
** query concludes. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2529
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2530
** The first parameter should be a copy of the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2531
** [sqlite3_context | SQL function context] that is the first
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2532
** parameter to the callback routine that implements the aggregate
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2533
** function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2534
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2535
** This routine must be called from the same thread in which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2536
** the aggregate SQL function is running.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2537
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2538
/*IMPORT_C*/ void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2539
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
** CAPI3REF: User Data For Functions {F16240}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2542
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2543
** {F16241} The sqlite3_user_data() interface returns a copy of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2544
** the pointer that was the pUserData parameter (the 5th parameter)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2545
** of the the [sqlite3_create_function()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2546
** and [sqlite3_create_function16()] routines that originally
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2547
** registered the application defined function. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2548
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2549
** {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
  2550
** the application-defined function is running.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2551
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2552
/*IMPORT_C*/ void *sqlite3_user_data(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2553
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
** CAPI3REF: Function Auxiliary Data {F16270}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2556
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2557
** 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
  2558
** 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
  2559
** multiple invocations of the same SQL function during query execution, under
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2560
** some circumstances the associated meta-data may be preserved. This may
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2561
** be used, for example, to add a regular-expression matching scalar
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2562
** function. The compiled version of the regular expression is stored as
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2563
** 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
  2564
** pattern.  The compiled regular expression can be reused on multiple
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2565
** invocations of the same function so that the original pattern string
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2566
** does not need to be recompiled on each invocation.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2567
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2568
** {F16271}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2569
** 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
  2570
** associated by the sqlite3_set_auxdata() function with the Nth argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2571
** value to the application-defined function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2572
** {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
  2573
** argument of the function, or if the cooresponding function parameter
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2574
** 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
  2575
** returns a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2576
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2577
** {F16275} The sqlite3_set_auxdata() interface saves the meta-data
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2578
** 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
  2579
** argument of the application-defined function. {END} Subsequent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2580
** 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
  2581
** not been destroyed. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2582
** {F16277} If it is not NULL, SQLite will invoke the destructor 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2583
** function given by the 4th parameter to sqlite3_set_auxdata() on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2584
** the meta-data when the corresponding function parameter changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2585
** or when the SQL statement completes, whichever comes first. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2586
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2587
** In practice, meta-data is preserved between function calls for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2588
** expressions that are constant at compile time. This includes literal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2589
** values and SQL variables.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2590
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2591
** These routines must be called from the same thread in which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2592
** the SQL function is running.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2593
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2594
/*IMPORT_C*/ void *sqlite3_get_auxdata(sqlite3_context*, int N);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2595
/*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
  2596
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
** CAPI3REF: Constants Defining Special Destructor Behavior {F10280}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2600
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2601
** 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
  2602
** final argument to routines like [sqlite3_result_blob()].  If the destructor
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2603
** 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
  2604
** 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
  2605
** SQLITE_TRANSIENT value means that the content will likely change in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2606
** 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
  2607
** the content before returning.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2608
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2609
** The typedef is necessary to work around problems in certain
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2610
** C++ compilers.  See ticket #2191.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2611
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2612
typedef void (*sqlite3_destructor_type)(void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2613
#define SQLITE_STATIC      ((sqlite3_destructor_type)0)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2614
#define SQLITE_TRANSIENT   ((sqlite3_destructor_type)-1)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2615
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
** CAPI3REF: Setting The Result Of An SQL Function {F16400}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2618
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2619
** These routines are used by the xFunc or xFinal callbacks that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2620
** implement SQL functions and aggregates.  See
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2621
** [sqlite3_create_function()] and [sqlite3_create_function16()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2622
** for additional information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2623
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2624
** These functions work very much like the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2625
** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2626
** to bind values to host parameters in prepared statements.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2627
** Refer to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2628
** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2629
** additional information.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2630
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2631
** {F16402} The sqlite3_result_blob() interface sets the result from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2632
** 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
  2633
** 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
  2634
** third parameter. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2635
** {F16403} The sqlite3_result_zeroblob() inerfaces set the result of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2636
** the application defined function to be a BLOB containing all zero
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2637
** 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
  2638
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2639
** {F16407} The sqlite3_result_double() interface sets the result from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2640
** an application defined function to be a floating point value specified
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2641
** by its 2nd argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2642
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2643
** {F16409} The sqlite3_result_error() and sqlite3_result_error16() functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2644
** cause the implemented SQL function to throw an exception.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2645
** {F16411} SQLite uses the string pointed to by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2646
** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2647
** 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
  2648
** message string from sqlite3_result_error() as UTF8.  {F16413} SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2649
** interprets the string from sqlite3_result_error16() as UTF16 in native
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2650
** byte order.  {F16414} If the third parameter to sqlite3_result_error()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2651
** 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
  2652
** message all text up through the first zero character.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2653
** {F16415} If the third parameter to sqlite3_result_error() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2654
** sqlite3_result_error16() is non-negative then SQLite takes that many
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2655
** bytes (not characters) from the 2nd parameter as the error message.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2656
** {F16417} The sqlite3_result_error() and sqlite3_result_error16()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2657
** 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
  2658
** they return.  {END} Hence, the calling function can deallocate or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2659
** modify the text after they return without harm.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2660
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2661
** {F16421} The sqlite3_result_toobig() interface causes SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2662
** 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
  2663
** to represent.  {F16422} The sqlite3_result_nomem() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2664
** causes SQLite to throw an exception indicating that the a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2665
** memory allocation failed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2666
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2667
** {F16431} The sqlite3_result_int() interface sets the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2668
** 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
  2669
** value given in the 2nd argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2670
** {F16432} The sqlite3_result_int64() interface sets the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2671
** 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
  2672
** value given in the 2nd argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2673
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2674
** {F16437} The sqlite3_result_null() interface sets the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2675
** of the application-defined function to be NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2676
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2677
** {F16441} The sqlite3_result_text(), sqlite3_result_text16(), 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2678
** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2679
** set the return value of the application-defined function to be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2680
** 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
  2681
** UTF-16 little endian, or UTF-16 big endian, respectively.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2682
** {F16442} SQLite takes the text result from the application from
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2683
** the 2nd parameter of the sqlite3_result_text* interfaces.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2684
** {F16444} If the 3rd parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2685
** is negative, then SQLite takes result text from the 2nd parameter 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2686
** through the first zero character.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2687
** {F16447} If the 3rd parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2688
** 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
  2689
** 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
  2690
** function result.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2691
** {F16451} If the 4th parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2692
** 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
  2693
** 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
  2694
** finished using that result.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2695
** {F16453} If the 4th parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2696
** or sqlite3_result_blob is the special constant SQLITE_STATIC, then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2697
** 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
  2698
** 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
  2699
** finished using that result.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2700
** {F16454} If the 4th parameter to the sqlite3_result_text* interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2701
** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2702
** 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
  2703
** from [sqlite3_malloc()] before it returns.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2704
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2705
** {F16461} The sqlite3_result_value() interface sets the result of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2706
** the application-defined function to be a copy the [sqlite3_value]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2707
** object specified by the 2nd parameter.  {F16463} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2708
** sqlite3_result_value() interface makes a copy of the [sqlite3_value]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2709
** so that [sqlite3_value] specified in the parameter may change or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2710
** be deallocated after sqlite3_result_value() returns without harm.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2711
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2712
** {U16491} These routines are called from within the different thread 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2713
** than the one containing the application-defined function that recieved
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2714
** the [sqlite3_context] pointer, the results are undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2715
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2716
/*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
  2717
/*IMPORT_C*/ void sqlite3_result_double(sqlite3_context*, double);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2718
/*IMPORT_C*/ void sqlite3_result_error(sqlite3_context*, const char*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2719
/*IMPORT_C*/ void sqlite3_result_error16(sqlite3_context*, const void*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2720
/*IMPORT_C*/ void sqlite3_result_error_toobig(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2721
/*IMPORT_C*/ void sqlite3_result_error_nomem(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2722
/*IMPORT_C*/ void sqlite3_result_int(sqlite3_context*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2723
/*IMPORT_C*/ void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2724
/*IMPORT_C*/ void sqlite3_result_null(sqlite3_context*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2725
/*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
  2726
/*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
  2727
/*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
  2728
/*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
  2729
/*IMPORT_C*/ void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2730
/*IMPORT_C*/ void sqlite3_result_zeroblob(sqlite3_context*, int n);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2731
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
** CAPI3REF: Define New Collating Sequences {F16600}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2734
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2735
** {F16601}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2736
** These functions are used to add new collation sequences to the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2737
** [sqlite3*] handle specified as the first argument. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2738
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2739
** {F16602}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2740
** 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
  2741
** for sqlite3_create_collation() and sqlite3_create_collation_v2()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2742
** 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
  2743
** the name is passed as the second function argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2744
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2745
** {F16604}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2746
** The third argument may be one of the constants [SQLITE_UTF8],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2747
** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2748
** 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
  2749
** 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
  2750
** third argument might also be [SQLITE_UTF16_ALIGNED] to indicate that
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2751
** the routine expects pointers to 16-bit word aligned strings
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2752
** of UTF16 in the native byte order of the host computer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2753
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2754
** {F16607}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2755
** 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
  2756
** 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
  2757
** sequence (so that SQLite cannot call it anymore).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2758
** {F16611} Each time the application
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2759
** 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
  2760
** the fourth argument to sqlite3_create_collation() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2761
** sqlite3_create_collation16() as its first parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2762
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2763
** {F16612}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2764
** The remaining arguments to the application-supplied routine are two strings,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2765
** 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
  2766
** 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
  2767
** registered. {END} The application defined collation routine should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2768
** return negative, zero or positive if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2769
** 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
  2770
** string. i.e. (STRING1 - STRING2).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2771
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2772
** {F16615}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2773
** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2774
** 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
  2775
** the collation.  {F16617} The destructor is called when the collation is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2776
** 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
  2777
** of the sqlite3_create_collation_v2().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2778
** {F16618}  Collations are destroyed when
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2779
** they are overridden by later calls to the collation creation functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2780
** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2781
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2782
/*IMPORT_C*/ int sqlite3_create_collation(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2783
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2784
  const char *zName, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2785
  int eTextRep, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2786
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2787
  int(*xCompare)(void*,int,const void*,int,const void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2788
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2789
/*IMPORT_C*/ int sqlite3_create_collation_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2790
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2791
  const char *zName, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2792
  int eTextRep, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2793
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2794
  int(*xCompare)(void*,int,const void*,int,const void*),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2795
  void(*xDestroy)(void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2796
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2797
/*IMPORT_C*/ int sqlite3_create_collation16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2798
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2799
  const char *zName, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2800
  int eTextRep, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2801
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2802
  int(*xCompare)(void*,int,const void*,int,const void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2803
);
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
** CAPI3REF: Collation Needed Callbacks {F16700}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2807
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2808
** {F16701}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2809
** To avoid having to register all collation sequences before a database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2810
** 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
  2811
** database handle to be called whenever an undefined collation sequence is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2812
** required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2813
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2814
** {F16702}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2815
** If the function is registered using the sqlite3_collation_needed() API,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2816
** 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
  2817
** 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
  2818
** 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
  2819
** function replaces any existing callback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2820
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2821
** {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
  2822
** of the second argument to sqlite3_collation_needed() or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2823
** sqlite3_collation_needed16(). {F16706} The second argument is the database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2824
** handle.  {F16707} The third argument is one of [SQLITE_UTF8],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2825
** [SQLITE_UTF16BE], or [SQLITE_UTF16LE], indicating the most
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2826
** desirable form of the collation sequence function required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2827
** {F16708} The fourth parameter is the name of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2828
** required collation sequence. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2829
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2830
** The callback function should register the desired collation using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2831
** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2832
** [sqlite3_create_collation_v2()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2833
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2834
/*IMPORT_C*/ int sqlite3_collation_needed(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2835
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2836
  void*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2837
  void(*)(void*,sqlite3*,int eTextRep,const char*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2838
);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2839
/*IMPORT_C*/ int sqlite3_collation_needed16(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2840
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2841
  void*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2842
  void(*)(void*,sqlite3*,int eTextRep,const void*)
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2843
);
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
** Specify the key for an encrypted database.  This routine should be
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2847
** called right after sqlite3_open().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2848
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2849
** 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
  2850
** of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2851
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2852
/*IMPORT_C*/ int sqlite3_key(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2853
  sqlite3 *db,                   /* Database to be rekeyed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2854
  const void *pKey, int nKey     /* The key */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2855
);
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
** 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
  2859
** 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
  2860
** database is decrypted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2861
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2862
** 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
  2863
** of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2864
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2865
/*IMPORT_C*/ int sqlite3_rekey(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2866
  sqlite3 *db,                   /* Database to be rekeyed */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2867
  const void *pKey, int nKey     /* The new key */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2868
);
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
** CAPI3REF:  Suspend Execution For A Short Time {F10530}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2872
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2873
** {F10531} The sqlite3_sleep() function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2874
** causes the current thread to suspend execution
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2875
** for at least a number of milliseconds specified in its parameter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2876
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2877
** {F10532} If the operating system does not support sleep requests with 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2878
** millisecond time resolution, then the time will be rounded up to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2879
** the nearest second. {F10533} The number of milliseconds of sleep actually 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2880
** requested from the operating system is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2881
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2882
** {F10534} SQLite implements this interface by calling the xSleep()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2883
** method of the default [sqlite3_vfs] object. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2884
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2885
/*IMPORT_C*/ int sqlite3_sleep(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2886
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
** CAPI3REF:  Name Of The Folder Holding Temporary Files {F10310}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2889
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2890
** 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
  2891
** 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
  2892
** 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
  2893
** 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
  2894
** file directory.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2895
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2896
** 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
  2897
** 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
  2898
** as part of process initialization and before any SQLite interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2899
** routines have been call and remain unchanged thereafter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2900
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2901
SQLITE_EXTERN char *sqlite3_temp_directory;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2902
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
** 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
  2905
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2906
** {F12931} The sqlite3_get_autocommit() interfaces returns non-zero or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2907
** 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
  2908
** respectively. {F12932}  Autocommit mode is on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2909
** by default.  {F12933} Autocommit mode is disabled by a BEGIN statement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2910
** {F12934} Autocommit mode is reenabled by a COMMIT or ROLLBACK. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2911
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2912
** 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
  2913
** transactions (errors including [SQLITE_FULL], [SQLITE_IOERR], 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2914
** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2915
** transaction might be rolled back automatically.  {F12935} The only way to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2916
** find out if SQLite automatically rolled back the transaction after
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2917
** an error is to use this function. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2918
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2919
** {U12936} If another thread changes the autocommit status of the database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2920
** connection while this routine is running, then the return value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2921
** is undefined. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2922
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2923
/*IMPORT_C*/ int sqlite3_get_autocommit(sqlite3*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2924
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
** CAPI3REF:  Find The Database Handle Of A Prepared Statement {F13120}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2927
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2928
** {F13121} The sqlite3_db_handle interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2929
** returns the [sqlite3*] database handle to which a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2930
** [sqlite3_stmt | prepared statement] belongs.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2931
** {F13122} the database handle returned by sqlite3_db_handle
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2932
** is the same database handle that was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2933
** the first argument to the [sqlite3_prepare_v2()] or its variants
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2934
** that was used to create the statement in the first place.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2935
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2936
/*IMPORT_C*/ sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2937
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
** CAPI3REF: Commit And Rollback Notification Callbacks {F12950}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2941
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2942
** {F12951} The sqlite3_commit_hook() interface registers a callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2943
** function to be invoked whenever a transaction is committed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2944
** {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
  2945
** for the same database connection is overridden.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2946
** {F12953} The sqlite3_rollback_hook() interface registers a callback
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2947
** function to be invoked whenever a transaction is committed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2948
** {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
  2949
** for the same database connection is overridden.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2950
** {F12956} The pArg argument is passed through
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2951
** 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
  2952
** returns non-zero, then the commit is converted into a rollback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2953
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2954
** {F12958} If another function was previously registered, its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2955
** pArg value is returned.  Otherwise NULL is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2956
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2957
** {F12959} Registering a NULL function disables the callback.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2958
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2959
** {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
  2960
** rolled back if an explicit "ROLLBACK" statement is executed, or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2961
** an error or constraint causes an implicit rollback to occur.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2962
** {F12962} The rollback callback is not invoked if a transaction is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2963
** automatically rolled back because the database connection is closed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2964
** {F12964} The rollback callback is not invoked if a transaction is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2965
** rolled back because a commit callback returned non-zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2966
** <todo> Check on this </todo> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2967
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2968
** These are experimental interfaces and are subject to change.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2969
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2970
/*IMPORT_C*/ void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2971
/*IMPORT_C*/ void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2972
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
** CAPI3REF: Data Change Notification Callbacks {F12970}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2975
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2976
** {F12971} The sqlite3_update_hook() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2977
** registers a callback function with the database connection identified by the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2978
** 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
  2979
** {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
  2980
** database connection is overridden.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2981
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2982
** {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
  2983
** row is updated, inserted or deleted. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2984
** {F12976} The first argument to the callback is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2985
** a copy of the third argument to sqlite3_update_hook().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2986
** {F12977} The second callback 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2987
** argument is one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2988
** depending on the operation that caused the callback to be invoked.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2989
** {F12978} The third and 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2990
** fourth arguments to the callback contain pointers to the database and 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2991
** table name containing the affected row.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2992
** {F12979} The final callback parameter is 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2993
** the rowid of the row.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2994
** {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
  2995
** the update takes place.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2996
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2997
** {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
  2998
** modified (i.e. sqlite_master and sqlite_sequence).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  2999
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3000
** {F12984} If another function was previously registered, its pArg value
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3001
** is returned.  {F12985} Otherwise NULL is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3002
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3003
/*IMPORT_C*/ void *sqlite3_update_hook(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3004
  sqlite3*, 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3005
  void(*)(void *,int ,char const *,char const *,sqlite3_int64),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3006
  void*
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3007
);
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
** CAPI3REF:  Enable Or Disable Shared Pager Cache {F10330}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3011
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3012
** {F10331}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3013
** This routine enables or disables the sharing of the database cache
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3014
** and schema data structures between connections to the same database.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3015
** {F10332}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3016
** 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
  3017
** is false.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3018
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3019
** {F10333} Cache sharing is enabled and disabled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3020
** 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
  3021
** In prior versions of SQLite, sharing was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3022
** enabled or disabled for each thread separately.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3023
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3024
** {F10334}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3025
** The cache sharing mode set by this interface effects all subsequent
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3026
** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3027
** {F10335} Existing database connections continue use the sharing mode
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3028
** that was in effect at the time they were opened. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3029
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3030
** 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
  3031
** cache is enabled, the [sqlite3_create_module()] API used to register
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3032
** virtual tables will always return an error. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3033
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3034
** {F10337} This routine returns [SQLITE_OK] if shared cache was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3035
** enabled or disabled successfully.  {F10338} An [SQLITE_ERROR | error code]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3036
** is returned otherwise. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3037
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3038
** {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
  3039
** future releases of SQLite.  Applications that care about shared
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3040
** cache setting should set it explicitly.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3041
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3042
/*IMPORT_C*/ int sqlite3_enable_shared_cache(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3043
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
** CAPI3REF:  Attempt To Free Heap Memory {F17340}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3046
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3047
** {F17341} The sqlite3_release_memory() interface attempts to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3048
** free N bytes of heap memory by deallocating non-essential memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3049
** allocations held by the database labrary. {END}  Memory used
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3050
** to cache database pages to improve performance is an example of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3051
** non-essential memory.  {F16342} sqlite3_release_memory() returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3052
** 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
  3053
** than the amount requested.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3054
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3055
/*IMPORT_C*/ int sqlite3_release_memory(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3056
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
** CAPI3REF:  Impose A Limit On Heap Size {F17350}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3059
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3060
** {F16351} The sqlite3_soft_heap_limit() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3061
** 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
  3062
** by SQLite. {F16352} If an internal allocation is requested 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3063
** that would exceed the soft heap limit, [sqlite3_release_memory()] is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3064
** 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
  3065
** is made. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3066
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3067
** {F16353} The limit is called "soft", because if
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3068
** [sqlite3_release_memory()] cannot
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3069
** free sufficient memory to prevent the limit from being exceeded,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3070
** the memory is allocated anyway and the current operation proceeds.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3071
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3072
** {F16354}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3073
** 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
  3074
** [sqlite3_release_memory()] will only be called when memory is exhausted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3075
** {F16355} The default value for the soft heap limit is zero.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3076
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3077
** SQLite makes a best effort to honor the soft heap limit.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3078
** {F16356} But if the soft heap limit cannot honored, execution will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3079
** 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
  3080
** called a "soft" limit.  It is advisory only.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3081
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3082
** 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
  3083
** 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
  3084
** 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
  3085
** 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
  3086
** 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
  3087
** 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
  3088
** individual threads.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3089
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3090
/*IMPORT_C*/ void sqlite3_soft_heap_limit(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3091
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
** CAPI3REF:  Extract Metadata About A Column Of A Table {F12850}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3094
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3095
** This routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3096
** returns meta-data about a specific column of a specific database
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3097
** table accessible using the connection handle passed as the first function 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3098
** argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3099
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3100
** 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
  3101
** 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
  3102
** (i.e. "main", "temp" or an attached database) containing the specified
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3103
** 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
  3104
** 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
  3105
** resolve unqualified table references.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3106
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3107
** 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
  3108
** name of the desired column, respectively. Neither of these parameters 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3109
** may be NULL.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3110
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3111
** 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
  3112
** the 5th and subsequent parameters to this function. Any of these 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3113
** 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
  3114
** information is ommitted.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3115
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3116
** <pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3117
** Parameter     Output Type      Description
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3118
** -----------------------------------
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
**   5th         const char*      Data type
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3121
**   6th         const char*      Name of the default collation sequence 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3122
**   7th         int              True if the column has a NOT NULL constraint
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3123
**   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
  3124
**   9th         int              True if the column is AUTOINCREMENT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3125
** </pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3126
**
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
** The memory pointed to by the character pointers returned for the 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3129
** declaration type and collation sequence is valid only until the next 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3130
** call to any sqlite API function.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3131
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3132
** 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
  3133
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3134
** If the specified column is "rowid", "oid" or "_rowid_" and an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3135
** INTEGER PRIMARY KEY column has been explicitly declared, then the output 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3136
** 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
  3137
** explicitly declared IPK column, then the output parameters are set as 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3138
** follows:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3139
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3140
** <pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3141
**     data type: "INTEGER"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3142
**     collation sequence: "BINARY"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3143
**     not null: 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3144
**     primary key: 1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3145
**     auto increment: 0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3146
** </pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3147
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3148
** 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
  3149
** 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
  3150
** 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
  3151
** left in the database handle (to be retrieved using sqlite3_errmsg()).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3152
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3153
** 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
  3154
** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3155
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3156
/*IMPORT_C*/ int sqlite3_table_column_metadata(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3157
  sqlite3 *db,                /* Connection handle */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3158
  const char *zDbName,        /* Database name or NULL */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3159
  const char *zTableName,     /* Table name */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3160
  const char *zColumnName,    /* Column name */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3161
  char const **pzDataType,    /* OUTPUT: Declared data type */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3162
  char const **pzCollSeq,     /* OUTPUT: Collation sequence name */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3163
  int *pNotNull,              /* OUTPUT: True if NOT NULL constraint exists */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3164
  int *pPrimaryKey,           /* OUTPUT: True if column part of PK */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3165
  int *pAutoinc               /* OUTPUT: True if column is auto-increment */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3166
);
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
** CAPI3REF: Load An Extension {F12600}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3170
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3171
** {F12601} The sqlite3_load_extension() interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3172
** attempts to load an SQLite extension library contained in the file
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3173
** 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
  3174
** in which case the name of the entry point defaults
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3175
** to "sqlite3_extension_init".
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3176
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3177
** {F12604} The sqlite3_load_extension() interface shall
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3178
** 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
  3179
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3180
** {F12605}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3181
** If an error occurs and pzErrMsg is not 0, then the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3182
** sqlite3_load_extension() interface shall attempt to fill *pzErrMsg with 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3183
** error message text stored in memory obtained from [sqlite3_malloc()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3184
** {END}  The calling function should free this memory
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3185
** by calling [sqlite3_free()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3186
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3187
** {F12606}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3188
** Extension loading must be enabled using [sqlite3_enable_load_extension()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3189
** prior to calling this API or an error will be returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3190
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3191
/*IMPORT_C*/ int sqlite3_load_extension(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3192
  sqlite3 *db,          /* Load the extension into this database connection */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3193
  const char *zFile,    /* Name of the shared library containing extension */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3194
  const char *zProc,    /* Entry point.  Derived from zFile if 0 */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3195
  char **pzErrMsg       /* Put error message here if not 0 */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3196
);
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
** CAPI3REF:  Enable Or Disable Extension Loading {F12620}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3200
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3201
** 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
  3202
** 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
  3203
** extension loading while evaluating user-entered SQL, the following
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3204
** 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
  3205
** off.  {F12622} It is off by default. {END} See ticket #1863.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3206
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3207
** {F12621} Call the sqlite3_enable_load_extension() routine
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3208
** with onoff==1 to turn extension loading on
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3209
** 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
  3210
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3211
/*IMPORT_C*/ int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3212
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
** CAPI3REF: Make Arrangements To Automatically Load An Extension {F12640}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3215
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3216
** {F12641} This function
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3217
** registers an extension entry point that is automatically invoked
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3218
** whenever a new database connection is opened using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3219
** [sqlite3_open()], [sqlite3_open16()], or [sqlite3_open_v2()]. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3220
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3221
** 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
  3222
** one or more statically linked extensions that will be available
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3223
** to all new database connections.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3224
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3225
** {F12642} Duplicate extensions are detected so calling this routine multiple
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3226
** times with the same extension is harmless.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3227
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3228
** {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
  3229
** 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
  3230
** 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
  3231
** array, then invoke [sqlite3_reset_auto_extension()] prior
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3232
** to shutdown to free the memory.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3233
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3234
** {F12644} Automatic extensions apply across all threads. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3235
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3236
** This interface is experimental and is subject to change or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3237
** removal in future releases of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3238
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3239
/*IMPORT_C*/ int sqlite3_auto_extension(void *xEntryPoint);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3240
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
** CAPI3REF: Reset Automatic Extension Loading {F12660}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3244
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3245
** {F12661} This function disables all previously registered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3246
** automatic extensions. {END}  This
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3247
** routine undoes the effect of all prior [sqlite3_automatic_extension()]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3248
** calls.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3249
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3250
** {F12662} This call disabled automatic extensions in all threads. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3251
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3252
** This interface is experimental and is subject to change or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3253
** removal in future releases of SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3254
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3255
/*IMPORT_C*/ void sqlite3_reset_auto_extension(void);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3256
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
****** EXPERIMENTAL - subject to change without notice **************
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3260
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3261
** The interface to the virtual-table mechanism is currently considered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3262
** to be experimental.  The interface might change in incompatible ways.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3263
** 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
  3264
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3265
** When the virtual-table mechanism stablizes, we will declare the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3266
** interface fixed, support it indefinitely, and remove this comment.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3267
*/
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
** Structures used by the virtual table interface
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3271
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3272
typedef struct sqlite3_vtab sqlite3_vtab;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3273
typedef struct sqlite3_index_info sqlite3_index_info;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3274
typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3275
typedef struct sqlite3_module sqlite3_module;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3276
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
** 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
  3279
** by an instance of the following structure.  This structure consists
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3280
** mostly of methods for the module.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3281
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3282
struct sqlite3_module {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3283
  int iVersion;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3284
  int (*xCreate)(sqlite3*, void *pAux,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3285
               int argc, const char *const*argv,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3286
               sqlite3_vtab **ppVTab, char**);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3287
  int (*xConnect)(sqlite3*, void *pAux,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3288
               int argc, const char *const*argv,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3289
               sqlite3_vtab **ppVTab, char**);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3290
  int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3291
  int (*xDisconnect)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3292
  int (*xDestroy)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3293
  int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3294
  int (*xClose)(sqlite3_vtab_cursor*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3295
  int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3296
                int argc, sqlite3_value **argv);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3297
  int (*xNext)(sqlite3_vtab_cursor*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3298
  int (*xEof)(sqlite3_vtab_cursor*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3299
  int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3300
  int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3301
  int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3302
  int (*xBegin)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3303
  int (*xSync)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3304
  int (*xCommit)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3305
  int (*xRollback)(sqlite3_vtab *pVTab);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3306
  int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3307
                       void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3308
                       void **ppArg);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3309
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3310
  int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3311
};
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
** The sqlite3_index_info structure and its substructures is used to
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3315
** pass information into and receive the reply from the xBestIndex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3316
** method of an sqlite3_module.  The fields under **Inputs** are the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3317
** inputs to xBestIndex and are read-only.  xBestIndex inserts its
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3318
** results into the **Outputs** fields.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3319
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3320
** The aConstraint[] array records WHERE clause constraints of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3321
** form:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3322
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3323
**         column OP expr
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3324
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3325
** Where OP is =, &lt;, &lt;=, &gt;, or &gt;=.  
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3326
** The particular operator is stored
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3327
** in aConstraint[].op.  The index of the column is stored in 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3328
** aConstraint[].iColumn.  aConstraint[].usable is TRUE if the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3329
** 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
  3330
** is usable) and false if it cannot.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3331
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3332
** The optimizer automatically inverts terms of the form "expr OP column"
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3333
** 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
  3334
** 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
  3335
** The aConstraint[] array only reports WHERE clause terms in the correct
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3336
** form that refer to the particular virtual table being queried.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3337
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3338
** Information about the ORDER BY clause is stored in aOrderBy[].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3339
** 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
  3340
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3341
** The xBestIndex method must fill aConstraintUsage[] with information
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3342
** about what parameters to pass to xFilter.  If argvIndex>0 then
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3343
** the right-hand side of the corresponding aConstraint[] is evaluated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3344
** and becomes the argvIndex-th entry in argv.  If aConstraintUsage[].omit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3345
** 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
  3346
** virtual table and is not checked again by SQLite.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3347
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3348
** The idxNum and idxPtr values are recorded and passed into xFilter.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3349
** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3350
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3351
** The orderByConsumed means that output from xFilter will occur in
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3352
** 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
  3353
** sorting step is required.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3354
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3355
** 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
  3356
** 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
  3357
** 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
  3358
** cost of approximately log(N).
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3359
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3360
struct sqlite3_index_info {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3361
  /* Inputs */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3362
  int nConstraint;           /* Number of entries in aConstraint */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3363
  struct sqlite3_index_constraint {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3364
     int iColumn;              /* Column on left-hand side of constraint */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3365
     unsigned char op;         /* Constraint operator */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3366
     unsigned char usable;     /* True if this constraint is usable */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3367
     int iTermOffset;          /* Used internally - xBestIndex should ignore */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3368
  } *aConstraint;            /* Table of WHERE clause constraints */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3369
  int nOrderBy;              /* Number of terms in the ORDER BY clause */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3370
  struct sqlite3_index_orderby {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3371
     int iColumn;              /* Column number */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3372
     unsigned char desc;       /* True for DESC.  False for ASC. */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3373
  } *aOrderBy;               /* The ORDER BY clause */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3374
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3375
  /* Outputs */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3376
  struct sqlite3_index_constraint_usage {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3377
    int argvIndex;           /* if >0, constraint is part of argv to xFilter */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3378
    unsigned char omit;      /* Do not code a test for this constraint */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3379
  } *aConstraintUsage;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3380
  int idxNum;                /* Number used to identify the index */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3381
  char *idxStr;              /* String, possibly obtained from sqlite3_malloc */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3382
  int needToFreeIdxStr;      /* Free idxStr using sqlite3_free() if true */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3383
  int orderByConsumed;       /* True if output is already ordered */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3384
  double estimatedCost;      /* Estimated cost of using this index */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3385
};
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3386
#define SQLITE_INDEX_CONSTRAINT_EQ    2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3387
#define SQLITE_INDEX_CONSTRAINT_GT    4
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3388
#define SQLITE_INDEX_CONSTRAINT_LE    8
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3389
#define SQLITE_INDEX_CONSTRAINT_LT    16
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3390
#define SQLITE_INDEX_CONSTRAINT_GE    32
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3391
#define SQLITE_INDEX_CONSTRAINT_MATCH 64
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3392
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
** 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
  3395
** connection.  Module names must be registered before creating new
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3396
** virtual tables on the module, or before using preexisting virtual
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3397
** tables of the module.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3398
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3399
/*IMPORT_C*/ int sqlite3_create_module(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3400
  sqlite3 *db,               /* SQLite connection to register module with */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3401
  const char *zName,         /* Name of the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3402
  const sqlite3_module *,    /* Methods for the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3403
  void *                     /* Client data for xCreate/xConnect */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3404
);
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
** This routine is identical to the sqlite3_create_module() method above,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3408
** 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
  3409
** even more experimental than the rest of the virtual tables API.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3410
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3411
/*IMPORT_C*/ int sqlite3_create_module_v2(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3412
  sqlite3 *db,               /* SQLite connection to register module with */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3413
  const char *zName,         /* Name of the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3414
  const sqlite3_module *,    /* Methods for the module */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3415
  void *,                    /* Client data for xCreate/xConnect */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3416
  void(*xDestroy)(void*)     /* Module destructor function */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3417
);
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
** Every module implementation uses a subclass of the following structure
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3421
** to describe a particular instance of the module.  Each subclass will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3422
** be tailored to the specific needs of the module implementation.   The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3423
** 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
  3424
** to all module implementations.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3425
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3426
** Virtual tables methods can set an error message by assigning a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3427
** string obtained from sqlite3_mprintf() to zErrMsg.  The method should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3428
** 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
  3429
** 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
  3430
** 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
  3431
** 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
  3432
** 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
  3433
** since virtual tables are commonly implemented in loadable extensions which
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3434
** do not have access to sqlite3MPrintf() or sqlite3Free().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3435
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3436
struct sqlite3_vtab {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3437
  const sqlite3_module *pModule;  /* The module for this virtual table */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3438
  int nRef;                       /* Used internally */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3439
  char *zErrMsg;                  /* Error message from sqlite3_mprintf() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3440
  /* Virtual table implementations will typically add additional fields */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3441
};
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
/* Every module implementation uses a subclass of the following structure
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3444
** 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
  3445
** to loop through the virtual table.  Cursors are created using the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3446
** xOpen method of the module.  Each module implementation will define
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3447
** the content of a cursor structure to suit its own needs.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3448
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3449
** 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
  3450
** are common to all implementations.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3451
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3452
struct sqlite3_vtab_cursor {
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3453
  sqlite3_vtab *pVtab;      /* Virtual table of this cursor */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3454
  /* Virtual table implementations will typically add additional fields */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3455
};
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
** 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
  3459
** 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
  3460
** the virtual tables they implement.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3461
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3462
/*IMPORT_C*/ int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3463
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
** Virtual tables can provide alternative implementations of functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3466
** using the xFindFunction method.  But global versions of those functions
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3467
** must exist in order to be overloaded.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3468
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3469
** 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
  3470
** name and number of parameters exists.  If no such function exists
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3471
** 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
  3472
** 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
  3473
** 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
  3474
** 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
  3475
** by virtual tables.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3476
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3477
** This API should be considered part of the virtual table interface,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3478
** which is experimental and subject to change.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3479
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3480
/*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
  3481
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
** The interface to the virtual-table mechanism defined above (back up
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3484
** to a comment remarkably similar to this one) is currently considered
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3485
** to be experimental.  The interface might change in incompatible ways.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3486
** 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
  3487
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3488
** When the virtual-table mechanism stabilizes, we will declare the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3489
** interface fixed, support it indefinitely, and remove this comment.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3490
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3491
****** EXPERIMENTAL - subject to change without notice **************
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3492
*/
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
** CAPI3REF: A Handle To An Open BLOB {F17800}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3496
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3497
** An instance of the following opaque structure is used to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3498
** represent an blob-handle.  A blob-handle is created by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3499
** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3500
** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3501
** 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
  3502
** The [sqlite3_blob_bytes()] interface returns the size of the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3503
** blob in bytes.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3504
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3505
typedef struct sqlite3_blob sqlite3_blob;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3506
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
** CAPI3REF: Open A BLOB For Incremental I/O {F17810}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3509
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3510
** {F17811} This interfaces opens a handle to the blob located
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3511
** in row iRow,, column zColumn, table zTable in database zDb;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3512
** in other words,  the same blob that would be selected by:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3513
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3514
** <pre>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3515
**     SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3516
** </pre> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3517
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3518
** {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
  3519
** 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
  3520
** access. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3521
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3522
** {F17813} On success, [SQLITE_OK] is returned and the new 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3523
** [sqlite3_blob | blob handle] is written to *ppBlob. 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3524
** {F17814} Otherwise an error code is returned and 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3525
** 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
  3526
** {F17815} This function sets the database-handle error code and message
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3527
** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3528
** <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
  3529
** way with a similar statement</todo>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3530
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3531
/*IMPORT_C*/ int sqlite3_blob_open(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3532
  sqlite3*,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3533
  const char *zDb,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3534
  const char *zTable,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3535
  const char *zColumn,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3536
  sqlite3_int64 iRow,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3537
  int flags,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3538
  sqlite3_blob **ppBlob
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3539
);
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
** CAPI3REF:  Close A BLOB Handle {F17830}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3543
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3544
** Close an open [sqlite3_blob | blob handle].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3545
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3546
** {F17831} Closing a BLOB shall cause the current transaction to commit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3547
** 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
  3548
** database connection is in autocommit mode.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3549
** {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
  3550
** until the close operation if they will fit. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3551
** Closing the BLOB often forces the changes
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3552
** 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
  3553
** 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
  3554
** closing are reported as a non-zero return value.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3555
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3556
** {F17839} The BLOB is closed unconditionally.  Even if this routine returns
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3557
** an error code, the BLOB is still closed.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3558
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3559
/*IMPORT_C*/ int sqlite3_blob_close(sqlite3_blob *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3560
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
** CAPI3REF:  Return The Size Of An Open BLOB {F17805}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3563
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3564
** {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
  3565
** [sqlite3_blob | blob-handle] passed as an argument.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3566
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3567
/*IMPORT_C*/ int sqlite3_blob_bytes(sqlite3_blob *);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3568
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
** CAPI3REF:  Read Data From A BLOB Incrementally {F17850}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3571
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3572
** This function is used to read data from an open 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3573
** [sqlite3_blob | blob-handle] into a caller supplied buffer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3574
** {F17851} n bytes of data are copied into buffer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3575
** z from the open blob, starting at offset iOffset.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3576
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3577
** {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
  3578
** [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
  3579
** 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
  3580
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3581
** {F17854} On success, SQLITE_OK is returned. Otherwise, an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3582
** [SQLITE_ERROR | SQLite error code] or an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3583
** [SQLITE_IOERR_READ | extended error code] is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3584
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3585
/*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
  3586
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
** CAPI3REF:  Write Data Into A BLOB Incrementally {F17870}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3589
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3590
** This function is used to write data into an open 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3591
** [sqlite3_blob | blob-handle] from a user supplied buffer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3592
** {F17871} n bytes of data are copied from the buffer
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3593
** 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
  3594
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3595
** {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
  3596
** 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
  3597
*** was zero), this function returns [SQLITE_READONLY].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3598
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3599
** {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
  3600
** 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
  3601
** {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
  3602
** [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
  3603
** 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
  3604
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3605
** {F17876} On success, SQLITE_OK is returned. Otherwise, an 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3606
** [SQLITE_ERROR | SQLite error code] or an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3607
** [SQLITE_IOERR_READ | extended error code] is returned.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3608
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3609
/*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
  3610
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
** CAPI3REF:  Virtual File System Objects {F11200}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3613
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3614
** A virtual filesystem (VFS) is an [sqlite3_vfs] object
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3615
** that SQLite uses to interact
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3616
** with the underlying operating system.  Most builds come with a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3617
** single default VFS that is appropriate for the host computer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3618
** New VFSes can be registered and existing VFSes can be unregistered.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3619
** The following interfaces are provided.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3620
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3621
** {F11201} The sqlite3_vfs_find() interface returns a pointer to 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3622
** a VFS given its name.  {F11202} Names are case sensitive.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3623
** {F11203} Names are zero-terminated UTF-8 strings.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3624
** {F11204} If there is no match, a NULL
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3625
** pointer is returned. {F11205} If zVfsName is NULL then the default 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3626
** VFS is returned. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3627
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3628
** {F11210} New VFSes are registered with sqlite3_vfs_register().
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3629
** {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
  3630
** {F11212} The same VFS can be registered multiple times without injury.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3631
** {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
  3632
** 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
  3633
** same name are registered, the behavior is undefined.  {U11215} If a
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3634
** 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
  3635
** then the behavior is undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3636
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3637
** {F11220} Unregister a VFS with the sqlite3_vfs_unregister() interface.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3638
** {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
  3639
** the default.  The choice for the new VFS is arbitrary.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3640
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3641
/*IMPORT_C*/ sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3642
/*IMPORT_C*/ int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3643
/*IMPORT_C*/ int sqlite3_vfs_unregister(sqlite3_vfs*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3644
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
** CAPI3REF: Mutexes {F17000}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3647
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3648
** The SQLite core uses these routines for thread
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3649
** synchronization.  Though they are intended for internal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3650
** use by SQLite, code that links against SQLite is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3651
** permitted to use any of these routines.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3652
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3653
** The SQLite source code contains multiple implementations 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3654
** of these mutex routines.  An appropriate implementation
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3655
** is selected automatically at compile-time.  The following
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3656
** implementations are available in the SQLite core:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3657
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3658
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3659
** <li>   SQLITE_MUTEX_OS2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3660
** <li>   SQLITE_MUTEX_PTHREAD
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3661
** <li>   SQLITE_MUTEX_W32
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3662
** <li>   SQLITE_MUTEX_NOOP
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3663
** </ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3664
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3665
** The SQLITE_MUTEX_NOOP implementation is a set of routines 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3666
** that does no real locking and is appropriate for use in 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3667
** a single-threaded application.  The SQLITE_MUTEX_OS2,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3668
** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3669
** are appropriate for use on os/2, unix, and windows.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3670
** 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3671
** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3672
** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3673
** implementation is included with the library.  The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3674
** mutex interface routines defined here become external
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3675
** references in the SQLite library for which implementations
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3676
** must be provided by the application.  This facility allows an
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3677
** application that links against SQLite to provide its own mutex
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3678
** implementation without having to modify the SQLite core.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3679
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3680
** {F17011} The sqlite3_mutex_alloc() routine allocates a new
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3681
** 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
  3682
** that means that a mutex could not be allocated. {F17013} SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3683
** will unwind its stack and return an error. {F17014} The argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3684
** to sqlite3_mutex_alloc() is one of these integer constants:
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3685
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3686
** <ul>
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3687
** <li>  SQLITE_MUTEX_FAST
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3688
** <li>  SQLITE_MUTEX_RECURSIVE
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3689
** <li>  SQLITE_MUTEX_STATIC_MASTER
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3690
** <li>  SQLITE_MUTEX_STATIC_MEM
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3691
** <li>  SQLITE_MUTEX_STATIC_MEM2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3692
** <li>  SQLITE_MUTEX_STATIC_PRNG
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3693
** <li>  SQLITE_MUTEX_STATIC_LRU
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3694
** </ul> {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3695
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3696
** {F17015} The first two constants cause sqlite3_mutex_alloc() to create
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3697
** 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
  3698
** 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
  3699
** The mutex implementation does not need to make a distinction
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3700
** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3701
** 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
  3702
** 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
  3703
** implementation is available on the host platform, the mutex subsystem
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3704
** might return such a mutex in response to SQLITE_MUTEX_FAST.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3705
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3706
** {F17017} The other allowed parameters to sqlite3_mutex_alloc() each return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3707
** 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
  3708
** used by the current version of SQLite.  Future versions of SQLite
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3709
** may add additional static mutexes.  Static mutexes are for internal
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3710
** use by SQLite only.  Applications that use SQLite mutexes should
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3711
** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3712
** SQLITE_MUTEX_RECURSIVE.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3713
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3714
** {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
  3715
** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3716
** 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
  3717
** 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
  3718
** the same type number. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3719
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3720
** {F17019} The sqlite3_mutex_free() routine deallocates a previously
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3721
** allocated dynamic mutex. {F17020} SQLite is careful to deallocate every
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3722
** 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
  3723
** use when they are deallocated. {U17022} Attempting to deallocate a static
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3724
** mutex results in undefined behavior. {F17023} SQLite never deallocates
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3725
** a static mutex. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3726
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3727
** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3728
** 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
  3729
** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3730
** SQLITE_BUSY. {F17025}  The sqlite3_mutex_try() interface returns SQLITE_OK
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3731
** upon successful entry.  {F17026} Mutexes created using
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3732
** 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
  3733
** {F17027} In such cases the,
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3734
** 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
  3735
** 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
  3736
** kind of mutex more than once, the behavior is undefined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3737
** {F17029} SQLite will never exhibit
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3738
** such behavior in its own use of mutexes. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3739
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3740
** Some systems (ex: windows95) do not the operation implemented by
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3741
** sqlite3_mutex_try().  On those systems, sqlite3_mutex_try() will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3742
** always return SQLITE_BUSY.  {F17030} The SQLite core only ever uses
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3743
** 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
  3744
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3745
** {F17031} The sqlite3_mutex_leave() routine exits a mutex that was
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3746
** previously entered by the same thread.  {U17032} The behavior
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3747
** is undefined if the mutex is not currently entered by the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3748
** calling thread or is not currently allocated.  {F17033} SQLite will
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3749
** never do either. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3750
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3751
** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3752
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3753
/*IMPORT_C*/ sqlite3_mutex *sqlite3_mutex_alloc(int);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3754
/*IMPORT_C*/ void sqlite3_mutex_free(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3755
/*IMPORT_C*/ void sqlite3_mutex_enter(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3756
/*IMPORT_C*/ int sqlite3_mutex_try(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3757
/*IMPORT_C*/ void sqlite3_mutex_leave(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3758
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
** CAPI3REF: Mutex Verifcation Routines {F17080}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3761
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3762
** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3763
** are intended for use inside assert() statements. {F17081} The SQLite core
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3764
** never uses these routines except inside an assert() and applications
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3765
** 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
  3766
** provides implementations for these routines when it is compiled
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3767
** with the SQLITE_DEBUG flag.  {U17087} External mutex implementations
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3768
** are only required to provide these routines if SQLITE_DEBUG is
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3769
** defined and if NDEBUG is not defined.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3770
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3771
** {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
  3772
** is held or not held, respectively, by the calling thread. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3773
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3774
** {X17084} The implementation is not required to provided versions of these
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3775
** routines that actually work.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3776
** If the implementation does not provide working
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3777
** versions of these routines, it should at least provide stubs
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3778
** that always return true so that one does not get spurious
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3779
** assertion failures. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3780
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3781
** {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
  3782
** the routine should return 1.  {END} This seems counter-intuitive since
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3783
** 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
  3784
** 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
  3785
** using mutexes.  And we do not want the assert() containing the
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3786
** 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
  3787
** the appropriate thing to do.  {F17086} The sqlite3_mutex_notheld() 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3788
** interface should also return 1 when given a NULL pointer.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3789
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3790
/*IMPORT_C*/ int sqlite3_mutex_held(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3791
/*IMPORT_C*/ int sqlite3_mutex_notheld(sqlite3_mutex*);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3792
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
** CAPI3REF: Mutex Types {F17001}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3795
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3796
** {F17002} The [sqlite3_mutex_alloc()] interface takes a single argument
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3797
** which is one of these integer constants. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3798
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3799
#define SQLITE_MUTEX_FAST             0
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3800
#define SQLITE_MUTEX_RECURSIVE        1
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3801
#define SQLITE_MUTEX_STATIC_MASTER    2
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3802
#define SQLITE_MUTEX_STATIC_MEM       3  /* sqlite3_malloc() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3803
#define SQLITE_MUTEX_STATIC_MEM2      4  /* sqlite3_release_memory() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3804
#define SQLITE_MUTEX_STATIC_PRNG      5  /* sqlite3_random() */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3805
#define SQLITE_MUTEX_STATIC_LRU       6  /* lru page list */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3806
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
** CAPI3REF: Low-Level Control Of Database Files {F11300}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3809
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3810
** {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
  3811
** xFileControl method for the [sqlite3_io_methods] object associated
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3812
** with a particular database identified by the second argument. {F11302} The
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3813
** 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
  3814
** <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
  3815
** 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
  3816
** 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
  3817
** are passed directly through to the second and third parameters of
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3818
** the xFileControl method.  {F11305} The return value of the xFileControl
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3819
** method becomes the return value of this routine.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3820
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3821
** {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
  3822
** open database file, then SQLITE_ERROR is returned. {F11307} This error
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3823
** 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
  3824
** or [sqlite3_errmsg()]. {U11308} The underlying xFileControl method might
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3825
** 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
  3826
** an incorrect zDbName and an SQLITE_ERROR return from the underlying
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3827
** xFileControl method. {END}
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3828
**
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3829
** See also: [SQLITE_FCNTL_LOCKSTATE]
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3830
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3831
/*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
  3832
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3833
/*IMPORT_C*/ int sqlite3_openTest(
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3834
  const char *zFilename 
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3835
);
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
/*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
  3838
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3839
/*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
  3840
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3841
/*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
  3842
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3843
/*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
  3844
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3845
/*IMPORT_C*/ unsigned int sqlite3_strlen(char *ptr);
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3846
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
** Undo the hack that converts floating point types to integer for
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3849
** builds on processors without floating point support.
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3850
*/
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3851
#ifdef SQLITE_OMIT_FLOATING_POINT
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3852
# undef double
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3853
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3854
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3855
#ifdef __cplusplus
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3856
}  /* End of the 'extern "C"' block */
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3857
#endif
29cda98b007e Initial import of Podcatcher from the Bergamot project
skip
parents:
diff changeset
  3858
#endif