<div dir="ltr">Hi Daniel,<div><br></div><div>the insert contact sets the columns for which there is not info to null.</div><div>i propose not to include those columns in the insert. </div><div>this way is compatible with dbtext module.</div>
<div><br></div><div>Best<br><div><br></div><div><br></div><div><div>diff --git a/modules/usrloc/ucontact.c b/modules/usrloc/ucontact.c</div><div>index eeee451..3bfdb65 100644</div><div>--- a/modules/usrloc/ucontact.c</div>
<div>+++ b/modules/usrloc/ucontact.c</div><div>@@ -476,131 +476,125 @@</div><div> <span class="" style="white-space:pre">              </span>return -1;</div><div> <span class="" style="white-space:pre">       </span>}</div><div> </div><div>
-<span class="" style="white-space:pre">      </span>keys[0] = &user_col;</div><div>-<span class="" style="white-space:pre">  </span>keys[1] = &contact_col;</div><div>-<span class="" style="white-space:pre">       </span>keys[2] = &expires_col;</div>
<div>-<span class="" style="white-space:pre">   </span>keys[3] = &q_col;</div><div>-<span class="" style="white-space:pre">     </span>keys[4] = &callid_col;</div><div>-<span class="" style="white-space:pre">        </span>keys[5] = &cseq_col;</div>
<div>-<span class="" style="white-space:pre">   </span>keys[6] = &flags_col;</div><div>-<span class="" style="white-space:pre"> </span>keys[7] = &cflags_col;</div><div>-<span class="" style="white-space:pre">        </span>keys[8] = &user_agent_col;</div>
<div>-<span class="" style="white-space:pre">   </span>keys[9] = &received_col;</div><div>-<span class="" style="white-space:pre">      </span>keys[10] = &path_col;</div><div>-<span class="" style="white-space:pre"> </span>keys[11] = &sock_col;</div>
<div>-<span class="" style="white-space:pre">   </span>keys[12] = &methods_col;</div><div>-<span class="" style="white-space:pre">      </span>keys[13] = &last_mod_col;</div><div>-<span class="" style="white-space:pre">     </span>keys[14] = &ruid_col;</div>
<div>-<span class="" style="white-space:pre">   </span>keys[15] = &instance_col;</div><div>-<span class="" style="white-space:pre">     </span>keys[16] = &reg_id_col;</div><div>-<span class="" style="white-space:pre">       </span>keys[17] = &domain_col;</div>
<div> </div><div>+<span class="" style="white-space:pre">  </span>keys[0] = &user_col;</div><div> <span class="" style="white-space:pre"> </span>vals[0].type = DB1_STR;</div><div> <span class="" style="white-space:pre">  </span>vals[0].nul = 0;</div>
<div> <span class="" style="white-space:pre">  </span>vals[0].val.str_val.s = _c->aor->s;</div><div> <span class="" style="white-space:pre">        </span>vals[0].val.str_val.len = _c->aor->len;</div><div> </div><div>
+<span class="" style="white-space:pre">      </span>keys[1] = &contact_col;</div><div> <span class="" style="white-space:pre">      </span>vals[1].type = DB1_STR;</div><div> <span class="" style="white-space:pre">  </span>vals[1].nul = 0;</div>
<div> <span class="" style="white-space:pre">  </span>vals[1].val.str_val.s = _c->c.s; </div><div> <span class="" style="white-space:pre">    </span>vals[1].val.str_val.len = _c->c.len;</div><div> </div><div>+<span class="" style="white-space:pre">  </span>keys[2] = &expires_col;</div>
<div> <span class="" style="white-space:pre">  </span>vals[2].type = DB1_DATETIME;</div><div> <span class="" style="white-space:pre">     </span>vals[2].nul = 0;</div><div> <span class="" style="white-space:pre"> </span>vals[2].val.time_val = _c->expires;</div>
<div> </div><div>+<span class="" style="white-space:pre">  </span>keys[3] = &q_col;</div><div> <span class="" style="white-space:pre">    </span>vals[3].type = DB1_DOUBLE;</div><div> <span class="" style="white-space:pre">       </span>vals[3].nul = 0;</div>
<div> <span class="" style="white-space:pre">  </span>vals[3].val.double_val = q2double(_c->q);</div><div> </div><div>+<span class="" style="white-space:pre">     </span>keys[4] = &callid_col;</div><div> <span class="" style="white-space:pre">       </span>vals[4].type = DB1_STR;</div>
<div> <span class="" style="white-space:pre">  </span>vals[4].nul = 0;</div><div> <span class="" style="white-space:pre"> </span>vals[4].val.str_val.s = _c->callid.s;</div><div> <span class="" style="white-space:pre"> </span>vals[4].val.str_val.len = _c->callid.len;</div>
<div> </div><div>+<span class="" style="white-space:pre">  </span>keys[5] = &cseq_col;</div><div> <span class="" style="white-space:pre"> </span>vals[5].type = DB1_INT;</div><div> <span class="" style="white-space:pre">  </span>vals[5].nul = 0;</div>
<div> <span class="" style="white-space:pre">  </span>vals[5].val.int_val = _c->cseq;</div><div> </div><div>+<span class="" style="white-space:pre">       </span>keys[6] = &flags_col;</div><div> <span class="" style="white-space:pre">        </span>vals[6].type = DB1_INT;</div>
<div> <span class="" style="white-space:pre">  </span>vals[6].nul = 0;</div><div> <span class="" style="white-space:pre"> </span>vals[6].val.bitmap_val = _c->flags;</div><div> </div><div>+<span class="" style="white-space:pre">   </span>keys[7] = &cflags_col;</div>
<div> <span class="" style="white-space:pre">  </span>vals[7].type = DB1_INT;</div><div> <span class="" style="white-space:pre">  </span>vals[7].nul = 0;</div><div> <span class="" style="white-space:pre"> </span>vals[7].val.bitmap_val = _c->cflags;</div>
<div> </div><div>+<span class="" style="white-space:pre">  </span>keys[8] = &user_agent_col;</div><div> <span class="" style="white-space:pre">   </span>vals[8].type = DB1_STR;</div><div> <span class="" style="white-space:pre">  </span>vals[8].nul = 0;</div>
<div> <span class="" style="white-space:pre">  </span>vals[8].val.str_val.s = _c->user_agent.s;</div><div> <span class="" style="white-space:pre">     </span>vals[8].val.str_val.len = _c->user_agent.len;</div><div> </div>
<div>-<span class="" style="white-space:pre">   </span>vals[9].type = DB1_STR;</div><div>-<span class="" style="white-space:pre">   </span>if (_c->received.s == 0) {</div><div>-<span class="" style="white-space:pre">             </span>vals[9].nul = 1;</div>
<div>-<span class="" style="white-space:pre">   </span>} else {</div><div>-<span class="" style="white-space:pre">          </span>vals[9].nul = 0;</div><div>-<span class="" style="white-space:pre">          </span>vals[9].val.str_val.s = _c->received.s;</div>
<div>-<span class="" style="white-space:pre">           </span>vals[9].val.str_val.len = _c->received.len;</div><div>+<span class="" style="white-space:pre">    </span>nr_cols = 9;</div><div>+</div><div>+<span class="" style="white-space:pre">      </span>if (_c->received.s ) {</div>
<div>+<span class="" style="white-space:pre">           </span>keys[nr_cols] = &received_col;</div><div>+<span class="" style="white-space:pre">                </span>vals[nr_cols].type = DB1_STR;</div><div>+<span class="" style="white-space:pre">             </span>vals[nr_cols].nul = 0;</div>
<div>+<span class="" style="white-space:pre">           </span>vals[nr_cols].val.str_val.s = _c->received.s;</div><div>+<span class="" style="white-space:pre">          </span>vals[nr_cols].val.str_val.len = _c->received.len;</div><div>
+<span class="" style="white-space:pre">              </span>nr_cols++;</div><div> <span class="" style="white-space:pre">       </span>}</div><div> <span class="" style="white-space:pre">        </span></div><div>-<span class="" style="white-space:pre">  </span>vals[10].type = DB1_STR;</div>
<div>-<span class="" style="white-space:pre">   </span>if (_c->path.s == 0) {</div><div>-<span class="" style="white-space:pre">         </span>vals[10].nul = 1;</div><div>-<span class="" style="white-space:pre"> </span>} else {</div>
<div>-<span class="" style="white-space:pre">           </span>vals[10].nul = 0;</div><div>-<span class="" style="white-space:pre">         </span>vals[10].val.str_val.s = _c->path.s;</div><div>-<span class="" style="white-space:pre">           </span>vals[10].val.str_val.len = _c->path.len;</div>
<div>+<span class="" style="white-space:pre">   </span>if (_c->path.s) {</div><div>+<span class="" style="white-space:pre">              </span>keys[nr_cols] = &path_col;</div><div>+<span class="" style="white-space:pre">            </span>vals[nr_cols].type = DB1_STR;</div>
<div>+<span class="" style="white-space:pre">           </span>vals[nr_cols].nul = 0;</div><div>+<span class="" style="white-space:pre">            </span>vals[nr_cols].val.str_val.s = _c->path.s;</div><div>+<span class="" style="white-space:pre">              </span>vals[nr_cols].val.str_val.len = _c->path.len;</div>
<div>+<span class="" style="white-space:pre">           </span>nr_cols++;</div><div> <span class="" style="white-space:pre">       </span>}</div><div> </div><div>-<span class="" style="white-space:pre">        </span>vals[11].type = DB1_STR;</div>
<div> <span class="" style="white-space:pre">  </span>if (_c->sock) {</div><div>-<span class="" style="white-space:pre">                </span>vals[11].val.str_val = _c->sock->sock_str;</div><div>-<span class="" style="white-space:pre">          </span>vals[11].nul = 0;</div>
<div>-<span class="" style="white-space:pre">   </span>} else {</div><div>-<span class="" style="white-space:pre">          </span>vals[11].nul = 1;</div><div>+<span class="" style="white-space:pre">         </span>keys[nr_cols] = &sock_col;</div>
<div>+<span class="" style="white-space:pre">           </span>vals[nr_cols].type = DB1_STR;</div><div>+<span class="" style="white-space:pre">             </span>vals[nr_cols].val.str_val = _c->sock->sock_str;</div><div>+<span class="" style="white-space:pre">             </span>vals[nr_cols].nul = 0;</div>
<div>+<span class="" style="white-space:pre">           </span>nr_cols++;</div><div> <span class="" style="white-space:pre">       </span>}</div><div> </div><div>-<span class="" style="white-space:pre">        </span>vals[12].type = DB1_BITMAP;</div>
<div>-<span class="" style="white-space:pre">   </span>if (_c->methods == 0xFFFFFFFF) {</div><div>-<span class="" style="white-space:pre">               </span>vals[12].nul = 1;</div><div>-<span class="" style="white-space:pre"> </span>} else {</div>
<div>-<span class="" style="white-space:pre">           </span>vals[12].val.bitmap_val = _c->methods;</div><div>-<span class="" style="white-space:pre">         </span>vals[12].nul = 0;</div><div>+<span class="" style="white-space:pre"> </span>if (_c->methods != 0xFFFFFFFF) {</div>
<div>+<span class="" style="white-space:pre">           </span>keys[nr_cols] = &methods_col;</div><div>+<span class="" style="white-space:pre">         </span>vals[nr_cols].type = DB1_BITMAP;</div><div>+<span class="" style="white-space:pre">          </span>vals[nr_cols].val.bitmap_val = _c->methods;</div>
<div>+<span class="" style="white-space:pre">           </span>vals[nr_cols].nul = 0;</div><div>+<span class="" style="white-space:pre">            </span>nr_cols++;</div><div> <span class="" style="white-space:pre">       </span>}</div><div> </div>
<div>-<span class="" style="white-space:pre">   </span>vals[13].type = DB1_DATETIME;</div><div>-<span class="" style="white-space:pre">     </span>vals[13].nul = 0;</div><div>-<span class="" style="white-space:pre"> </span>vals[13].val.time_val = _c->last_modified;</div>
<div>+<span class="" style="white-space:pre">   </span>keys[nr_cols] = &last_mod_col;</div><div>+<span class="" style="white-space:pre">        </span>vals[nr_cols].type = DB1_DATETIME;</div><div>+<span class="" style="white-space:pre">        </span>vals[nr_cols].nul = 0;</div>
<div>+<span class="" style="white-space:pre">   </span>vals[nr_cols].val.time_val = _c->last_modified;</div><div>+<span class="" style="white-space:pre">        </span>nr_cols++;</div><div> </div><div>-<span class="" style="white-space:pre">       </span>nr_cols = 14;</div>
<div> </div><div> <span class="" style="white-space:pre"> </span>if(_c->ruid.len>0)</div><div> <span class="" style="white-space:pre"> </span>{</div><div>+<span class="" style="white-space:pre">         </span>keys[nr_cols] = &ruid_col;</div>
<div> <span class="" style="white-space:pre">          </span>vals[nr_cols].type = DB1_STR;</div><div> <span class="" style="white-space:pre">            </span>vals[nr_cols].nul = 0;</div><div> <span class="" style="white-space:pre">           </span>vals[nr_cols].val.str_val = _c->ruid;</div>
<div>-<span class="" style="white-space:pre">   </span>} else {</div><div>-<span class="" style="white-space:pre">          </span>vals[nr_cols].nul = 1;</div><div>+<span class="" style="white-space:pre">            </span>nr_cols++;</div><div>
 <span class="" style="white-space:pre">     </span>}</div><div>-<span class="" style="white-space:pre"> </span>nr_cols++;</div><div> </div><div> <span class="" style="white-space:pre">      </span>if(_c->instance.len>0)</div>
<div> <span class="" style="white-space:pre">  </span>{</div><div>+<span class="" style="white-space:pre">         </span>keys[nr_cols] = &instance_col;</div><div> <span class="" style="white-space:pre">               </span>vals[nr_cols].type = DB1_STR;</div>
<div> <span class="" style="white-space:pre">          </span>vals[nr_cols].nul = 0;</div><div> <span class="" style="white-space:pre">           </span>vals[nr_cols].val.str_val = _c->instance;</div><div>-<span class="" style="white-space:pre">      </span>} else {</div>
<div>-<span class="" style="white-space:pre">           </span>vals[nr_cols].nul = 1;</div><div>+<span class="" style="white-space:pre">            </span>nr_cols++;</div><div> <span class="" style="white-space:pre">       </span>}</div><div>-<span class="" style="white-space:pre"> </span>nr_cols++;</div>
<div> </div><div>+<span class="" style="white-space:pre">  </span>keys[nr_cols] = &reg_id_col;</div><div> <span class="" style="white-space:pre"> </span>vals[nr_cols].type = DB1_INT;</div><div> <span class="" style="white-space:pre">    </span>vals[nr_cols].nul = 0;</div>
<div> <span class="" style="white-space:pre">  </span>vals[nr_cols].val.int_val = (int)_c->reg_id;</div><div> <span class="" style="white-space:pre">  </span>nr_cols++;</div><div> </div><div> <span class="" style="white-space:pre">      </span>if (use_domain) {</div>
<div>+<span class="" style="white-space:pre">           </span>keys[nr_cols] = &domain_col;</div><div> <span class="" style="white-space:pre">         </span>vals[nr_cols].type = DB1_STR;</div><div> <span class="" style="white-space:pre">            </span>vals[nr_cols].nul = 0;</div>
<div> </div></div></div></div>