int Dbh::query_callback(void *pArg, int argc, char **argv, char **cargv)
{
SWIGLUA_FN *lua_fun = (SWIGLUA_FN *)pArg;
+ int ret = 0;
lua_pushvalue(lua_fun->L, lua_fun->idx); /* get the lua callback function onto the stack */
lua_settable(lua_fun->L, -3);
}
- docall(lua_fun->L, 1, 1, 1); /* 1 in, 1 out */
+ docall(lua_fun->L, 1, 0, 1);
+ ret = lua_tonumber(lua_fun->L, -1);
+ lua_pop(lua_fun->L, 1);
- if (lua_isnumber(lua_fun->L, -1)) {
- if (lua_tonumber(lua_fun->L, -1) != 0) {
- return 1;
- }
- }
+ if (ret != 0) {
+ return 1;
+ }
return 0; /* 0 to continue with next row */
}
break;
case SCDB_TYPE_CORE_DB:
{
- status = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, NULL, NULL, &errmsg);
+ int ret = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, NULL, NULL, &errmsg);
+
+ if (ret == SWITCH_CORE_DB_OK) {
+ status = SWITCH_STATUS_SUCCESS;
+ }
+
if (errmsg) {
switch_strdup(tmp, errmsg);
switch_core_db_free(errmsg);
break;
case SCDB_TYPE_CORE_DB:
{
- status = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, callback, pdata, &errmsg);
+ int ret = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, callback, pdata, &errmsg);
+
+ if (ret == SWITCH_CORE_DB_OK || ret == SWITCH_CORE_DB_ABORT) {
+ status = SWITCH_STATUS_SUCCESS;
+ }
if (errmsg) {
dbh->last_used = switch_epoch_time_now(NULL) - (SQL_CACHE_TIMEOUT * 2);