[core] improve logging on oversized fields in odbc

This commit is contained in:
Mike Jerris 2020-11-16 17:08:43 -07:00 committed by Andrey Volk
parent 96e139854e
commit 7539921eca
1 changed files with 4 additions and 4 deletions

View File

@ -644,25 +644,25 @@ SWITCH_DECLARE(switch_odbc_status_t) switch_odbc_handle_callback_exec_detailed(c
} }
if (truncated) { if (truncated) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sql data truncated - %s\n",SqlState);
if (StrLen_or_IndPtr && StrLen_or_IndPtr <= 268435456) { if (StrLen_or_IndPtr && StrLen_or_IndPtr <= 268435456) {
ColumnSize = StrLen_or_IndPtr + 1; ColumnSize = StrLen_or_IndPtr + 1;
vals[y] = malloc(ColumnSize); vals[y] = malloc(ColumnSize);
switch_assert(vals[y]); switch_assert(vals[y]);
memset(vals[y], 0, ColumnSize); memset(vals[y], 0, ColumnSize);
SQLGetData(stmt, x, SQL_C_CHAR, (SQLCHAR *) vals[y], ColumnSize, NULL); SQLGetData(stmt, x, SQL_C_CHAR, (SQLCHAR *) vals[y], ColumnSize, NULL);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SQLGetData large column [%lu]\n", (unsigned long)ColumnSize);
} else { } else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQLGetData failed"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sql data truncated - %s\n",SqlState);
vals[y] = NULL; vals[y] = NULL;
} }
} else { } else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQLGetData failed"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQLGetData failed\n");
vals[y] = NULL; vals[y] = NULL;
} }
} else if (rc == SQL_SUCCESS){ } else if (rc == SQL_SUCCESS){
vals[y] = strdup((char *)val); vals[y] = strdup((char *)val);
} else { } else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQLGetData failed"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQLGetData failed\n");
vals[y] = NULL; vals[y] = NULL;
} }
} else { } else {