Module: sip-router Branch: master Commit: 1e84aeb91cf8e7a79a9ac9091ed993be944a667b URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1e84aeb9...
Author: Luis Azedo luis.azedo@factorlusitano.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Mon Sep 8 17:07:11 2014 +0200
usrloc: don't add columns without values in the sql query
- works better with db_text as well as the resulted query is smaller
---
modules/usrloc/ucontact.c | 100 +++++++++++++++++++++------------------------ 1 files changed, 47 insertions(+), 53 deletions(-)
diff --git a/modules/usrloc/ucontact.c b/modules/usrloc/ucontact.c index ead8e40..f426c27 100644 --- a/modules/usrloc/ucontact.c +++ b/modules/usrloc/ucontact.c @@ -480,131 +480,125 @@ int db_insert_ucontact(ucontact_t* _c) 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;