*/
SWITCH_DECLARE(int) switch_cache_db_affected_rows(switch_cache_db_handle_t *dbh);
+/*!
+ \brief load an external extension to db
+ \param [in] dbh The handle
+ \param [out] the path to the extension
+*/
+SWITCH_DECLARE(int) switch_cache_db_load_extension(switch_cache_db_handle_t *dbh, const char *extension);
+
/*!
\brief Provides some feedback as to the status of the db connection pool
\param [in] stream stream for status
*/
SWITCH_DECLARE(int) switch_core_db_changes(switch_core_db_t *db);
+/**
+ * Call this routine to load an external extension
+ */
+SWITCH_DECLARE(int) switch_core_db_load_extension(switch_core_db_t *db, const char *extension);
+
/** Return values for switch_core_db_exec() and switch_core_db_step()*/
#define SWITCH_CORE_DB_OK 0 /* Successful result */
/* beginning-of-error-codes */
bool test_reactive(char *test_sql, char *drop_sql = NULL, char *reactive_sql = NULL);
bool query(char *sql, SWIGLUA_FN lua_fun);
int affected_rows();
+ int load_extension(const char *extension);
};
}
}
return 0;
}
+
+int Dbh::load_extension(const char *extension)
+{
+ if (m_connected) {
+ return switch_cache_db_load_extension(dbh, extension);
+ }
+ return 0;
+}
bool test_reactive(char *test_sql, char *drop_sql = NULL, char *reactive_sql = NULL);
bool query(char *sql, SWIGLUA_FN lua_fun);
int affected_rows();
+ int load_extension(const char *extension);
};
}
#endif
}
+static int _wrap_Dbh_load_extension(lua_State* L) {
+ int SWIG_arg = -1;
+ LUA::Dbh *arg1 = (LUA::Dbh *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int result;
+
+ SWIG_check_num_args("load_extension",2,2)
+ if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("load_extension",1,"LUA::Dbh *");
+ if(!lua_isstring(L,2)) SWIG_fail_arg("load_extension",2,"char const *");
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Dbh,0))){
+ SWIG_fail_ptr("Dbh_load_extension",1,SWIGTYPE_p_LUA__Dbh);
+ }
+
+ arg2 = (char *)lua_tostring(L, 2);
+ result = (int)(arg1)->load_extension((char const *)arg2);
+ SWIG_arg=0;
+ lua_pushnumber(L, (lua_Number) result); SWIG_arg++;
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
static void swig_delete_Dbh(void *obj) {
LUA::Dbh *arg1 = (LUA::Dbh *) obj;
delete arg1;
{"test_reactive", _wrap_Dbh_test_reactive},
{"query", _wrap_Dbh_query},
{"affected_rows", _wrap_Dbh_affected_rows},
+ {"load_extension", _wrap_Dbh_load_extension},
{0,0}
};
static swig_lua_attribute swig_LUA_Dbh_attributes[] = {
}
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_db_load_extension(void * jarg1, char * jarg2) {
+ int jresult ;
+ switch_core_db_t *arg1 = (switch_core_db_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int result;
+
+ arg1 = (switch_core_db_t *)jarg1;
+ arg2 = (char *)jarg2;
+ result = (int)switch_core_db_load_extension(arg1,(char const *)arg2);
+ jresult = result;
+ return jresult;
+}
+
+
SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_CORE_DB_OK_get() {
int jresult ;
int result;
}
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_cache_db_load_extension(void * jarg1, char * jarg2) {
+ int jresult ;
+ switch_cache_db_handle_t *arg1 = (switch_cache_db_handle_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int result;
+
+ arg1 = (switch_cache_db_handle_t *)jarg1;
+ arg2 = (char *)jarg2;
+ result = (int)switch_cache_db_load_extension(arg1,(char const *)arg2);
+ jresult = result;
+ return jresult;
+}
+
+
SWIGEXPORT void SWIGSTDCALL CSharp_switch_cache_db_status(void * jarg1) {
switch_stream_handle_t *arg1 = (switch_stream_handle_t *) 0 ;
return ret;
}
+ public static int switch_core_db_load_extension(SWIGTYPE_p_sqlite3 db, string extension) {
+ int ret = freeswitchPINVOKE.switch_core_db_load_extension(SWIGTYPE_p_sqlite3.getCPtr(db), extension);
+ return ret;
+ }
+
public static string switch_sql_concat() {
string ret = freeswitchPINVOKE.switch_sql_concat();
return ret;
return ret;
}
+ public static int switch_cache_db_load_extension(SWIGTYPE_p_switch_cache_db_handle dbh, string extension) {
+ int ret = freeswitchPINVOKE.switch_cache_db_load_extension(SWIGTYPE_p_switch_cache_db_handle.getCPtr(dbh), extension);
+ return ret;
+ }
+
public static void switch_cache_db_status(switch_stream_handle stream) {
freeswitchPINVOKE.switch_cache_db_status(switch_stream_handle.getCPtr(stream));
}
[DllImport("mod_managed", EntryPoint="CSharp_switch_core_db_changes")]
public static extern int switch_core_db_changes(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_db_load_extension")]
+ public static extern int switch_core_db_load_extension(HandleRef jarg1, string jarg2);
+
[DllImport("mod_managed", EntryPoint="CSharp_SWITCH_CORE_DB_OK_get")]
public static extern int SWITCH_CORE_DB_OK_get();
[DllImport("mod_managed", EntryPoint="CSharp_switch_cache_db_affected_rows")]
public static extern int switch_cache_db_affected_rows(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_cache_db_load_extension")]
+ public static extern int switch_cache_db_load_extension(HandleRef jarg1, string jarg2);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_cache_db_status")]
public static extern void switch_cache_db_status(HandleRef jarg1);
return sqlite3_changes(db);
}
+SWITCH_DECLARE(int) switch_core_db_load_extension(switch_core_db_t *db, const char *extension)
+{
+ int ret = 0;
+ char *err = NULL;
+
+ sqlite3_enable_load_extension(db, 1);
+ ret = sqlite3_load_extension(db, extension, 0, &err);
+ sqlite3_enable_load_extension(db, 0);
+
+ if (err) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "LOAD EXTENSION ERR [%s]\n", err);
+ switch_core_db_free(err);
+ err = NULL;
+ }
+ return ret;
+}
+
SWITCH_DECLARE(switch_core_db_t *) switch_core_db_open_file(const char *filename)
{
switch_core_db_t *db;
return 0;
}
+SWITCH_DECLARE(int) switch_cache_db_load_extension(switch_cache_db_handle_t *dbh, const char *extension)
+{
+ switch (dbh->type) {
+ case SCDB_TYPE_CORE_DB:
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "try to load extension [%s]!\n", extension);
+ return switch_core_db_load_extension(dbh->native_handle.core_db_dbh, extension);
+ }
+ break;
+ case SCDB_TYPE_ODBC:
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "load extension not supported by type ODBC!\n");
+ }
+ break;
+ case SCDB_TYPE_PGSQL:
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "load extension not supported by type PGSQL!\n");
+ }
+ break;
+ }
+ return 0;
+}
+
SWITCH_DECLARE(char *) switch_cache_db_execute_sql2str(switch_cache_db_handle_t *dbh, char *sql, char *str, size_t len, char **err)
{