From: Nick Porter Date: Wed, 8 May 2024 11:12:23 +0000 (+0100) Subject: Pass fr_sql_query_t to num_rows and affected_rows X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=779df38d7dc0be8dbfd2b0b720e2df014e62656b;p=thirdparty%2Ffreeradius-server.git Pass fr_sql_query_t to num_rows and affected_rows 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 dea051ae847..34b9885425d 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 @@ -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; } 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 85ab3bbfde2..814434c2604 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 @@ -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); 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 30206b080c1..081fc8c9fe9 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 @@ -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, 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 7f5b13aceac..6aace293770 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 @@ -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, 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 296f9e157cb..2ffc867832f 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 @@ -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); } 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 649ec951d66..40d4ce1310b 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 @@ -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; } 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 2f15d1f1ccb..3172f385fcc 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 @@ -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, 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 fb5aaef2a12..17aa0d51953 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 @@ -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; } 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 9845b45131d..e1814ecac65 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 @@ -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); 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 9e7c8435ad2..f978acf3fd0 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 @@ -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; } diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 99a0d4e1efd..77bfcd12ed1 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -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); diff --git a/src/modules/rlm_sql/rlm_sql.h b/src/modules/rlm_sql/rlm_sql.h index 70fc81179cc..1728843f345 100644 --- a/src/modules/rlm_sql/rlm_sql.h +++ b/src/modules/rlm_sql/rlm_sql.h @@ -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); diff --git a/src/modules/rlm_sqlippool/rlm_sqlippool.c b/src/modules/rlm_sqlippool/rlm_sqlippool.c index b99fa4af2bb..411d399b330 100644 --- a/src/modules/rlm_sqlippool/rlm_sqlippool.c +++ b/src/modules/rlm_sqlippool/rlm_sqlippool.c @@ -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);