Hi Daniel, here it is.
On Mon, Sep 8, 2014 at 1:25 PM, Daniel-Constantin Mierla <[email protected]> wrote: > Hello, > > this patch is also good in general, so I will apply it. Can you send it as > attachment? When pasted inline in the email, the whitespaces are getting > broken and patch is not easy to apply. > > Thanks, > Daniel > > > On 04/09/14 11:52, Luis Azedo wrote: > > Hi Daniel, > > the insert contact sets the columns for which there is not info to null. > i propose not to include those columns in the insert. > this way is compatible with dbtext module. > > Best > > > diff --git a/modules/usrloc/ucontact.c b/modules/usrloc/ucontact.c > index eeee451..3bfdb65 100644 > --- a/modules/usrloc/ucontact.c > +++ b/modules/usrloc/ucontact.c > @@ -476,131 +476,125 @@ > return -1; > } > > - keys[0] = &user_col; > - keys[1] = &contact_col; > - keys[2] = &expires_col; > - keys[3] = &q_col; > - keys[4] = &callid_col; > - keys[5] = &cseq_col; > - keys[6] = &flags_col; > - keys[7] = &cflags_col; > - keys[8] = &user_agent_col; > - keys[9] = &received_col; > - keys[10] = &path_col; > - keys[11] = &sock_col; > - keys[12] = &methods_col; > - keys[13] = &last_mod_col; > - keys[14] = &ruid_col; > - keys[15] = &instance_col; > - keys[16] = ®_id_col; > - keys[17] = &domain_col; > > + keys[0] = &user_col; > vals[0].type = DB1_STR; > vals[0].nul = 0; > vals[0].val.str_val.s = _c->aor->s; > vals[0].val.str_val.len = _c->aor->len; > > + keys[1] = &contact_col; > vals[1].type = DB1_STR; > vals[1].nul = 0; > vals[1].val.str_val.s = _c->c.s; > vals[1].val.str_val.len = _c->c.len; > > + keys[2] = &expires_col; > vals[2].type = DB1_DATETIME; > vals[2].nul = 0; > vals[2].val.time_val = _c->expires; > > + keys[3] = &q_col; > vals[3].type = DB1_DOUBLE; > vals[3].nul = 0; > vals[3].val.double_val = q2double(_c->q); > > + keys[4] = &callid_col; > vals[4].type = DB1_STR; > vals[4].nul = 0; > vals[4].val.str_val.s = _c->callid.s; > vals[4].val.str_val.len = _c->callid.len; > > + keys[5] = &cseq_col; > vals[5].type = DB1_INT; > vals[5].nul = 0; > vals[5].val.int_val = _c->cseq; > > + keys[6] = &flags_col; > vals[6].type = DB1_INT; > vals[6].nul = 0; > vals[6].val.bitmap_val = _c->flags; > > + keys[7] = &cflags_col; > vals[7].type = DB1_INT; > vals[7].nul = 0; > vals[7].val.bitmap_val = _c->cflags; > > + keys[8] = &user_agent_col; > vals[8].type = DB1_STR; > vals[8].nul = 0; > vals[8].val.str_val.s = _c->user_agent.s; > vals[8].val.str_val.len = _c->user_agent.len; > > - vals[9].type = DB1_STR; > - if (_c->received.s == 0) { > - vals[9].nul = 1; > - } else { > - vals[9].nul = 0; > - vals[9].val.str_val.s = _c->received.s; > - vals[9].val.str_val.len = _c->received.len; > + nr_cols = 9; > + > + if (_c->received.s ) { > + keys[nr_cols] = &received_col; > + vals[nr_cols].type = DB1_STR; > + vals[nr_cols].nul = 0; > + vals[nr_cols].val.str_val.s = _c->received.s; > + vals[nr_cols].val.str_val.len = _c->received.len; > + nr_cols++; > } > > - vals[10].type = DB1_STR; > - if (_c->path.s == 0) { > - vals[10].nul = 1; > - } else { > - vals[10].nul = 0; > - vals[10].val.str_val.s = _c->path.s; > - vals[10].val.str_val.len = _c->path.len; > + if (_c->path.s) { > + keys[nr_cols] = &path_col; > + vals[nr_cols].type = DB1_STR; > + vals[nr_cols].nul = 0; > + vals[nr_cols].val.str_val.s = _c->path.s; > + vals[nr_cols].val.str_val.len = _c->path.len; > + nr_cols++; > } > > - vals[11].type = DB1_STR; > if (_c->sock) { > - vals[11].val.str_val = _c->sock->sock_str; > - vals[11].nul = 0; > - } else { > - vals[11].nul = 1; > + keys[nr_cols] = &sock_col; > + vals[nr_cols].type = DB1_STR; > + vals[nr_cols].val.str_val = _c->sock->sock_str; > + vals[nr_cols].nul = 0; > + nr_cols++; > } > > - vals[12].type = DB1_BITMAP; > - if (_c->methods == 0xFFFFFFFF) { > - vals[12].nul = 1; > - } else { > - vals[12].val.bitmap_val = _c->methods; > - vals[12].nul = 0; > + if (_c->methods != 0xFFFFFFFF) { > + keys[nr_cols] = &methods_col; > + vals[nr_cols].type = DB1_BITMAP; > + vals[nr_cols].val.bitmap_val = _c->methods; > + vals[nr_cols].nul = 0; > + nr_cols++; > } > > - vals[13].type = DB1_DATETIME; > - vals[13].nul = 0; > - vals[13].val.time_val = _c->last_modified; > + keys[nr_cols] = &last_mod_col; > + vals[nr_cols].type = DB1_DATETIME; > + vals[nr_cols].nul = 0; > + vals[nr_cols].val.time_val = _c->last_modified; > + nr_cols++; > > - nr_cols = 14; > > if(_c->ruid.len>0) > { > + keys[nr_cols] = &ruid_col; > vals[nr_cols].type = DB1_STR; > vals[nr_cols].nul = 0; > vals[nr_cols].val.str_val = _c->ruid; > - } else { > - vals[nr_cols].nul = 1; > + nr_cols++; > } > - nr_cols++; > > if(_c->instance.len>0) > { > + keys[nr_cols] = &instance_col; > vals[nr_cols].type = DB1_STR; > vals[nr_cols].nul = 0; > vals[nr_cols].val.str_val = _c->instance; > - } else { > - vals[nr_cols].nul = 1; > + nr_cols++; > } > - nr_cols++; > > + keys[nr_cols] = ®_id_col; > vals[nr_cols].type = DB1_INT; > vals[nr_cols].nul = 0; > vals[nr_cols].val.int_val = (int)_c->reg_id; > nr_cols++; > > if (use_domain) { > + keys[nr_cols] = &domain_col; > vals[nr_cols].type = DB1_STR; > vals[nr_cols].nul = 0; > > > > _______________________________________________ > sr-dev mailing > [email protected]http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev > > > -- > Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - > http://www.linkedin.com/in/miconda > Next Kamailio Advanced Trainings 2014 - http://www.asipto.com > Sep 22-25, Berlin, Germany > >
usrloc-ucontact.patch
Description: Binary data
_______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
