while (begin_retries > 0) {
again = 0;
- switch_cache_db_execute_sql_real(dbh, "BEGIN", &errmsg);
+ if (runtime.odbc_dbtype == DBTYPE_DEFAULT) {
+ switch_cache_db_execute_sql_real(dbh, "BEGIN", &errmsg);
+ } else {
+ if (switch_odbc_SQLSetAutoCommitAttr(dbh->native_handle.odbc_dbh, 0) != SWITCH_ODBC_SUCCESS) {
+ errmsg = strdup("Unable to Set AutoCommit Off.");;
+ }
+ }
if (errmsg) {
begin_retries--;
errmsg = NULL;
if (again) {
- switch_cache_db_execute_sql_real(dbh, "COMMIT", NULL);
+ if (runtime.odbc_dbtype == DBTYPE_DEFAULT) {
+ switch_cache_db_execute_sql_real(dbh, "COMMIT", NULL);
+ } else {
+ switch_odbc_SQLEndTran(dbh->native_handle.odbc_dbh, 1);
+ switch_odbc_SQLSetAutoCommitAttr(dbh->native_handle.odbc_dbh, 1);
+ }
+
goto again;
}
done:
- switch_cache_db_execute_sql_real(dbh, "COMMIT", NULL);
+ if (runtime.odbc_dbtype == DBTYPE_DEFAULT) {
+ switch_cache_db_execute_sql_real(dbh, "COMMIT", NULL);
+ } else {
+ switch_odbc_SQLEndTran(dbh->native_handle.odbc_dbh, 1);
+ switch_odbc_SQLSetAutoCommitAttr(dbh->native_handle.odbc_dbh, 1);
+ }
if (dbh->io_mutex) {
switch_mutex_unlock(dbh->io_mutex);
case SWITCH_EVENT_CHANNEL_BRIDGE:
{
const char *callee_cid_name, *callee_cid_num, *direction;
+ char *func_name;
direction = switch_event_get_header(event, "other-leg-direction");
new_sql() = switch_mprintf("update channels set call_uuid='%q' where uuid='%s' and hostname='%q'",
switch_event_get_header_nil(event, "channel-call-uuid"),
switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname"));
- new_sql() = switch_mprintf("insert into calls (call_uuid,call_created,call_created_epoch,function,caller_cid_name,"
+
+ if (runtime.odbc_dbtype == DBTYPE_DEFAULT) {
+ func_name = "function";
+ }
+ else {
+ func_name = "call_function";
+ }
+
+ new_sql() = switch_mprintf("insert into calls (call_uuid,call_created,call_created_epoch,%s,caller_cid_name,"
"caller_cid_num,caller_dest_num,caller_chan_name,caller_uuid,callee_cid_name,"
"callee_cid_num,callee_dest_num,callee_chan_name,callee_uuid,hostname) "
"values ('%s', '%s', '%ld', '%s','%q','%q','%q','%q','%s','%q','%q','%q','%q','%s','%q')",
+ func_name,
switch_event_get_header_nil(event, "channel-call-uuid"),
switch_event_get_header_nil(event, "event-date-local"),
(long) switch_epoch_time_now(NULL),
{
char *err;
switch_cache_db_test_reactive(dbh, "select call_uuid, read_bit_rate from channels", "DROP TABLE channels", create_channels_sql);
- switch_cache_db_test_reactive(dbh, "select call_uuid from calls", "DROP TABLE calls", create_calls_sql);
+ if (runtime.odbc_dbtype == DBTYPE_DEFAULT) {
+ switch_cache_db_test_reactive(dbh, "select call_uuid from calls", "DROP TABLE calls", create_calls_sql);
+ } else {
+ char *tmp = switch_string_replace(create_calls_sql, "function", "call_function");
+ switch_cache_db_test_reactive(dbh, "select call_uuid from calls", "DROP TABLE calls", tmp);
+ free(tmp);
+ }
switch_cache_db_test_reactive(dbh, "select ikey from interfaces", "DROP TABLE interfaces", create_interfaces_sql);
switch_cache_db_test_reactive(dbh, "select hostname from tasks", "DROP TABLE tasks", create_tasks_sql);
- switch_cache_db_execute_sql(dbh, "begin;delete from channels where hostname='';delete from channels where hostname='';commit;", &err);
+ if (runtime.odbc_dbtype == DBTYPE_DEFAULT) {
+ switch_cache_db_execute_sql(dbh, "begin;delete from channels where hostname='';delete from channels where hostname='';commit;", &err);
+ } else {
+ switch_cache_db_execute_sql(dbh, "delete from channels where hostname='';delete from channels where hostname='';", &err);
+ }
if (err) {
runtime.odbc_dsn = NULL;