Merge pull request #1773 from signalwire/autocommit

[Core] ODBC: Add odbc-skip-autocommit-flip switch param.
This commit is contained in:
Andrey Volk
2022-08-26 20:21:23 +03:00
committed by GitHub
4 changed files with 19 additions and 0 deletions
+1
View File
@@ -51,6 +51,7 @@ typedef enum {
SWITCH_ODBC_FAIL = -1
} switch_odbc_status_t;
SWITCH_DECLARE(void) switch_odbc_skip_autocommit_flip();
SWITCH_DECLARE(switch_odbc_handle_t *) switch_odbc_handle_new(const char *dsn, const char *username, const char *password);
SWITCH_DECLARE(void) switch_odbc_set_num_retries(switch_odbc_handle_t *handle, int num_retries);
SWITCH_DECLARE(switch_odbc_status_t) switch_odbc_handle_disconnect(switch_odbc_handle_t *handle);
+4
View File
@@ -2172,6 +2172,10 @@ static void switch_load_core_config(const char *file)
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "max-db-handles must be between 5 and 5000\n");
}
} else if (!strcasecmp(var, "odbc-skip-autocommit-flip")) {
if (switch_true(val)) {
switch_odbc_skip_autocommit_flip();
}
} else if (!strcasecmp(var, "db-handle-timeout")) {
long tmp = atol(val);
+11
View File
@@ -62,6 +62,13 @@ struct switch_odbc_handle {
};
#endif
uint8_t skip_autocommit_flip = 0;
SWITCH_DECLARE(void) switch_odbc_skip_autocommit_flip()
{
skip_autocommit_flip = 1;
}
SWITCH_DECLARE(switch_odbc_handle_t *) switch_odbc_handle_new(const char *dsn, const char *username, const char *password)
{
#ifdef SWITCH_HAVE_ODBC
@@ -811,6 +818,10 @@ SWITCH_DECLARE(switch_bool_t) switch_odbc_available(void)
SWITCH_DECLARE(switch_odbc_status_t) switch_odbc_SQLSetAutoCommitAttr(switch_odbc_handle_t *handle, switch_bool_t on)
{
#ifdef SWITCH_HAVE_ODBC
if (skip_autocommit_flip) {
return SWITCH_ODBC_SUCCESS;
}
if (on) {
return SQLSetConnectAttr(handle->con, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER *) SQL_AUTOCOMMIT_ON, 0 );
} else {