From: Nick Porter Date: Wed, 8 May 2024 15:08:13 +0000 (+0100) Subject: Pass fr_sql_query_t to SQL finish functions X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fa65a605126df43510e0a6c7253e901359ff980;p=thirdparty%2Ffreeradius-server.git Pass fr_sql_query_t to SQL finish functions In preparation for moving from pool connections to trunk connections. --- diff --git a/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c b/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c index 34b9885425d..d6d63ec193f 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c @@ -689,9 +689,9 @@ static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], size_t ou return 0; } -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config) { - rlm_sql_cassandra_conn_t *conn = handle->conn; + rlm_sql_cassandra_conn_t *conn = query_ctx->handle->conn; /* * Clear our local log buffer, and free any messages which weren't @@ -700,7 +700,7 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c talloc_free_children(conn->log_ctx); memset(&conn->last_error, 0, sizeof(conn->last_error)); - return sql_free_result(handle, config); + return sql_free_result(query_ctx->handle, config); } /* diff --git a/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c b/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c index 814434c2604..e91c3b2d8eb 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c @@ -266,16 +266,11 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], NDEBUG_UNUSED si return 1; } -static sql_rcode_t sql_finish_query(UNUSED rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { return RLM_SQL_OK; } -static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config) -{ - return sql_finish_query(handle, config); -} - static int sql_affected_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { SQLINTEGER c; @@ -303,5 +298,5 @@ rlm_sql_driver_t rlm_sql_db2 = { .sql_free_result = sql_free_result, .sql_error = sql_error, .sql_finish_query = sql_finish_query, - .sql_finish_select_query = sql_finish_select_query + .sql_finish_select_query = sql_finish_query }; diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c b/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c index 081fc8c9fe9..04752b83846 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c @@ -29,7 +29,6 @@ RCSID("$Id$") /* Forward declarations */ static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, rlm_sql_config_t const *config); static int sql_num_fields(rlm_sql_handle_t *handle, rlm_sql_config_t const *config); -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config); static int _sql_socket_destructor(rlm_sql_firebird_conn_t *conn) { @@ -226,9 +225,9 @@ static unlang_action_t sql_fetch_row(rlm_rcode_t *p_result, UNUSED int *priority /** End the select query, such as freeing memory or result. * */ -static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_select_query(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_firebird_conn_t *conn = (rlm_sql_firebird_conn_t *) handle->conn; + rlm_sql_firebird_conn_t *conn = (rlm_sql_firebird_conn_t *) query_ctx->handle->conn; fb_commit(conn); fb_close_cursor(conn); @@ -239,7 +238,7 @@ static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_ /** End the query * */ -static sql_rcode_t sql_finish_query(UNUSED rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { return 0; } diff --git a/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c b/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c index 6aace293770..c5d0ebb1d92 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c @@ -427,9 +427,9 @@ static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], NDEBUG_UN return 1; } -static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_select_query(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_freetds_conn_t *conn = handle->conn; + rlm_sql_freetds_conn_t *conn = query_ctx->handle->conn; ct_cancel(NULL, conn->command, CS_CANCEL_ALL); if (ct_cmd_drop(conn->command) != CS_SUCCEED) { @@ -544,7 +544,7 @@ static unlang_action_t sql_select_query(rlm_rcode_t *p_result, UNUSED int *prior default: ERROR("unexpected result type from query"); - sql_finish_select_query(query_ctx->handle, &query_ctx->inst->config); + sql_finish_select_query(query_ctx, &query_ctx->inst->config); RETURN_MODULE_FAIL; } @@ -645,9 +645,9 @@ static sql_rcode_t sql_free_result(UNUSED rlm_sql_handle_t *handle, UNUSED rlm_s } -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_freetds_conn_t *conn = handle->conn; + rlm_sql_freetds_conn_t *conn = query_ctx->handle->conn; ct_cancel(NULL, conn->command, CS_CANCEL_ALL); if (ct_cmd_drop(conn->command) != CS_SUCCEED) { diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c index 2ffc867832f..336f5495c2c 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c @@ -713,9 +713,9 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen, * whether more results exist and process them in turn if so. * */ -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config) { - rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn, rlm_sql_mysql_conn_t); + rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(query_ctx->handle->conn, rlm_sql_mysql_conn_t); int ret; MYSQL_RES *result; @@ -736,7 +736,7 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c * already stored result. */ } else { - sql_free_result(handle, config); /* sql_free_result sets conn->result to NULL */ + sql_free_result(query_ctx->handle, config); /* sql_free_result sets conn->result to NULL */ } /* diff --git a/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c b/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c index 40d4ce1310b..ee920242138 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c @@ -75,12 +75,7 @@ static size_t sql_error(UNUSED TALLOC_CTX *ctx, UNUSED sql_log_entry_t out[], UN return 0; } -static sql_rcode_t sql_finish_query(UNUSED rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t const *config) -{ - return 0; -} - -static sql_rcode_t sql_finish_select_query(UNUSED rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { return 0; } @@ -106,6 +101,6 @@ rlm_sql_driver_t rlm_sql_null = { .sql_free_result = sql_free_result, .sql_error = sql_error, .sql_finish_query = sql_finish_query, - .sql_finish_select_query = sql_finish_select_query, + .sql_finish_select_query = sql_finish_query, .sql_affected_rows = sql_affected_rows }; diff --git a/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c b/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c index 3172f385fcc..0d2a1841845 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c @@ -604,9 +604,9 @@ static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_conf return RLM_SQL_OK; } -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_oracle_conn_t *conn = handle->conn; + rlm_sql_oracle_conn_t *conn = query_ctx->handle->conn; if (OCIStmtRelease(conn->query, conn->error, NULL, 0, OCI_DEFAULT) != OCI_SUCCESS ) { ERROR("OCI release failed in sql_finish_query"); @@ -616,9 +616,9 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_con return 0; } -static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_select_query(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_oracle_conn_t *conn = handle->conn; + rlm_sql_oracle_conn_t *conn = query_ctx->handle->conn; TALLOC_FREE(conn->row); conn->ind = NULL; /* ind is a child of row */ diff --git a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c index 17aa0d51953..8b3c2b6cbc1 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c @@ -465,9 +465,9 @@ static int sql_num_fields(rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t con return 0; } -static sql_rcode_t sql_free_result(rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_free_result(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_postgres_conn_t *conn = handle->conn; + rlm_sql_postgres_conn_t *conn = query_ctx->handle->conn; if (conn->result != NULL) { PQclear(conn->result); diff --git a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c index e1814ecac65..c0b718dc2f3 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c @@ -660,9 +660,9 @@ static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], NDEBUG_UN return 1; } -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config) { - return sql_free_result(handle, config); + return sql_free_result(query_ctx->handle, config); } static int sql_affected_rows(fr_sql_query_t *query_ctx, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c index f978acf3fd0..12d5c876194 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c @@ -238,11 +238,11 @@ static unlang_action_t sql_fetch_row(rlm_rcode_t *p_result, UNUSED int *priority RETURN_MODULE_OK; } -static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t * handle, rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_select_query(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config) { - rlm_sql_unixodbc_conn_t *conn = handle->conn; + rlm_sql_unixodbc_conn_t *conn = query_ctx->handle->conn; - sql_free_result(handle, config); + sql_free_result(query_ctx->handle, config); /* * SQL_CLOSE - The cursor (if any) associated with the statement @@ -261,9 +261,9 @@ static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t * handle, rlm_sql_co return 0; } -static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config) +static sql_rcode_t sql_finish_query(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config) { - rlm_sql_unixodbc_conn_t *conn = handle->conn; + rlm_sql_unixodbc_conn_t *conn = query_ctx->handle->conn; SQLFreeStmt(conn->stmt, SQL_CLOSE); diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 77bfcd12ed1..3a9896c209c 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -911,7 +911,7 @@ static int sql_get_grouplist(rlm_sql_t const *inst, rlm_sql_handle_t **handle, f row = query_ctx->handle->row; if (!row[0]){ RDEBUG2("row[0] returned NULL"); - (inst->driver->sql_finish_select_query)(*handle, &inst->config); + (inst->driver->sql_finish_select_query)(query_ctx, &inst->config); talloc_free(entry); return -1; } diff --git a/src/modules/rlm_sql/rlm_sql.h b/src/modules/rlm_sql/rlm_sql.h index 1728843f345..e4be6f09383 100644 --- a/src/modules/rlm_sql/rlm_sql.h +++ b/src/modules/rlm_sql/rlm_sql.h @@ -205,8 +205,8 @@ typedef struct { sql_error_t sql_error; //!< Get any errors from the previous query. - sql_rcode_t (*sql_finish_query)(rlm_sql_handle_t *handle, rlm_sql_config_t const *config); - sql_rcode_t (*sql_finish_select_query)(rlm_sql_handle_t *handle, rlm_sql_config_t const *config); + sql_rcode_t (*sql_finish_query)(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config); + sql_rcode_t (*sql_finish_select_query)(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config); xlat_escape_legacy_t sql_escape_func; void *(*sql_escape_arg_alloc)(TALLOC_CTX *ctx, fr_event_list_t *el, void *uctx); diff --git a/src/modules/rlm_sql/sql.c b/src/modules/rlm_sql/sql.c index a8e58ac75c8..8c24d388187 100644 --- a/src/modules/rlm_sql/sql.c +++ b/src/modules/rlm_sql/sql.c @@ -393,9 +393,9 @@ static int fr_sql_query_free(fr_sql_query_t *to_free) { if (to_free->status <= 0) return 0; if (to_free->type == SQL_QUERY_SELECT) { - (to_free->inst->driver->sql_finish_select_query)(to_free->handle, &to_free->inst->config); + (to_free->inst->driver->sql_finish_select_query)(to_free, &to_free->inst->config); } else { - (to_free->inst->driver->sql_finish_query)(to_free->handle, &to_free->inst->config); + (to_free->inst->driver->sql_finish_query)(to_free, &to_free->inst->config); } return 0; } @@ -486,7 +486,7 @@ unlang_action_t rlm_sql_query(rlm_rcode_t *p_result, UNUSED int *priority, reque */ case RLM_SQL_QUERY_INVALID: rlm_sql_print_error(inst, request, query_ctx->handle, false); - (inst->driver->sql_finish_query)(query_ctx->handle, &inst->config); + (inst->driver->sql_finish_query)(query_ctx, &inst->config); RETURN_MODULE_INVALID; /* @@ -501,7 +501,7 @@ unlang_action_t rlm_sql_query(rlm_rcode_t *p_result, UNUSED int *priority, reque case RLM_SQL_ERROR: if (inst->driver->flags & RLM_SQL_RCODE_FLAGS_ALT_QUERY) { rlm_sql_print_error(inst, request, query_ctx->handle, false); - (inst->driver->sql_finish_query)(query_ctx->handle, &inst->config); + (inst->driver->sql_finish_query)(query_ctx, &inst->config); RETURN_MODULE_FAIL; } FALL_THROUGH; @@ -511,7 +511,7 @@ unlang_action_t rlm_sql_query(rlm_rcode_t *p_result, UNUSED int *priority, reque */ case RLM_SQL_ALT_QUERY: rlm_sql_print_error(inst, request, query_ctx->handle, true); - (inst->driver->sql_finish_query)(query_ctx->handle, &inst->config); + (inst->driver->sql_finish_query)(query_ctx, &inst->config); break; default: @@ -592,7 +592,7 @@ unlang_action_t rlm_sql_select_query(rlm_rcode_t *p_result, UNUSED int *priority case RLM_SQL_ERROR: default: rlm_sql_print_error(inst, request, query_ctx->handle, false); - (inst->driver->sql_finish_select_query)(query_ctx->handle, &inst->config); + (inst->driver->sql_finish_select_query)(query_ctx, &inst->config); if (query_ctx->rcode == RLM_SQL_QUERY_INVALID) RETURN_MODULE_INVALID; RETURN_MODULE_FAIL; }