35#if LUA_VERSION_NUM > 501
40#define lua_strlen lua_rawlen
43#define luaL_typerror(L,ndx,str) luaL_error(L,"bad argument %d (%s expected, got nil)",ndx,str)
45#define luaL_register(L,name,reg) lua_newtable(L);luaL_setfuncs(L,reg,0)
47#define luaL_openlib(L,name,reg,nup) luaL_setfuncs(L,reg,nup)
49#if LUA_VERSION_NUM > 502
53#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n)))
60#if !defined(SQLITE_OMIT_PROGRESS_CALLBACK)
61 #define SQLITE_OMIT_PROGRESS_CALLBACK 0
63#if !defined(LSQLITE_OMIT_UPDATE_HOOK)
64 #define LSQLITE_OMIT_UPDATE_HOOK 0
66#if defined(LSQLITE_OMIT_OPEN_V2)
67 #define SQLITE3_OPEN(L,filename,flags) sqlite3_open(L,filename)
69 #define SQLITE3_OPEN(L,filename,flags) sqlite3_open_v2(L,filename,flags,NULL)
110#if !defined(LSQLITE_OMIT_UPDATE_HOOK) || !LSQLITE_OMIT_UPDATE_HOOK
134#if LUA_VERSION_NUM > 502
135#define PUSH_INT64(L,i64in,fallback) \
137 sqlite_int64 i64 = i64in; \
138 lua_Integer i = (lua_Integer )i64; \
139 if (i == i64) lua_pushinteger(L, i);\
141 lua_Number n = (lua_Number)i64; \
142 if (n == i64) lua_pushnumber(L, n); \
147#define PUSH_INT64(L,i64in,fallback) \
149 sqlite_int64 i64 = i64in; \
150 lua_Number n = (lua_Number)i64; \
151 if (n == i64) lua_pushnumber(L, n); \
236 if (!svm->
vm)
return 0;
269 strcpy(buff,
"closed");
271 sprintf(buff,
"%p", svm);
314 if (index < 0 || index >= svm->
columns) {
383 for (n = 0; n < columns;) {
397 for (n = 0; n < columns;) {
411 for (n = 0; n < columns;) {
426 for (n = 0; n < columns; ++n)
438 for (n = 0; n < columns; ++n)
450 for (n = 0; n < columns; ++n)
463 for (n = 0; n < columns; ++n) {
478 for (n = 0; n < columns; ++n) {
497#if LUA_VERSION_NUM > 502
559 "incorrect number of parameters to bind (%d given, %d to bind)",
564 for (n = 2; n <= top; ++n) {
583 for (n = 1; n <= count; ++n) {
633#if !defined(LSQLITE_OMIT_UPDATE_HOOK) || !LSQLITE_OMIT_UPDATE_HOOK
689#if !defined(LSQLITE_OMIT_UPDATE_HOOK) || !LSQLITE_OMIT_UPDATE_HOOK
705 func_next = func->
next;
764 strcpy(buff,
"closed");
766 sprintf(buff,
"%p", ctx->
ctx);
774 luaL_error(L,
"attempt to call aggregate method from scalar function");
817#if LUA_VERSION_NUM > 502
1019 for (n = 0; n < argc; ++n) {
1106 if (aggregate) aggregate = 1;
1176 int l2,
const void *p2) {
1198 int (*collfunc)(
scc *,int,
const void *,int,
const void *)=
NULL;
1202 luaL_error(L,
"create_collation: function or nil expected");
1203 if (collfunc !=
NULL) {
1211 else luaL_error(L,
"create_collation: could not allocate callback");
1215 (
int(*)(
void*,
int,
const void*,
int,
const void*))collfunc,
1227 char *errmsg =
NULL;
1229 if (extname ==
NULL) {
1304#if !defined(LSQLITE_OMIT_UPDATE_HOOK) || !LSQLITE_OMIT_UPDATE_HOOK
1484#if !defined(SQLITE_OMIT_PROGRESS_CALLBACK) || !SQLITE_OMIT_PROGRESS_CALLBACK
1547 lua_pushliteral(L,
"progress callback support disabled at compile time");
1558 const char *zDestName,
1560 const char *zSourceName
1574 if (!sbu->
bu)
return 0;
1763 for (n = 0; n < columns;) {
1775 for (n = 0; n < columns;) {
1784#if LUA_VERSION_NUM > 502
1833 const char *sqltail;
1867 for (i = 0; i < columns;) {
1874 for (i = 0; i < columns; ++i) {
1884 for (i = 0; i < columns; ++i)
1977 strcpy(buff,
"closed");
2004 if ((!temp || svm->
temp) && svm->
vm)
2132#ifndef LSQLITE_VERSION
2134#define LSQLITE_VERSION "unknown"
2150#define SC(s) { #s, SQLITE_ ## s },
2151#define LSC(s) { #s, LSQLITE_ ## s },
2153static const struct {
2158 SC(OK)
SC(ERROR)
SC(INTERNAL)
SC(PERM)
2159 SC(ABORT)
SC(BUSY)
SC(LOCKED)
SC(NOMEM)
2160 SC(READONLY)
SC(INTERRUPT)
SC(IOERR)
SC(CORRUPT)
2161 SC(NOTFOUND)
SC(FULL)
SC(CANTOPEN)
SC(PROTOCOL)
2162 SC(EMPTY)
SC(SCHEMA)
SC(TOOBIG)
SC(CONSTRAINT)
2163 SC(MISMATCH)
SC(MISUSE)
SC(NOLFS)
2167 SC(RANGE)
SC(ROW)
SC(DONE)
2170 SC(INTEGER)
SC(FLOAT)
SC(TEXT)
SC(BLOB)
2176 SC(CREATE_TEMP_INDEX )
2177 SC(CREATE_TEMP_TABLE )
2178 SC(CREATE_TEMP_TRIGGER)
2179 SC(CREATE_TEMP_VIEW )
2185 SC(DROP_TEMP_INDEX )
2186 SC(DROP_TEMP_TABLE )
2187 SC(DROP_TEMP_TRIGGER )
2215 SC(OPEN_SHAREDCACHE)
2216 SC(OPEN_PRIVATECACHE)
2245#if !defined(LSQLITE_OMIT_UPDATE_HOOK) || !LSQLITE_OMIT_UPDATE_HOOK
2372 luaL_openlib(L,
NULL, lib, 0);
static int dbbu_step(lua_State *L)
static void vm_push_column(lua_State *L, sqlite3_stmt *vm, int idx)
static int dbvm_bind_values(lua_State *L)
static int dbvm_gc(lua_State *L)
static int cleanupbu(lua_State *L, sdb_bu *sbu)
static int dbbu_gc(lua_State *L)
static int db_do_next_row(lua_State *L, int packed)
static int db_db_filename(lua_State *L)
static int db_rows(lua_State *L)
static int lsqlite_open(lua_State *L)
static int cleanupvm(lua_State *L, sdb_vm *svm)
static int lcontext_tostring(lua_State *L)
static int dbbu_finish(lua_State *L)
static int db_busy_timeout(lua_State *L)
static int dbvm_bind_blob(lua_State *L)
static int dbvm_get_type(lua_State *L)
static void lcontext_check_aggregate(lua_State *L, lcontext *ctx)
static void db_update_hook_callback(void *user, int op, char const *dbname, char const *tblname, sqlite3_int64 rowid)
static void db_rollback_hook_callback(void *user)
static int db_prepare(lua_State *L)
static const luaL_Reg vmlib[]
static int db_rollback_hook(lua_State *L)
static int dbvm_tostring(lua_State *L)
static int db_commit_hook_callback(void *user)
static int db_register_function(lua_State *L, int aggregate)
static void collfree(scc *co)
static int db_next_row(lua_State *L)
static int dbvm_last_insert_rowid(lua_State *L)
static const char * sqlite_meta
static lcontext * lsqlite_make_context(lua_State *L)
static int dbbu_remaining(lua_State *L)
static int lsqlite_version(lua_State *L)
static int db_create_aggregate(lua_State *L)
static int dbvm_bind_index(lua_State *L, sqlite3_stmt *vm, int index, int lindex)
static int lsqlite_temp_directory(lua_State *L)
static int dbvm_get_types(lua_State *L)
#define SQLITE3_OPEN(L, filename, flags)
static int db_next_packed_row(lua_State *L)
static int lcontext_user_data(lua_State *L)
static void db_trace_callback(void *user, const char *sql)
static int lcontext_result_text(lua_State *L)
static int db_progress_callback(void *user)
static int lcontext_aggregate_count(lua_State *L)
static int dbvm_get_named_values(lua_State *L)
static void db_sql_normal_function(sqlite3_context *context, int argc, sqlite3_value **argv)
static int db_nrows(lua_State *L)
static void dbvm_check_contents(lua_State *L, sdb_vm *svm)
static int lsqlite_open_ptr(lua_State *L)
static int lsqlite_backup_init(lua_State *L)
static int lsqlite_newindex(lua_State *L)
static sdb_bu * lsqlite_checkbu(lua_State *L, int index)
static lcontext * lsqlite_getcontext(lua_State *L, int index)
static lcontext * lsqlite_checkcontext(lua_State *L, int index)
static int db_close(lua_State *L)
static int lsqlite_lversion(lua_State *L)
static sdb_vm * newvm(lua_State *L, sdb *db)
static int db_trace(lua_State *L)
static int dbvm_get_uvalues(lua_State *L)
static int dbvm_step(lua_State *L)
static int db_progress_handler(lua_State *L)
static int dbvm_bind_parameter_count(lua_State *L)
static int cleanupdb(lua_State *L, sdb *db)
static int db_exec_callback(void *user, int columns, char **data, char **names)
static sdb_bu * lsqlite_getbu(lua_State *L, int index)
static int sqlite_ctx_meta_ref
static int dbvm_get_values(lua_State *L)
static int dbvm_finalize(lua_State *L)
static int db_busy_callback(void *user, int tries)
static const struct @45 sqlite_constants[]
static int collwrapper(scc *co, int l1, const void *p1, int l2, const void *p2)
static const luaL_Reg ctxlib[]
static int stepvm(lua_State *L, sdb_vm *svm)
static int db_errcode(lua_State *L)
static int db_interrupt(lua_State *L)
static int dbvm_get_names(lua_State *L)
static int lcontext_get_aggregate_context(lua_State *L)
static int dbvm_columns(lua_State *L)
static int lsqlite_complete(lua_State *L)
static int db_gc(lua_State *L)
static int lcontext_result_blob(lua_State *L)
static void dbvm_check_bind_index(lua_State *L, sdb_vm *svm, int index)
static int dbvm_bind(lua_State *L)
static int db_urows(lua_State *L)
static int db_get_ptr(lua_State *L)
static void db_sql_finalize_function(sqlite3_context *context)
static int db_create_collation(lua_State *L)
static sdb_vm * lsqlite_getvm(lua_State *L, int index)
static int db_total_changes(lua_State *L)
static int dbvm_reset(lua_State *L)
static void create_meta(lua_State *L, const char *name, const luaL_Reg *lib)
static int db_changes(lua_State *L)
static sdb * newdb(lua_State *L)
static int dbvm_nrows(lua_State *L)
static void dbvm_check_index(lua_State *L, sdb_vm *svm, int index)
static int dbvm_get_named_types(lua_State *L)
static int db_next_named_row(lua_State *L)
static int db_commit_hook(lua_State *L)
static int dbvm_rows(lua_State *L)
static int db_load_extension(lua_State *L)
static int dbvm_get_utypes(lua_State *L)
#define PUSH_INT64(L, i64in, fallback)
static int lcontext_result_double(lua_State *L)
static int lcontext_result(lua_State *L)
static int dbvm_isopen(lua_State *L)
static void db_push_value(lua_State *L, sqlite3_value *value)
static int lsqlite_do_open(lua_State *L, const char *filename, int flags)
static const luaL_Reg dblib[]
static int lcontext_set_aggregate_context(lua_State *L)
static int db_close_vm(lua_State *L)
static const char * sqlite_ctx_meta
static int db_isopen(lua_State *L)
static int dbvm_get_value(lua_State *L)
static int db_do_rows(lua_State *L, int(*f)(lua_State *))
static int dbvm_get_unames(lua_State *L)
static int dbvm_bind_names(lua_State *L)
static int lsqlite_open_memory(lua_State *L)
static int dbvm_bind_parameter_name(lua_State *L)
static int db_update_hook(lua_State *L)
static int db_create_function(lua_State *L)
static const char * sqlite_bu_meta
static sdb * lsqlite_checkdb(lua_State *L, int index)
static int db_exec(lua_State *L)
static int lcontext_result_null(lua_State *L)
LUALIB_API int luaopen_lsqlite3(lua_State *L)
static int luaopen_sqlitelib(lua_State *L)
static int db_last_insert_rowid(lua_State *L)
static sdb * lsqlite_getdb(lua_State *L, int index)
static const char * sqlite_vm_meta
static int dbvm_do_rows(lua_State *L, int(*f)(lua_State *))
static int db_tostring(lua_State *L)
static int lcontext_result_error(lua_State *L)
static int db_busy_handler(lua_State *L)
static const luaL_Reg dbbulib[]
static int lcontext_result_int(lua_State *L)
static const luaL_Reg sqlitelib[]
static sdb_vm * lsqlite_checkvm(lua_State *L, int index)
static int dbvm_get_name(lua_State *L)
static int db_errmsg(lua_State *L)
static int dbvm_urows(lua_State *L)
static int dbbu_pagecount(lua_State *L)
LUA_API void lua_pushstring(lua_State *L, const char *s)
LUA_API int lua_setmetatable(lua_State *L, int objindex)
LUA_API void lua_pushnil(lua_State *L)
LUA_API void lua_pushnumber(lua_State *L, lua_Number n)
LUA_API const char * lua_pushfstring(lua_State *L, const char *fmt,...)
LUA_API void lua_rawget(lua_State *L, int idx)
LUA_API int lua_toboolean(lua_State *L, int idx)
LUA_API void lua_pushboolean(lua_State *L, int b)
LUA_API void lua_pushvalue(lua_State *L, int idx)
LUA_API int lua_type(lua_State *L, int idx)
LUA_API int lua_error(lua_State *L)
LUA_API void lua_gettable(lua_State *L, int idx)
LUA_API void lua_createtable(lua_State *L, int narray, int nrec)
LUA_API void lua_pushlightuserdata(lua_State *L, void *p)
LUA_API void lua_rawseti(lua_State *L, int idx, int n)
LUA_API int lua_isnumber(lua_State *L, int idx)
LUA_API int lua_next(lua_State *L, int idx)
LUA_API void * lua_touserdata(lua_State *L, int idx)
LUA_API int lua_checkstack(lua_State *L, int size)
LUA_API void lua_pushlstring(lua_State *L, const char *s, size_t len)
LUA_API void lua_settop(lua_State *L, int idx)
LUA_API void lua_pushinteger(lua_State *L, lua_Integer n)
LUA_API const char * lua_typename(lua_State *L, int t)
LUA_API void lua_rawgeti(lua_State *L, int idx, int n)
LUA_API void lua_rawset(lua_State *L, int idx)
LUA_API int lua_gettop(lua_State *L)
LUALIB_API int luaL_typerror(lua_State *L, int narg, const char *tname)
LUALIB_API int luaL_ref(lua_State *L, int t)
LUALIB_API void luaL_checktype(lua_State *L, int narg, int t)
LUALIB_API int luaL_newmetatable(lua_State *L, const char *tname)
LUALIB_API void * luaL_checkudata(lua_State *L, int ud, const char *tname)
LUALIB_API int luaL_error(lua_State *L, const char *fmt,...)
LUALIB_API lua_Integer luaL_checkinteger(lua_State *L, int narg)
LUALIB_API lua_Integer luaL_optinteger(lua_State *L, int narg, lua_Integer def)
LUALIB_API int luaL_argerror(lua_State *L, int narg, const char *extramsg)
LUALIB_API void luaL_unref(lua_State *L, int t, int ref)
LUALIB_API lua_Number luaL_checknumber(lua_State *L, int narg)
#define luaL_getmetatable(L, n)
#define luaL_optstring(L, n, d)
#define luaL_checkstring(L, n)
#define luaL_checkint(L, n)
#define lua_pushcfunction(L, f)
#define LUA_REGISTRYINDEX
#define lua_pushliteral(L, s)
#define lua_isfunction(L, n)
#define LUA_TLIGHTUSERDATA
#define lua_tostring(L, i)
#define lua_isnoneornil(L, n)
LUALIB_API void luaL_requiref(lua_State *L, const char *modname, lua_CFunction openf, int glb)
LUALIB_API void luaL_setfuncs(lua_State *L, const luaL_Reg *l, int nup)
#define luaL_newlibtable(L, l)
#define lua_tointeger(L, i)
#define lua_tonumber(L, i)
#define lua_pcall(L, n, r, f)
LUA_API int lua_isinteger(lua_State *L, int idx)
#define lua_replace(L, idx)
#define lua_insert(L, idx)
#define lua_newuserdata(L, s)
SQLITE_API int sqlite3_column_bytes(sqlite3_stmt *, int iCol)
#define SQLITE_OPEN_CREATE
sqlite_int64 sqlite3_int64
SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage)
SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p)
SQLITE_API void sqlite3_result_int(sqlite3_context *, int)
SQLITE_API sqlite3_backup * sqlite3_backup_init(sqlite3 *pDest, const char *zDestName, sqlite3 *pSource, const char *zSourceName)
SQLITE_API void sqlite3_result_text(sqlite3_context *, const char *, int, void(*)(void *))
SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p)
SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt)
SQLITE_API double sqlite3_column_double(sqlite3_stmt *, int iCol)
SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt *, int iCol)
SQLITE_API int sqlite3_column_type(sqlite3_stmt *, int iCol)
SQLITE_API double sqlite3_value_double(sqlite3_value *)
#define SQLITE_OPEN_READWRITE
SQLITE_API int sqlite3_create_function(sqlite3 *db, const char *zFunctionName, int nArg, int eTextRep, void *pApp, void(*xFunc)(sqlite3_context *, int, sqlite3_value **), void(*xStep)(sqlite3_context *, int, sqlite3_value **), void(*xFinal)(sqlite3_context *))
SQLITE_API const char * sqlite3_libversion(void)
SQLITE_API void * sqlite3_commit_hook(sqlite3 *, int(*)(void *), void *)
SQLITE_API char * sqlite3_mprintf(const char *,...)
SQLITE_API const char * sqlite3_column_decltype(sqlite3_stmt *, int)
long long int sqlite_int64
SQLITE_API void sqlite3_result_double(sqlite3_context *, double)
SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p)
SQLITE_API void sqlite3_result_error(sqlite3_context *, const char *, int)
SQLITE_API void sqlite3_set_auxdata(sqlite3_context *, int N, void *, void(*)(void *))
SQLITE_API void sqlite3_free(void *)
SQLITE_API int sqlite3_bind_null(sqlite3_stmt *, int)
SQLITE_API int sqlite3_bind_blob(sqlite3_stmt *, int, const void *, int n, void(*)(void *))
SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt)
SQLITE_API void sqlite3_progress_handler(sqlite3 *, int, int(*)(void *), void *)
SQLITE_API int sqlite3_errcode(sqlite3 *db)
SQLITE_API int sqlite3_bind_text(sqlite3_stmt *, int, const char *, int, void(*)(void *))
SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt)
SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context *)
SQLITE_API int sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)
SQLITE_API int sqlite3_total_changes(sqlite3 *)
SQLITE_API const char * sqlite3_bind_parameter_name(sqlite3_stmt *, int)
SQLITE_API int sqlite3_changes(sqlite3 *)
SQLITE_API int sqlite3_bind_double(sqlite3_stmt *, int, double)
SQLITE_API void * sqlite3_aggregate_context(sqlite3_context *, int nBytes)
SQLITE_API int sqlite3_exec(sqlite3 *, const char *sql, int(*callback)(void *, int, char **, char **), void *, char **errmsg)
SQLITE_API int sqlite3_complete(const char *sql)
SQLITE_API void * sqlite3_update_hook(sqlite3 *, void(*)(void *, int, char const *, char const *, sqlite3_int64), void *)
SQLITE_API void sqlite3_result_int64(sqlite3_context *, sqlite3_int64)
SQLITE_API int sqlite3_load_extension(sqlite3 *db, const char *zFile, const char *zProc, char **pzErrMsg)
SQLITE_API void * sqlite3_rollback_hook(sqlite3 *, void(*)(void *), void *)
SQLITE_API void sqlite3_result_blob(sqlite3_context *, const void *, int, void(*)(void *))
SQLITE_API int sqlite3_bind_int(sqlite3_stmt *, int, int)
SQLITE_API char * sqlite3_temp_directory
SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value *)
SQLITE_API void sqlite3_interrupt(sqlite3 *)
SQLITE_API int sqlite3_step(sqlite3_stmt *)
SQLITE_API int sqlite3_close(sqlite3 *)
SQLITE_API int sqlite3_value_type(sqlite3_value *)
SQLITE_API void * sqlite3_get_auxdata(sqlite3_context *, int N)
SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt *)
SQLITE_API int sqlite3_create_collation_v2(sqlite3 *, const char *zName, int eTextRep, void *pArg, int(*xCompare)(void *, int, const void *, int, const void *), void(*xDestroy)(void *))
SQLITE_API const void * sqlite3_column_blob(sqlite3_stmt *, int iCol)
SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt)
SQLITE_API void * sqlite3_user_data(sqlite3_context *)
SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3 *)
SQLITE_API const char * sqlite3_column_name(sqlite3_stmt *, int N)
SQLITE_API const char * sqlite3_errmsg(sqlite3 *)
SQLITE_API void sqlite3_result_null(sqlite3_context *)
SQLITE_API int sqlite3_busy_handler(sqlite3 *, int(*)(void *, int), void *)
SQLITE_API const unsigned char * sqlite3_column_text(sqlite3_stmt *, int iCol)
SQLITE_API int sqlite3_value_bytes(sqlite3_value *)
SQLITE_API const unsigned char * sqlite3_value_text(sqlite3_value *)
SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff)
struct sqlite3_stmt sqlite3_stmt
SQLITE_API const void * sqlite3_value_blob(sqlite3_value *)
SQLITE_API int sqlite3_bind_int64(sqlite3_stmt *, int, sqlite3_int64)
SQLITE_API const char * sqlite3_db_filename(sqlite3 *db, const char *zDbName)
SQLITE_API SQLITE_DEPRECATED void * sqlite3_trace(sqlite3 *, void(*xTrace)(void *, const char *), void *)
SQLITE_API int sqlite3_busy_timeout(sqlite3 *, int ms)