/* * Update some rows in the specified table * _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 */ int perlvdb_db_update(db_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) { AV *condarr; AV *updatearr; SV *condarrref; SV *updatearrref; SV *ret; condarr = conds2perlarray(k, o, v, n); updatearr = pairs2perlarray(uk, uv, un); condarrref = newRV_noinc((SV*)condarr); updatearrref = newRV_noinc((SV*)updatearr); ret = perlvdb_perlmethod(getobj(h), PERL_VDB_UPDATEMETHOD, condarrref, updatearrref, NULL, NULL); av_undef(condarr); av_undef(updatearr); return IV2int(ret); }
/* * Store name of table that will be used by * subsequent database functions */ int perlvdb_use_table(db_con_t* h, const char* t) { SV *ret; if (!h || !t) { LM_ERR("invalid parameter value\n"); return -1; } ret = perlvdb_perlmethod(getobj(h), PERL_VDB_USETABLEMETHOD, sv_2mortal(newSVpv(t, 0)), NULL, NULL, NULL); return IV2int(ret); }
/* * Delete a row from the specified table * h: structure representing database connection * k: key names * o: operators * v: values of the keys that must match * n: number of key=value pairs */ int perlvdb_db_delete(db_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v, int n) { AV *arr; SV *arrref; SV *ret; arr = conds2perlarray(k, o, v, n); arrref = newRV_noinc((SV*)arr); ret = perlvdb_perlmethod(getobj(h), PERL_VDB_DELETEMETHOD, arrref, NULL, NULL, NULL); av_undef(arr); return IV2int(ret); }
/* * Insert a row into specified table * h: structure representing database connection * k: key names * v: values of the keys * n: number of key=value pairs */ int perlvdb_db_insertreplace(db_con_t* h, db_key_t* k, db_val_t* v, int n, char *insertreplace) { AV *arr; SV *arrref; SV *ret; arr = pairs2perlarray(k, v, n); arrref = newRV_noinc((SV*)arr); ret = perlvdb_perlmethod(getobj(h), insertreplace, arrref, NULL, NULL, NULL); av_undef(arr); return IV2int(ret); }
/* * Store name of table that will be used by * subsequent database functions */ int perlvdb_use_table(db_con_t* h, const str* t) { SV *ret; SV *table; int res = -1; if (!h || !t || !t->s) { LM_ERR("invalid parameter value\n"); return -1; } table = newSVpv(t->s, t->len); ret = perlvdb_perlmethod(getobj(h), PERL_VDB_USETABLEMETHOD, table, NULL, NULL, NULL); SvREFCNT_dec(table); res = IV2int(ret); return res; }