]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Pass fr_sql_query_t to SQL finish functions
authorNick Porter <nick@portercomputing.co.uk>
Wed, 8 May 2024 15:08:13 +0000 (16:08 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 7 Jun 2024 02:26:58 +0000 (22:26 -0400)
In preparation for moving from pool connections to trunk connections.

13 files changed:
src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c
src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c
src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c
src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c
src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c
src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c
src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c
src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c
src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sql/rlm_sql.h
src/modules/rlm_sql/sql.c

index 34b9885425d4d56a4f31400d434da5d28aba3958..d6d63ec193ff98e5a32ecf38726bed8d6ceca0af 100644 (file)
@@ -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);
 }
 
 /*
index 814434c2604d39bc050003b4943e308c0b07a928..e91c3b2d8eba589a46bcef5427757eb88e4438fe 100644 (file)
@@ -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
 };
index 081fc8c9fe9d39744865e7e30cdfd73e28072702..04752b838467d28696d868339a2f1e667615ac1e 100644 (file)
@@ -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;
 }
index 6aace293770a7b7930e51b336003397477c980d1..c5d0ebb1d9278401f21bddb3413ac00e7f7afec2 100644 (file)
@@ -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) {
index 2ffc867832f646af2b5987a9238bd028ba481f06..336f5495c2cb9a27b041cef5896694b014e49e14 100644 (file)
@@ -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 */
        }
 
        /*
index 40d4ce1310ba06b93c4b3cb860a36cfc63f166ad..ee9202421386d4cbfc8dab6f9db811d17ab1ac6f 100644 (file)
@@ -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
 };
index 3172f385fcc6b752e6c2a16b5b4eb95b06576676..0d2a184184522022b7fce9b6a98d7c58c91f7f31 100644 (file)
@@ -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 */
index 17aa0d51953e54e03a8deca7baf43f1a6cdcaabd..8b3c2b6cbc199b02605b66f6f9cd9d517e24ebee 100644 (file)
@@ -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);
index e1814ecac65fc66dd1d72a945a35df7d1c8b15be..c0b718dc2f349142f647566cdd96829c37596666 100644 (file)
@@ -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,
index f978acf3fd04b66e0d91f8bb4f375ace243fd48b..12d5c8761943ea419a51cdbe3ee05442c1321137 100644 (file)
@@ -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);
 
index 77bfcd12ed177559c47d0ba9cab1e0e4b5a06a22..3a9896c209cd6723879ff830329d7cd6909e0691 100644 (file)
@@ -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;
                }
index 1728843f34595a38b58dce76a9f3dbb48df0364c..e4be6f09383f44b3579817646df3884abbf50ede 100644 (file)
@@ -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);
index a8e58ac75c83487af56b9f99c44d9727bd567667..8c24d3881875c14115f4499ba89ea9e082979b91 100644 (file)
@@ -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;
                }