Skip to content

Commit

Permalink
Merge pull request #87 from kamailio/lazedo/dbtext
Browse files Browse the repository at this point in the history
db_text - add affected rows capability
  • Loading branch information
lazedo committed Feb 17, 2015
2 parents 7fb52e6 + 193e8b3 commit 44db9cd
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 1 deletion.
32 changes: 31 additions & 1 deletion modules/db_text/dbt_base.c
Expand Up @@ -335,6 +335,20 @@ int dbt_raw_query(db1_con_t* _h, char* _s, db1_res_t** _r)
return -1;
}

/*
* Affected Rows
*/
int dbt_affected_rows(db1_con_t* _h)
{
if (!_h || !CON_TABLE(_h))
{
LM_ERR("invalid parameter\n");
return -1;
}

return ((dbt_con_p)_h->tail)->affected;
}

/*
* Insert a row into table
*/
Expand All @@ -350,6 +364,9 @@ int dbt_insert(db1_con_t* _h, db_key_t* _k, db_val_t* _v, int _n)
LM_ERR("invalid parameter\n");
return -1;
}

((dbt_con_p)_h->tail)->affected = 0;

if(!_k || !_v || _n<=0)
{
LM_ERR("no key-value to insert\n");
Expand Down Expand Up @@ -407,6 +424,8 @@ int dbt_insert(db1_con_t* _h, db_key_t* _k, db_val_t* _v, int _n)
goto clean;
}

((dbt_con_p)_h->tail)->affected = 1;

/* dbt_print_table(_tbc, NULL); */

/* unlock databse */
Expand Down Expand Up @@ -452,6 +471,8 @@ int dbt_delete(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)
return -1;
}

((dbt_con_p)_h->tail)->affected = 0;

/* lock database */
_tbc = dbt_db_get_table(DBT_CON_CONNECTION(_h), CON_TABLE(_h));
if(!_tbc)
Expand All @@ -464,6 +485,7 @@ int dbt_delete(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)
if(!_k || !_v || _n<=0)
{
LM_DBG("deleting all records\n");
((dbt_con_p)_h->tail)->affected = _tbc->nrrows;
dbt_table_free_rows(_tbc);
/* unlock databse */
dbt_release_table(DBT_CON_CONNECTION(_h), CON_TABLE(_h));
Expand All @@ -490,6 +512,9 @@ int dbt_delete(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)
_tbc->nrrows--;
// free row
dbt_row_free(_tbc, _drp);

((dbt_con_p)_h->tail)->affected++;

}
_drp = _drp0;
}
Expand Down Expand Up @@ -530,7 +555,9 @@ int dbt_update(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,
LM_ERR("invalid parameters\n");
return -1;
}


((dbt_con_p)_h->tail)->affected = 0;

/* lock database */
_tbc = dbt_db_get_table(DBT_CON_CONNECTION(_h), CON_TABLE(_h));
if(!_tbc)
Expand Down Expand Up @@ -569,6 +596,9 @@ int dbt_update(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,
goto error;
}
}

((dbt_con_p)_h->tail)->affected++;

}
_drp = _drp->next;
}
Expand Down
1 change: 1 addition & 0 deletions modules/db_text/dbt_res.h
Expand Up @@ -47,6 +47,7 @@ typedef struct _dbt_result
typedef struct _dbt_con
{
dbt_cache_p con;
int affected;
} dbt_con_t, *dbt_con_p;

#define DBT_CON_CONNECTION(db_con) (((dbt_con_p)((db_con)->tail))->con)
Expand Down
2 changes: 2 additions & 0 deletions modules/db_text/dbtext.c
Expand Up @@ -134,6 +134,8 @@ int dbt_bind_api(db_func_t *dbb)
dbb->insert = (db_insert_f)dbt_insert;
dbb->delete = (db_delete_f)dbt_delete;
dbb->update = (db_update_f)dbt_update;
dbb->affected_rows = (db_affected_rows_f) dbt_affected_rows;
dbb->cap = DB_CAP_AFFECTED_ROWS;

return 0;
}
Expand Down
5 changes: 5 additions & 0 deletions modules/db_text/dbtext.h
Expand Up @@ -87,5 +87,10 @@ int dbt_delete(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n);
int dbt_update(db1_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,
db_key_t* _uk, db_val_t* _uv, int _n, int _un);

/*
* Affected rows
*/
int dbt_affected_rows(db1_con_t* _h);

#endif

0 comments on commit 44db9cd

Please sign in to comment.