|
|
|
@ -28,7 +28,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routines; |
|
|
|
** WARNING: In order to maintain backwards compatibility, add new |
|
|
|
** interfaces to the end of this structure only. If you insert new |
|
|
|
** interfaces in the middle of this structure, then older different |
|
|
|
** versions of SQLite will not be able to load each others' shared |
|
|
|
** versions of SQLite will not be able to load each other's shared |
|
|
|
** libraries! |
|
|
|
*/ |
|
|
|
struct sqlite3_api_routines { |
|
|
|
@ -49,8 +49,10 @@ struct sqlite3_api_routines { |
|
|
|
int (*busy_timeout)(sqlite3*,int ms); |
|
|
|
int (*changes)(sqlite3*); |
|
|
|
int (*close)(sqlite3*); |
|
|
|
int (*collation_needed)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const char*)); |
|
|
|
int (*collation_needed16)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const void*)); |
|
|
|
int (*collation_needed)(sqlite3*,void*,void(*)(void*,sqlite3*, |
|
|
|
int eTextRep,const char*)); |
|
|
|
int (*collation_needed16)(sqlite3*,void*,void(*)(void*,sqlite3*, |
|
|
|
int eTextRep,const void*)); |
|
|
|
const void * (*column_blob)(sqlite3_stmt*,int iCol); |
|
|
|
int (*column_bytes)(sqlite3_stmt*,int iCol); |
|
|
|
int (*column_bytes16)(sqlite3_stmt*,int iCol); |
|
|
|
@ -75,10 +77,18 @@ struct sqlite3_api_routines { |
|
|
|
void * (*commit_hook)(sqlite3*,int(*)(void*),void*); |
|
|
|
int (*complete)(const char*sql); |
|
|
|
int (*complete16)(const void*sql); |
|
|
|
int (*create_collation)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*)); |
|
|
|
int (*create_collation16)(sqlite3*,const void*,int,void*,int(*)(void*,int,const void*,int,const void*)); |
|
|
|
int (*create_function)(sqlite3*,const char*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*)); |
|
|
|
int (*create_function16)(sqlite3*,const void*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*)); |
|
|
|
int (*create_collation)(sqlite3*,const char*,int,void*, |
|
|
|
int(*)(void*,int,const void*,int,const void*)); |
|
|
|
int (*create_collation16)(sqlite3*,const void*,int,void*, |
|
|
|
int(*)(void*,int,const void*,int,const void*)); |
|
|
|
int (*create_function)(sqlite3*,const char*,int,int,void*, |
|
|
|
void (*xFunc)(sqlite3_context*,int,sqlite3_value**), |
|
|
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**), |
|
|
|
void (*xFinal)(sqlite3_context*)); |
|
|
|
int (*create_function16)(sqlite3*,const void*,int,int,void*, |
|
|
|
void (*xFunc)(sqlite3_context*,int,sqlite3_value**), |
|
|
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**), |
|
|
|
void (*xFinal)(sqlite3_context*)); |
|
|
|
int (*create_module)(sqlite3*,const char*,const sqlite3_module*,void*); |
|
|
|
int (*data_count)(sqlite3_stmt*pStmt); |
|
|
|
sqlite3 * (*db_handle)(sqlite3_stmt*); |
|
|
|
@ -123,16 +133,19 @@ struct sqlite3_api_routines { |
|
|
|
void (*result_text16le)(sqlite3_context*,const void*,int,void(*)(void*)); |
|
|
|
void (*result_value)(sqlite3_context*,sqlite3_value*); |
|
|
|
void * (*rollback_hook)(sqlite3*,void(*)(void*),void*); |
|
|
|
int (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*,const char*,const char*),void*); |
|
|
|
int (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*, |
|
|
|
const char*,const char*),void*); |
|
|
|
void (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*)); |
|
|
|
char * (*snprintf)(int,char*,const char*,...); |
|
|
|
int (*step)(sqlite3_stmt*); |
|
|
|
int (*table_column_metadata)(sqlite3*,const char*,const char*,const char*,char const**,char const**,int*,int*,int*); |
|
|
|
int (*table_column_metadata)(sqlite3*,const char*,const char*,const char*, |
|
|
|
char const**,char const**,int*,int*,int*); |
|
|
|
void (*thread_cleanup)(void); |
|
|
|
int (*total_changes)(sqlite3*); |
|
|
|
void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*); |
|
|
|
int (*transfer_bindings)(sqlite3_stmt*,sqlite3_stmt*); |
|
|
|
void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*,sqlite_int64),void*); |
|
|
|
void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*, |
|
|
|
sqlite_int64),void*); |
|
|
|
void * (*user_data)(sqlite3_context*); |
|
|
|
const void * (*value_blob)(sqlite3_value*); |
|
|
|
int (*value_bytes)(sqlite3_value*); |
|
|
|
@ -154,15 +167,19 @@ struct sqlite3_api_routines { |
|
|
|
int (*prepare16_v2)(sqlite3*,const void*,int,sqlite3_stmt**,const void**); |
|
|
|
int (*clear_bindings)(sqlite3_stmt*); |
|
|
|
/* Added by 3.4.1 */ |
|
|
|
int (*create_module_v2)(sqlite3*,const char*,const sqlite3_module*,void*,void (*xDestroy)(void *)); |
|
|
|
int (*create_module_v2)(sqlite3*,const char*,const sqlite3_module*,void*, |
|
|
|
void (*xDestroy)(void *)); |
|
|
|
/* Added by 3.5.0 */ |
|
|
|
int (*bind_zeroblob)(sqlite3_stmt*,int,int); |
|
|
|
int (*blob_bytes)(sqlite3_blob*); |
|
|
|
int (*blob_close)(sqlite3_blob*); |
|
|
|
int (*blob_open)(sqlite3*,const char*,const char*,const char*,sqlite3_int64,int,sqlite3_blob**); |
|
|
|
int (*blob_open)(sqlite3*,const char*,const char*,const char*,sqlite3_int64, |
|
|
|
int,sqlite3_blob**); |
|
|
|
int (*blob_read)(sqlite3_blob*,void*,int,int); |
|
|
|
int (*blob_write)(sqlite3_blob*,const void*,int,int); |
|
|
|
int (*create_collation_v2)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*),void(*)(void*)); |
|
|
|
int (*create_collation_v2)(sqlite3*,const char*,int,void*, |
|
|
|
int(*)(void*,int,const void*,int,const void*), |
|
|
|
void(*)(void*)); |
|
|
|
int (*file_control)(sqlite3*,const char*,int,void*); |
|
|
|
sqlite3_int64 (*memory_highwater)(int); |
|
|
|
sqlite3_int64 (*memory_used)(void); |
|
|
|
@ -198,7 +215,11 @@ struct sqlite3_api_routines { |
|
|
|
int (*backup_step)(sqlite3_backup*,int); |
|
|
|
const char *(*compileoption_get)(int); |
|
|
|
int (*compileoption_used)(const char*); |
|
|
|
int (*create_function_v2)(sqlite3*,const char*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*),void(*xDestroy)(void*)); |
|
|
|
int (*create_function_v2)(sqlite3*,const char*,int,int,void*, |
|
|
|
void (*xFunc)(sqlite3_context*,int,sqlite3_value**), |
|
|
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**), |
|
|
|
void (*xFinal)(sqlite3_context*), |
|
|
|
void(*xDestroy)(void*)); |
|
|
|
int (*db_config)(sqlite3*,int,...); |
|
|
|
sqlite3_mutex *(*db_mutex)(sqlite3*); |
|
|
|
int (*db_status)(sqlite3*,int,int*,int*,int); |
|
|
|
@ -212,11 +233,45 @@ struct sqlite3_api_routines { |
|
|
|
int (*wal_autocheckpoint)(sqlite3*,int); |
|
|
|
int (*wal_checkpoint)(sqlite3*,const char*); |
|
|
|
void *(*wal_hook)(sqlite3*,int(*)(void*,sqlite3*,const char*,int),void*); |
|
|
|
int (*blob_reopen)(sqlite3_blob*,sqlite3_int64); |
|
|
|
int (*vtab_config)(sqlite3*,int op,...); |
|
|
|
int (*vtab_on_conflict)(sqlite3*); |
|
|
|
/* Version 3.7.16 and later */ |
|
|
|
int (*close_v2)(sqlite3*); |
|
|
|
const char *(*db_filename)(sqlite3*,const char*); |
|
|
|
int (*db_readonly)(sqlite3*,const char*); |
|
|
|
int (*db_release_memory)(sqlite3*); |
|
|
|
const char *(*errstr)(int); |
|
|
|
int (*stmt_busy)(sqlite3_stmt*); |
|
|
|
int (*stmt_readonly)(sqlite3_stmt*); |
|
|
|
int (*stricmp)(const char*,const char*); |
|
|
|
int (*uri_boolean)(const char*,const char*,int); |
|
|
|
sqlite3_int64 (*uri_int64)(const char*,const char*,sqlite3_int64); |
|
|
|
const char *(*uri_parameter)(const char*,const char*); |
|
|
|
char *(*vsnprintf)(int,char*,const char*,va_list); |
|
|
|
int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); |
|
|
|
/* Version 3.8.7 and later */ |
|
|
|
int (*auto_extension)(void(*)(void)); |
|
|
|
int (*bind_blob64)(sqlite3_stmt*,int,const void*,sqlite3_uint64, |
|
|
|
void(*)(void*)); |
|
|
|
int (*bind_text64)(sqlite3_stmt*,int,const char*,sqlite3_uint64, |
|
|
|
void(*)(void*),unsigned char); |
|
|
|
int (*cancel_auto_extension)(void(*)(void)); |
|
|
|
int (*load_extension)(sqlite3*,const char*,const char*,char**); |
|
|
|
void *(*malloc64)(sqlite3_uint64); |
|
|
|
sqlite3_uint64 (*msize)(void*); |
|
|
|
void *(*realloc64)(void*,sqlite3_uint64); |
|
|
|
void (*reset_auto_extension)(void); |
|
|
|
void (*result_blob64)(sqlite3_context*,const void*,sqlite3_uint64, |
|
|
|
void(*)(void*)); |
|
|
|
void (*result_text64)(sqlite3_context*,const char*,sqlite3_uint64, |
|
|
|
void(*)(void*), unsigned char); |
|
|
|
int (*strglob)(const char*,const char*); |
|
|
|
}; |
|
|
|
|
|
|
|
/* |
|
|
|
** The following macros redefine the API routines so that they are |
|
|
|
** redirected throught the global sqlite3_api structure. |
|
|
|
** redirected through the global sqlite3_api structure. |
|
|
|
** |
|
|
|
** This header file is also used by the loadext.c source file |
|
|
|
** (part of the main SQLite library - not an extension) so that |
|
|
|
@ -412,9 +467,51 @@ struct sqlite3_api_routines { |
|
|
|
#define sqlite3_wal_autocheckpoint sqlite3_api->wal_autocheckpoint |
|
|
|
#define sqlite3_wal_checkpoint sqlite3_api->wal_checkpoint |
|
|
|
#define sqlite3_wal_hook sqlite3_api->wal_hook |
|
|
|
#define sqlite3_blob_reopen sqlite3_api->blob_reopen |
|
|
|
#define sqlite3_vtab_config sqlite3_api->vtab_config |
|
|
|
#define sqlite3_vtab_on_conflict sqlite3_api->vtab_on_conflict |
|
|
|
/* Version 3.7.16 and later */ |
|
|
|
#define sqlite3_close_v2 sqlite3_api->close_v2 |
|
|
|
#define sqlite3_db_filename sqlite3_api->db_filename |
|
|
|
#define sqlite3_db_readonly sqlite3_api->db_readonly |
|
|
|
#define sqlite3_db_release_memory sqlite3_api->db_release_memory |
|
|
|
#define sqlite3_errstr sqlite3_api->errstr |
|
|
|
#define sqlite3_stmt_busy sqlite3_api->stmt_busy |
|
|
|
#define sqlite3_stmt_readonly sqlite3_api->stmt_readonly |
|
|
|
#define sqlite3_stricmp sqlite3_api->stricmp |
|
|
|
#define sqlite3_uri_boolean sqlite3_api->uri_boolean |
|
|
|
#define sqlite3_uri_int64 sqlite3_api->uri_int64 |
|
|
|
#define sqlite3_uri_parameter sqlite3_api->uri_parameter |
|
|
|
#define sqlite3_uri_vsnprintf sqlite3_api->vsnprintf |
|
|
|
#define sqlite3_wal_checkpoint_v2 sqlite3_api->wal_checkpoint_v2 |
|
|
|
/* Version 3.8.7 and later */ |
|
|
|
#define sqlite3_auto_extension sqlite3_api->auto_extension |
|
|
|
#define sqlite3_bind_blob64 sqlite3_api->bind_blob64 |
|
|
|
#define sqlite3_bind_text64 sqlite3_api->bind_text64 |
|
|
|
#define sqlite3_cancel_auto_extension sqlite3_api->cancel_auto_extension |
|
|
|
#define sqlite3_load_extension sqlite3_api->load_extension |
|
|
|
#define sqlite3_malloc64 sqlite3_api->malloc64 |
|
|
|
#define sqlite3_msize sqlite3_api->msize |
|
|
|
#define sqlite3_realloc64 sqlite3_api->realloc64 |
|
|
|
#define sqlite3_reset_auto_extension sqlite3_api->reset_auto_extension |
|
|
|
#define sqlite3_result_blob64 sqlite3_api->result_blob64 |
|
|
|
#define sqlite3_result_text64 sqlite3_api->result_text64 |
|
|
|
#define sqlite3_strglob sqlite3_api->strglob |
|
|
|
#endif /* SQLITE_CORE */ |
|
|
|
|
|
|
|
#define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api = 0; |
|
|
|
#define SQLITE_EXTENSION_INIT2(v) sqlite3_api = v; |
|
|
|
#ifndef SQLITE_CORE |
|
|
|
/* This case when the file really is being compiled as a loadable |
|
|
|
** extension */ |
|
|
|
# define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api=0; |
|
|
|
# define SQLITE_EXTENSION_INIT2(v) sqlite3_api=v; |
|
|
|
# define SQLITE_EXTENSION_INIT3 \ |
|
|
|
extern const sqlite3_api_routines *sqlite3_api; |
|
|
|
#else |
|
|
|
/* This case when the file is being statically linked into the |
|
|
|
** application */ |
|
|
|
# define SQLITE_EXTENSION_INIT1 /*no-op*/ |
|
|
|
# define SQLITE_EXTENSION_INIT2(v) (void)v; /* unused parameter */ |
|
|
|
# define SQLITE_EXTENSION_INIT3 /*no-op*/ |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif /* _SQLITE3EXT_H_ */ |