22 RCSID(
"$Id: 27c7b7848f9529b92aa7dea44bf31fcb577a3347 $")
24 #include "sql_fbapi.h"
25 #include <freeradius-devel/rad_assert.h>
38 DEBUG2(
"rlm_sql_firebird: socket destructor called, closing socket");
43 isc_detach_database(conn->
status, &(conn->
dbh));
46 WARN(
"rlm_sql_firebird: Got error "
47 "when closing socket: %s", conn->
error);
85 ERROR(
"rlm_sql_firebird: Connection failed: %s", conn->
error);
115 DEBUG(
"conn_id deadlock. Retry query %s", query);
126 ERROR(
"conn_id rlm_sql_firebird,sql_query error: sql_code=%li, error='%s', query=%s",
140 ERROR(
"Fail to rollback transaction after previous error: %s", conn->
error);
199 MEM(names = talloc_array(handle,
char const *, fields));
201 for (i = 0; i < fields; i++) names[i] = conn->
sqlda_out->sqlvar[i].sqlname;
222 ERROR(
"rlm_sql_firebird. Fetch problem: %s", conn->
error);
232 *out = handle->
row = conn->
row;
287 if (!conn->
error)
return 0;
306 .
name =
"rlm_sql_firebird",
static sql_rcode_t sql_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *config)
Returns an individual row.
General connection/server error.
static int sql_num_rows(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
Returns number of rows in query.
static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
log_type_t type
Type of log entry L_ERR, L_WARN, L_INFO, L_DBG etc..
static sql_rcode_t sql_finish_select_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *config)
End the select query, such as freeing memory or result.
char const * msg
Log message.
int fb_sql_query(rlm_sql_firebird_conn_t *conn, char const *query)
int fb_close_cursor(rlm_sql_firebird_conn_t *conn)
int fb_fetch(rlm_sql_firebird_conn_t *conn)
void fb_store_row(rlm_sql_firebird_conn_t *conn)
#define DEADLOCK_SQL_CODE
int fb_commit(rlm_sql_firebird_conn_t *conn)
int fb_init_socket(rlm_sql_firebird_conn_t *conn)
static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t *config, UNUSED struct timeval const *timeout)
Establish connection to the db.
Stale connection, should reconnect.
int fb_affected_rows(rlm_sql_firebird_conn_t *conn)
#define pthread_mutex_unlock(_x)
int fb_connect(rlm_sql_firebird_conn_t *conn, rlm_sql_config_t *config)
static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *config, char const *query)
Issue a non-SELECT query (ie: update/delete/insert) to the database.
static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *config)
Returns name of fields.
static int sql_affected_rows(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
End the query.
void * conn
Database specific connection handle.
void fb_free_sqlda(XSQLDA *sqlda)
rlm_sql_row_t row
Row data from the last query.
static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t *config, char const *query)
Issue a select query to the database.
static int sql_num_fields(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
int fb_error(rlm_sql_firebird_conn_t *conn)
int fb_rollback(rlm_sql_firebird_conn_t *conn)
void fb_free_statement(rlm_sql_firebird_conn_t *conn)
#define pthread_mutex_lock(_x)
static int _sql_socket_destructor(rlm_sql_firebird_conn_t *conn)
static size_t sql_error(UNUSED TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen, rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *config)
Retrieves any errors associated with the connection handle.
#define pthread_mutex_destroy(_x)
ISC_STATUS status[20]
Magic interbase status code array (holds multiple error codes used to construct more detailed error m...
rlm_sql_module_t rlm_sql_firebird