db_mysql/dbase.c File Reference

Implementation of core functions for the MySQL driver. More...

#include <stdio.h>
#include <string.h>
#include <mysql/mysql.h>
#include <mysql/errmsg.h>
#include <mysql/mysql_version.h>
#include "../../mem/mem.h"
#include "../../dprint.h"
#include "../../db/db_query.h"
#include "../../db/db_ut.h"
#include "val.h"
#include "my_con.h"
#include "res.h"
#include "row.h"
#include "db_mysql.h"
#include "dbase.h"

Include dependency graph for db_mysql/dbase.c:

Go to the source code of this file.

Functions

int db_insert_update (const db_con_t *_h, const db_key_t *_k, const db_val_t *_v, const int _n)
 Insert a row into table, update on duplicate key.
int db_last_inserted_id (const db_con_t *_h)
 Returns the last inserted ID.
void db_mysql_close (db_con_t *_h)
 Close a database connection.
int db_mysql_delete (const db_con_t *_h, const db_key_t *_k, const db_op_t *_o, const db_val_t *_v, const int _n)
 Delete a row from table.
int db_mysql_fetch_result (const db_con_t *_h, db_res_t **_r, const int nrows)
 Gets a partial result set, fetch rows from a result.
int db_mysql_free_result (db_con_t *_h, db_res_t *_r)
 Free all memory allocated by get_result.
db_con_tdb_mysql_init (const str *_url)
 Initialize database connection.
int db_mysql_insert (const db_con_t *_h, const db_key_t *_k, const db_val_t *_v, const int _n)
 Insert a row into table.
int db_mysql_query (const db_con_t *_h, const db_key_t *_k, const db_op_t *_op, const db_val_t *_v, const db_key_t *_c, const int _n, const int _nc, const db_key_t _o, db_res_t **_r)
 Do a query.
int db_mysql_raw_query (const db_con_t *_h, const str *_s, db_res_t **_r)
 Raw SQL query.
int db_mysql_replace (const db_con_t *_h, const db_key_t *_k, const db_val_t *_v, const int _n)
 Just like insert, but replace the row if it exists.
static int db_mysql_store_result (const db_con_t *_h, db_res_t **_r)
static int db_mysql_submit_query (const db_con_t *_h, const str *_s)
 Send a SQL query to the server.
int db_mysql_update (const db_con_t *_h, const db_key_t *_k, const db_op_t *_o, const db_val_t *_v, const db_key_t *_uk, const db_val_t *_uv, const int _n, const int _un)
 Update a row in table.
int db_mysql_use_table (db_con_t *_h, const str *_t)
 Store name of table that will be used by subsequent database functions.


Detailed Description

Implementation of core functions for the MySQL driver.

This file contains the implementation of core functions for the MySQL database driver, for example to submit a query or fetch a result.

Module: DB_MYSQL :: the MySQL driver for Kamailio

Definition in file db_mysql/dbase.c.


Function Documentation

int db_insert_update ( const db_con_t _h,
const db_key_t _k,
const db_val_t _v,
const int  _n 
)

Insert a row into table, update on duplicate key.

Insert a row into a specified table, update on duplicate key.

Parameters:
_h structure representing database connection
_k key names
_v values of the keys
_n number of key=value pairs

Definition at line 475 of file db_mysql/dbase.c.

References CON_TABLE, db_mysql_submit_query(), db_mysql_val2str(), db_print_columns(), db_print_set(), db_print_values(), _str::len, len, LM_ERR, _str::s, s, snprintf, sql_buf, SQL_BUF_LEN, and sql_str.

Referenced by db_mysql_bind_api().

int db_last_inserted_id ( const db_con_t _h  ) 

Returns the last inserted ID.

Returns the last inserted ID.

Parameters:
_h database handle
Returns:
returns the ID as integer or returns 0 if the previous statement does not use an AUTO_INCREMENT value.

Definition at line 458 of file db_mysql/dbase.c.

References CON_CONNECTION, and LM_ERR.

Referenced by db_mysql_bind_api().

void db_mysql_close ( db_con_t _h  ) 

Close a database connection.

Shut down the database module. No function should be called after this

Parameters:
_h handle to the closed connection
Returns:
zero on success, negative value on failure

Definition at line 140 of file db_mysql/dbase.c.

References db_do_close(), and db_mysql_free_connection().

Referenced by db_mysql_bind_api().

int db_mysql_delete ( const db_con_t _h,
const db_key_t _k,
const db_op_t _o,
const db_val_t _v,
const int  _n 
)

Delete a row from table.

Delete a row from the specified table

Parameters:
_h structure representing database connection
_k key names
_o operators
_v values of the keys that must match
_n number of key=value pairs
Returns:
zero on success, negative value on failure

Definition at line 408 of file db_mysql/dbase.c.

References db_do_delete(), db_mysql_submit_query(), and db_mysql_val2str().

Referenced by db_mysql_bind_api().

int db_mysql_fetch_result ( const db_con_t _h,
db_res_t **  _r,
const int  nrows 
)

Gets a partial result set, fetch rows from a result.

fetch rows from a result

Gets a partial result set, fetch a number of rows from a database result. This function initialize the given result structure on the first run, and fetches the nrows number of rows. On subsequenting runs, it uses the existing result and fetches more rows, until it reaches the end of the result set. Because of this the result needs to be null in the first invocation of the function. If the number of wanted rows is zero, the function returns anything with a result of zero.

Parameters:
_h structure representing the database connection
_r pointer to a structure representing the result
nrows number of fetched rows
Returns:
zero on success, negative value on failure

Definition at line 269 of file db_mysql/dbase.c.

References CON_CONNECTION, CON_RESULT, CON_ROW, db_free_result(), db_free_rows(), db_mysql_convert_row(), db_mysql_get_columns(), db_new_result(), LM_DBG, LM_ERR, pkg_malloc, RES_LAST_ROW, RES_NUM_ROWS, RES_ROW_N, and RES_ROWS.

Referenced by db_mysql_bind_api().

int db_mysql_free_result ( db_con_t _h,
db_res_t _r 
)

Free all memory allocated by get_result.

Release a result set from memory.

Parameters:
_h handle to the database
_r result set that should be freed
Returns:
zero on success, negative value on failure

Definition at line 216 of file db_mysql/dbase.c.

References CON_RESULT, db_free_result(), and LM_ERR.

Referenced by db_mysql_bind_api().

db_con_t* db_mysql_init ( const str _url  ) 

Initialize database connection.

Initialize the database module. No function should be called before this

Parameters:
_url URL used for initialization
Returns:
zero on success, negative value on failure

Definition at line 128 of file db_mysql/dbase.c.

References db_do_init(), and db_mysql_new_connection().

Referenced by db_mysql_bind_api().

int db_mysql_insert ( const db_con_t _h,
const db_key_t _k,
const db_val_t _v,
const int  _n 
)

Insert a row into table.

Insert a row into a specified table.

Parameters:
_h structure representing database connection
_k key names
_v values of the keys
_n number of key=value pairs
Returns:
zero on success, negative value on failure

Definition at line 392 of file db_mysql/dbase.c.

References db_do_insert(), db_mysql_submit_query(), and db_mysql_val2str().

Referenced by db_mysql_bind_api().

int db_mysql_query ( const db_con_t _h,
const db_key_t _k,
const db_op_t _op,
const db_val_t _v,
const db_key_t _c,
const int  _n,
const int  _nc,
const db_key_t  _o,
db_res_t **  _r 
)

Do a query.

Query a table for specified rows.

Parameters:
_h structure representing database connection
_k key names
_op operators
_v values of the keys that must match
_c column names to return
_n number of key=values pairs to compare
_nc number of columns to return
_o order by the specified column
_r pointer to a structure representing the result
Returns:
zero on success, negative value on failure

Definition at line 246 of file db_mysql/dbase.c.

References db_do_query(), db_mysql_store_result(), db_mysql_submit_query(), and db_mysql_val2str().

Referenced by db_mysql_bind_api().

int db_mysql_raw_query ( const db_con_t _h,
const str _s,
db_res_t **  _r 
)

Raw SQL query.

Execute a raw SQL query.

Parameters:
_h handle for the database
_s raw query string
_r result set for storage
Returns:
zero on success, negative value on failure

Definition at line 377 of file db_mysql/dbase.c.

References db_do_raw_query(), db_mysql_store_result(), and db_mysql_submit_query().

Referenced by db_mysql_bind_api().

int db_mysql_replace ( const db_con_t _h,
const db_key_t _k,
const db_val_t _v,
const int  _n 
)

Just like insert, but replace the row if it exists.

Just like insert, but replace the row if it exists.

Parameters:
_h database handle
_k key names
_v values of the keys that must match
_n number of key=value pairs
Returns:
zero on success, negative value on failure

Definition at line 445 of file db_mysql/dbase.c.

References db_do_replace(), db_mysql_submit_query(), and db_mysql_val2str().

Referenced by db_mysql_bind_api().

static int db_mysql_store_result ( const db_con_t _h,
db_res_t **  _r 
) [static]

Retrieve a result set

Parameters:
_h handle to the database
_r result set that should be retrieved
Returns:
zero on success, negative value on failure

Definition at line 152 of file db_mysql/dbase.c.

References CON_CONNECTION, CON_RESULT, db_free_result(), db_mysql_convert_result(), db_new_result(), LM_DBG, LM_ERR, and pkg_free.

Referenced by db_mysql_query(), and db_mysql_raw_query().

static int db_mysql_submit_query ( const db_con_t _h,
const str _s 
) [static]

Send a SQL query to the server.

Send a SQL query to the database server. This methods tries to reconnect to the server if the connection is gone and the auto_reconnect parameter is enabled. It also issues a mysql_ping before the query to connect again after a long waiting period because for some older mysql versions the auto reconnect don't work sufficient. If auto_reconnect is enabled and the server supports it, then the mysql_ping is probably not necessary, but its safer to do it in this cases too.

Parameters:
_h handle for the db
_s executed query
Returns:
zero on success, negative value on failure

Definition at line 68 of file db_mysql/dbase.c.

References CON_CONNECTION, CON_TIMESTAMP, db_mysql_auto_reconnect, db_mysql_ping_interval, _str::len, LM_ERR, LM_WARN, and _str::s.

Referenced by db_insert_update(), db_mysql_delete(), db_mysql_insert(), db_mysql_query(), db_mysql_raw_query(), db_mysql_replace(), and db_mysql_update().

int db_mysql_update ( const db_con_t _h,
const db_key_t _k,
const db_op_t _o,
const db_val_t _v,
const db_key_t _uk,
const db_val_t _uv,
const int  _n,
const int  _un 
)

Update a row in table.

Update some rows in the specified table

Parameters:
_h structure representing database connection
_k key names
_o operators
_v values of the keys that must match
_uk updated columns
_uv updated values of the columns
_n number of key=value pairs
_un number of columns to update
Returns:
zero on success, negative value on failure

Definition at line 428 of file db_mysql/dbase.c.

References db_do_update(), db_mysql_submit_query(), and db_mysql_val2str().

Referenced by db_mysql_bind_api().

int db_mysql_use_table ( db_con_t _h,
const str _t 
)

Store name of table that will be used by subsequent database functions.

Store the name of table that will be used by subsequent database functions

Parameters:
_h database handle
_t table name
Returns:
zero on success, negative value on failure

Definition at line 533 of file db_mysql/dbase.c.

References db_use_table().

Referenced by db_mysql_bind_api().


Generated on Mon May 21 18:00:38 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6