Fixes for extension loading

This commit is contained in:
Alexey Romanov
2012-09-14 17:15:10 +04:00
4 changed files with 38 additions and 2 deletions

View File

@@ -181,6 +181,9 @@ static int control(
case CMD_SQL_EXEC_SCRIPT:
sql_exec_script(driver_data, buf, len);
break;
case CMD_ENABLE_LOAD_EXTENSION:
enable_load_extension(driver_data, buf, len);
break;
default:
unknown(driver_data, buf, len);
}
@@ -243,6 +246,14 @@ static inline int output_ok(sqlite3_drv_t *drv) {
return driver_output_term(drv->port, spec, sizeof(spec) / sizeof(spec[0]));
}
static int enable_load_extension(sqlite3_drv_t* drv, char *buf,
int len) {
char enable = buf[0];
sqlite3_enable_load_extension(drv->db, (int) enable);
output_ok(drv);
return 0;
}
static inline async_sqlite3_command *make_async_command_statement(
sqlite3_drv_t *drv, sqlite3_stmt *statement) {
async_sqlite3_command *result =

View File

@@ -39,6 +39,7 @@
#define CMD_PREPARED_FINALIZE 10
#define CMD_PREPARED_COLUMNS 11
#define CMD_SQL_EXEC_SCRIPT 12
#define CMD_ENABLE_LOAD_EXTENSION 13
// Number of bytes for each key
// (160 bits for SHA1 hash)
@@ -111,7 +112,7 @@ static void sql_exec_async(void *async_command);
static void sql_free_async(void *async_command);
static void ready_async(ErlDrvData drv_data, ErlDrvThreadData thread_data);
static int unknown(sqlite3_drv_t *bdb_drv, char *buf, int len);
static int enable_load_extension(sqlite3_drv_t *drv, char *buf, int len);
#if defined(_MSC_VER)
#pragma warning(default: 4201)