]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Pass fr_sql_query_t to num_rows and affected_rows
authorNick Porter <nick@portercomputing.co.uk>
Wed, 8 May 2024 11:12:23 +0000 (12:12 +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_sqlippool/rlm_sqlippool.c

index dea051ae847538d8eb2c31fc5161a8093671fcb5..34b9885425d4d56a4f31400d434da5d28aba3958 100644 (file)
@@ -483,9 +483,9 @@ static int sql_num_fields(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t cons
        return conn->result ? cass_result_column_count(conn->result) : 0;
 }
 
-static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_num_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
-       rlm_sql_cassandra_conn_t *conn = handle->conn;
+       rlm_sql_cassandra_conn_t *conn = query_ctx->handle->conn;
 
        return conn->result ? cass_result_row_count(conn->result) : 0;
 }
@@ -710,7 +710,7 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
  *     There's a good article on it here:
  *             http://planetcassandra.org/blog/how-to-do-an-upsert-in-cassandra/
  */
-static int sql_affected_rows(UNUSED rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_affected_rows(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
        return 1;
 }
index 85ab3bbfde2e6497a9332718c5a9e06503a1e2d9..814434c2604d39bc050003b4943e308c0b07a928 100644 (file)
@@ -276,10 +276,10 @@ static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, rlm_sql_con
        return sql_finish_query(handle, config);
 }
 
-static int sql_affected_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_affected_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
        SQLINTEGER c;
-       rlm_sql_db2_conn_t *conn = handle->conn;
+       rlm_sql_db2_conn_t *conn = query_ctx->handle->conn;
 
        SQLRowCount(conn->stmt, &c);
 
index 30206b080c15c4db9aa71409c22a32ac4ca7a76e..081fc8c9fe9d39744865e7e30cdfd73e28072702 100644 (file)
@@ -28,7 +28,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_affected_rows(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);
 
@@ -166,14 +165,6 @@ static int sql_num_fields(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t cons
        return ((rlm_sql_firebird_conn_t *) handle->conn)->sqlda_out->sqld;
 }
 
-/** Returns number of rows in query.
- *
- */
-static int sql_num_rows(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
-{
-       return sql_affected_rows(handle, config);
-}
-
 /** Returns name of fields.
  *
  */
@@ -291,9 +282,9 @@ static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], NDEBUG_UN
 /** Return the number of rows affected by the query (update, or insert)
  *
  */
-static int sql_affected_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_affected_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
-       return fb_affected_rows(handle->conn);
+       return fb_affected_rows(query_ctx->handle->conn);
 }
 
 /* Exported to rlm_sql */
@@ -307,7 +298,7 @@ rlm_sql_driver_t rlm_sql_firebird = {
        .sql_query                      = sql_query,
        .sql_select_query               = sql_query,
        .sql_num_fields                 = sql_num_fields,
-       .sql_num_rows                   = sql_num_rows,
+       .sql_num_rows                   = sql_affected_rows,
        .sql_affected_rows              = sql_affected_rows,
        .sql_fetch_row                  = sql_fetch_row,
        .sql_fields                     = sql_fields,
index 7f5b13aceac89e70675d1442dc5bf8508b8be711..6aace293770a7b7930e51b336003397477c980d1 100644 (file)
@@ -578,9 +578,9 @@ static unlang_action_t sql_select_query(rlm_rcode_t *p_result, UNUSED int *prior
        RETURN_MODULE_OK;
 }
 
-static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_num_rows(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;
 
        return (conn->rows_affected);
 }
@@ -661,12 +661,6 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_con
        return RLM_SQL_OK;
 }
 
-static int sql_affected_rows(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
-{
-       return sql_num_rows(handle, config);
-}
-
-
 static int _sql_socket_destructor(rlm_sql_freetds_conn_t *conn)
 {
        DEBUG2("socket destructor called, closing socket");
@@ -844,7 +838,7 @@ rlm_sql_driver_t rlm_sql_freetds = {
        .sql_num_fields                 = sql_num_fields,
        .sql_num_rows                   = sql_num_rows,
        .sql_fields                     = sql_fields,
-       .sql_affected_rows              = sql_affected_rows,
+       .sql_affected_rows              = sql_num_rows,
        .sql_fetch_row                  = sql_fetch_row,
        .sql_free_result                = sql_free_result,
        .sql_error                      = sql_error,
index 296f9e157cbb3edf9a252315abce6c99df993183..2ffc867832f646af2b5987a9238bd028ba481f06 100644 (file)
@@ -447,9 +447,9 @@ static unlang_action_t sql_select_query(rlm_rcode_t *p_result, UNUSED int *prior
        RETURN_MODULE_OK;
 }
 
-static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_num_rows(fr_sql_query_t *query_ctx, UNUSED 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);
 
        if (conn->result) return mysql_num_rows(conn->result);
 
@@ -758,9 +758,9 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
        return RLM_SQL_OK;
 }
 
-static int sql_affected_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_affected_rows(fr_sql_query_t *query_ctx, UNUSED 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);
 
        return mysql_affected_rows(conn->sock);
 }
index 649ec951d6624da00c458278f7bc587453c11acf..40d4ce1310ba06b93c4b3cb860a36cfc63f166ad 100644 (file)
@@ -48,7 +48,7 @@ static int sql_num_fields(UNUSED rlm_sql_handle_t * handle, UNUSED rlm_sql_confi
        return 0;
 }
 
-static int sql_num_rows(UNUSED rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t const *config)
+static int sql_num_rows(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
        return 0;
 }
@@ -85,7 +85,7 @@ static sql_rcode_t sql_finish_select_query(UNUSED rlm_sql_handle_t * handle, UNU
        return 0;
 }
 
-static int sql_affected_rows(UNUSED rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t const *config)
+static int sql_affected_rows(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
        return 1;
 }
index 2f15d1f1ccb860b2399374280eb6bce68a968c44..3172f385fcc6b752e6c2a16b5b4eb95b06576676 100644 (file)
@@ -535,9 +535,9 @@ finish:
        RETURN_MODULE_FAIL;
 }
 
-static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
+static int sql_num_rows(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;
        ub4 rows = 0;
        ub4 size = sizeof(ub4);
 
@@ -632,11 +632,6 @@ static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_
        return 0;
 }
 
-static int sql_affected_rows(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
-{
-       return sql_num_rows(handle, config);
-}
-
 /* Exported to rlm_sql */
 extern rlm_sql_driver_t rlm_sql_oracle;
 rlm_sql_driver_t rlm_sql_oracle = {
@@ -653,7 +648,7 @@ rlm_sql_driver_t rlm_sql_oracle = {
        .sql_select_query               = sql_select_query,
        .sql_num_fields                 = sql_num_fields,
        .sql_num_rows                   = sql_num_rows,
-       .sql_affected_rows              = sql_affected_rows,
+       .sql_affected_rows              = sql_num_rows,
        .sql_fetch_row                  = sql_fetch_row,
        .sql_fields                     = sql_fields,
        .sql_free_result                = sql_free_result,
index fb5aaef2a12aeeb380b6b9b1e5c7e0ada0a442c1..17aa0d51953e54e03a8deca7baf43f1a6cdcaabd 100644 (file)
@@ -515,9 +515,9 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
        return i;
 }
 
-static int sql_affected_rows(rlm_sql_handle_t * handle, UNUSED rlm_sql_config_t const *config)
+static int sql_affected_rows(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;
 
        return conn->affected_rows;
 }
index 9845b45131dc4b9e977b23039a62c69e006d53e2..e1814ecac65fc66dd1d72a945a35df7d1c8b15be 100644 (file)
@@ -665,10 +665,10 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
        return sql_free_result(handle, config);
 }
 
-static int sql_affected_rows(rlm_sql_handle_t *handle,
+static int sql_affected_rows(fr_sql_query_t *query_ctx,
                             UNUSED rlm_sql_config_t const *config)
 {
-       rlm_sql_sqlite_conn_t *conn = handle->conn;
+       rlm_sql_sqlite_conn_t *conn = query_ctx->handle->conn;
 
        if (conn->db) return sqlite3_changes(conn->db);
 
index 9e7c8435ad2fca124b8915a87a898de2a898cda1..f978acf3fd04b66e0d91f8bb4f375ace243fd48b 100644 (file)
@@ -44,7 +44,6 @@ USES_APPLE_DEPRECATED_API
 /* Forward declarations */
 static int sql_check_error(long err_handle, rlm_sql_handle_t *handle, rlm_sql_config_t const *config);
 static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, rlm_sql_config_t const *config);
-static int sql_affected_rows(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 int _sql_socket_destructor(rlm_sql_unixodbc_conn_t *conn)
@@ -377,14 +376,14 @@ static sql_rcode_t sql_check_error(long error_handle, rlm_sql_handle_t *handle,
  *            or insert)
  *
  *************************************************************************/
-static int sql_affected_rows(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
+static int sql_affected_rows(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;
        long error_handle;
        SQLLEN affected_rows;
 
        error_handle = SQLRowCount(conn->stmt, &affected_rows);
-       if (sql_check_error(error_handle, handle, config)) return -1;
+       if (sql_check_error(error_handle, query_ctx->handle, config)) return -1;
 
        return affected_rows;
 }
index 99a0d4e1efd918b3690b0d9e92ba633dca62473f..77bfcd12ed177559c47d0ba9cab1e0e4b5a06a22 100644 (file)
@@ -450,7 +450,7 @@ static xlat_action_t sql_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out,
                        goto finish;
                }
 
-               numaffected = (inst->driver->sql_affected_rows)(query_ctx->handle, &inst->config);
+               numaffected = (inst->driver->sql_affected_rows)(query_ctx, &inst->config);
                if (numaffected < 1) {
                        RDEBUG2("SQL query affected no rows");
 
@@ -638,7 +638,7 @@ static unlang_action_t mod_map_proc(rlm_rcode_t *p_result, void const *mod_inst,
         *      Not every driver provides an sql_num_rows function
         */
        if (inst->driver->sql_num_rows) {
-               ret = inst->driver->sql_num_rows(handle, &inst->config);
+               ret = inst->driver->sql_num_rows(query_ctx, &inst->config);
                if (ret == 0) {
                        RDEBUG2("Server returned an empty result");
                        rcode = RLM_MODULE_NOOP;
@@ -1592,7 +1592,7 @@ static unlang_action_t mod_sql_redundant_resume(rlm_rcode_t *p_result, UNUSED in
         *      We need to have updated something for the query to have been
         *      counted as successful.
         */
-       numaffected = (inst->driver->sql_affected_rows)(redundant_ctx->handle, &inst->config);
+       numaffected = (inst->driver->sql_affected_rows)(query_ctx, &inst->config);
        talloc_free(query_ctx);
        RDEBUG2("%i record(s) updated", numaffected);
 
index 70fc81179ccce8fcfe78992fea220d6385684178..1728843f34595a38b58dce76a9f3dbb48df0364c 100644 (file)
@@ -196,8 +196,8 @@ typedef struct {
        unlang_function_t       sql_select_query;
 
        int             (*sql_num_fields)(rlm_sql_handle_t *handle, rlm_sql_config_t const *config);
-       int             (*sql_num_rows)(rlm_sql_handle_t *handle, rlm_sql_config_t const *config);
-       int             (*sql_affected_rows)(rlm_sql_handle_t *handle, rlm_sql_config_t const *config);
+       int             (*sql_num_rows)(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config);
+       int             (*sql_affected_rows)(fr_sql_query_t *query_ctx, rlm_sql_config_t const *config);
 
        unlang_function_t       sql_fetch_row;
        sql_rcode_t     (*sql_fields)(char const **out[], rlm_sql_handle_t *handle, rlm_sql_config_t const *config);
index b99fa4af2bb12c87af159839e328fd98c8fe1001..411d399b330a2563f08a1d0cfd699bf8dd850bc1 100644 (file)
@@ -158,7 +158,7 @@ static int sqlippool_command(char const *query, rlm_sql_handle_t **handle, fr_tr
         */
        if (!query_ctx->handle) return -1;
 
-       affected = (sql->driver->sql_affected_rows)(*handle, &sql->config);
+       affected = (sql->driver->sql_affected_rows)(query_ctx, &sql->config);
 
        talloc_free(query_ctx);