Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[mod_pgsql] err is now set correctly (dbh:last_error()) #2374

Merged
merged 2 commits into from
Jan 17, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion src/mod/databases/mod_pgsql/mod_pgsql.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,22 @@ char * pgsql_handle_get_error(switch_pgsql_handle_t *handle)
return err_str;
}

void pgsql_handle_set_error_if_not_set(switch_pgsql_handle_t *handle, char **err)
{
char *err_str;

if (err && !(*err)) {
err_str = pgsql_handle_get_error(handle);

if (zstr(err_str)) {
switch_safe_free(err_str);
err_str = strdup((char *)"SQL ERROR!");
}

*err = err_str;
}
}

static int db_is_up(switch_pgsql_handle_t *handle)
{
int ret = 0;
Expand Down Expand Up @@ -553,8 +569,15 @@ switch_status_t pgsql_handle_exec_detailed(const char *file, const char *func, i
goto error;
}

return pgsql_finish_results(handle);
if (pgsql_finish_results(handle) != SWITCH_STATUS_SUCCESS) {
goto error;
}

return SWITCH_STATUS_SUCCESS;

error:
pgsql_handle_set_error_if_not_set(handle, err);
ar45 marked this conversation as resolved.
Show resolved Hide resolved

return SWITCH_STATUS_FALSE;
}

Expand Down Expand Up @@ -630,6 +653,7 @@ switch_status_t database_handle_exec_string(switch_database_interface_handle_t *

pgsql_free_result(&result);
if (pgsql_finish_results(handle) != SWITCH_STATUS_SUCCESS) {
pgsql_handle_set_error_if_not_set(handle, err);
sstatus = SWITCH_STATUS_FALSE;
}

Expand All @@ -638,6 +662,7 @@ switch_status_t database_handle_exec_string(switch_database_interface_handle_t *
error:

pgsql_free_result(&result);
pgsql_handle_set_error_if_not_set(handle, err);
ar45 marked this conversation as resolved.
Show resolved Hide resolved

return SWITCH_STATUS_FALSE;
}
Expand Down Expand Up @@ -1050,6 +1075,8 @@ switch_status_t pgsql_handle_callback_exec_detailed(const char *file, const char
return SWITCH_STATUS_SUCCESS;
error:

pgsql_handle_set_error_if_not_set(handle, err);
ar45 marked this conversation as resolved.
Show resolved Hide resolved

return SWITCH_STATUS_FALSE;
}

Expand Down
Loading