21 RCSID(
"$Id: dcc25145d12f04e9a648369d753979427c685532 $")
23 #define LOG_PREFIX "sql - firebird"
26 #include <freeradius-devel/util/debug.h>
39 DEBUG2(
"socket destructor called, closing socket");
44 isc_detach_database(conn->
status, &(conn->
dbh));
48 "when closing socket: %s", conn->
error);
52 pthread_mutex_destroy (&conn->
mut);
101 pthread_mutex_lock(&conn->
mut);
112 DEBUG(
"conn_id deadlock. Retry query %s", query);
123 ERROR(
"conn_id rlm_sql_firebird,sql_query error: sql_code=%li, error='%s', query=%s",
127 pthread_mutex_unlock(&conn->
mut);
135 ERROR(
"Fail to rollback transaction after previous error: %s", conn->
error);
147 pthread_mutex_unlock(&conn->
mut);
190 MEM(
names = talloc_array(handle,
char const *, fields));
192 for (i = 0; i < fields; i++)
names[i] = conn->
sqlda_out->sqlvar[i].sqlname;
277 if (!conn->
error)
return 0;
297 .name =
"sql_firebird",
static fr_time_delta_t timeout
#define MODULE_MAGIC_INIT
Stop people using different module/library/server versions together.
static const conf_parser_t config[]
void * conn
Database specific connection handle.
sql_rcode_t
Action to take at end of an SQL query.
@ RLM_SQL_RECONNECT
Stale connection, should reconnect.
@ RLM_SQL_ERROR
General connection/server error.
@ RLM_SQL_NO_MORE_ROWS
No more rows available.
rlm_sql_row_t row
Row data from the last query.
rlm_sql_driver_t rlm_sql_firebird
static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static int _sql_socket_destructor(rlm_sql_firebird_conn_t *conn)
static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
static sql_rcode_t sql_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
Returns an individual row.
static int sql_num_rows(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
Returns number of rows in query.
static int sql_num_fields(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 sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
End the select query, such as freeing memory or result.
static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config, char const *query)
Issue a non-SELECT query (ie: update/delete/insert) to the database.
static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config, char const *query)
Issue a select query to the database.
static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t const *config, UNUSED fr_time_delta_t timeout)
Establish connection to the db.
static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
Returns name of fields.
static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], NDEBUG_UNUSED size_t outlen, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
Retrieves any errors associated with the connection handle.
int fb_init_socket(rlm_sql_firebird_conn_t *conn)
int fb_sql_query(rlm_sql_firebird_conn_t *conn, char const *query)
void fb_store_row(rlm_sql_firebird_conn_t *conn)
int fb_connect(rlm_sql_firebird_conn_t *conn, rlm_sql_config_t const *config)
int fb_rollback(rlm_sql_firebird_conn_t *conn)
int fb_error(rlm_sql_firebird_conn_t *conn)
int fb_fetch(rlm_sql_firebird_conn_t *conn)
int fb_close_cursor(rlm_sql_firebird_conn_t *conn)
void fb_free_sqlda(XSQLDA *sqlda)
int fb_commit(rlm_sql_firebird_conn_t *conn)
int fb_affected_rows(rlm_sql_firebird_conn_t *conn)
void fb_free_statement(rlm_sql_firebird_conn_t *conn)
#define DEADLOCK_SQL_CODE
ISC_STATUS status[20]
Magic interbase status code array (holds multiple error codes used to construct more detailed error m...
MEM(pair_append_request(&vp, attr_eap_aka_sim_identity) >=0)
module_t common
Common fields for all loadable modules.
static const char * names[8]
A time delta, a difference in time measured in nanoseconds.
static size_t char ** out