<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 5, 2015 at 3:45 PM, Rodrigo Pimenta Carvalho <span dir="ltr">&lt;<a href="mailto:pimenta@inatel.br" target="_blank">pimenta@inatel.br</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">




<div dir="ltr">
<div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;background-color:rgb(255,255,255)">
<p><br>
</p>
<p><br>
</p>
<p>Hi.</p>
<p><br>
</p>
<p>My SQL query is: <br>
</p>
<p><br>
</p>
<p><i>UPDATE GeneralConfigurations set Value = &#39;casa&#39; where Attribute = &#39;Exists_Intercom_Call&#39;</i></p>
<p><br>
</p>
<p>This query is correct and can execute very well when applied via a Firefox plugin for SQLite. So, I believe that such query is really correct.</p>
<p><br>
</p>
<p>However, when this query is passed to avp_db_query, the OpenSIPS logs:</p>
<p><br>
</p>
<p>-----------------------------------------------------------------------------------------------------------------------</p>
<p><br>
</p>
<p>Nov  5 18:25:53 [5655] DBG:avpops:ops_dbquery_avps: query [UPDATE GeneralConfigurations set Value = &#39;casa&#39; where Attribute = &#39;Exists_Intercom_Call&#39;]<br>
Nov  5 18:25:53 [5655] ERROR:db_sqlite:db_sqlite_raw_query: query failed: near &quot;UPDATE&quot;: syntax error<br>
</p>
<p>Nov  5 18:25:53 [5655] ERROR:avpops:db_query_avp: raw_query failed: db0(usr_preferences) UPDATE GeneralConfigurations set Value =...</p>
<p><br>
</p>
<p>--------------------------------------------------------------------------------------------------------------------------------</p>
<p><br>
</p>
<p>Can someone visualize what is the problem?  Help, please.</p>
<p><br>
</p>
<p>Observations:</p>
<p><br>
</p>
<p>1. I&#39;m using OpenSIPS 2.2 and SQLite 3.</p>
<p><br>
</p>
<p>2. I have changed the OpenSIPS dbase.c file on my own. (Following some hints gotten in this discussion list). So, I have changed the function db_sqlite_raw_query and now its code has these instructions:</p>
<p><br>
</p>
<p><br>
</p>
<p>..............................................................................................................................................................</p>
<p><br>
</p>
<p><br>
</p>
<p>int db_sqlite_raw_query(const db_con_t* _h, const str* _s, db_res_t** _r)<br>
{<br>
        static char sql_str[SQL_BUF_LEN];<br>
        int ret=-1;<br>
        char* errmsg;<br>
//      str select_str={&quot;select&quot;, 6};<br>
<br>
       CON_RESET_CURR_PS(_h);<br>
       if (_s-&gt;len + 1 &gt; SQL_BUF_LEN) {<br>
         LM_ERR(&quot;query too big! try reducing the size of your query!&quot;<br>
        &quot;Current max size [%d]!\n&quot;, SQL_BUF_LEN);<br>
        return -1;<br>
        }<br>
        memcpy(sql_str, _s-&gt;s, _s-&gt;len);<br>
        sql_str[_s-&gt;len] = &#39;\0&#39;;<br>
<br>
       char *saveptr;<br>
       char *cpFrstWrd;<br>
       char *cpScndWrd;<br>
<br>
       cpFrstWrd = strtok_r(sql_str, &quot; &quot;, &amp;saveptr);<br>
       cpScndWrd = strtok_r(NULL, &quot; &quot;, &amp;saveptr);<br>
<br>
</p>
<p>       if (!((strncasecmp(cpFrstWrd, &quot;SELECT&quot;, 6)==0)   || (strncasecmp(cpScndWrd, &quot;SELECT&quot;, 6)==0))){  
<b>// now it will refuse queries with SELECT just when SELECT is in the beginning of the query.</b><br>
</p>
       //if (!str_strstr(_s, &amp;select_str)) {<br>
                /* not a select statement; can execute the query and exit*/<br></div></div></blockquote><div><br></div><div>Try adding here:</div><div><br></div><div><span class="" style="color:rgb(0,134,179);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:16.8px;white-space:pre">CON_RAW_QUERY</span><span style="color:rgb(51,51,51);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:16.8px;white-space:pre;background-color:rgb(250,250,250)">(_h) = </span><span class="" style="color:rgb(0,134,179);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:16.8px;white-space:pre">1</span><span style="color:rgb(51,51,51);font-family:Consolas,&#39;Liberation Mono&#39;,Menlo,Courier,monospace;font-size:12px;line-height:16.8px;white-space:pre;background-color:rgb(250,250,250)">;</span><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;background-color:rgb(255,255,255)">
                if (sqlite3_exec(CON_CONNECTION(_h),<br>
                        sql_str, NULL, NULL, &amp;errmsg)) {<br>
                        LM_ERR(&quot;query failed: %s\n&quot;, errmsg);<br>
                        return -2;<br>
                }<br>
<br>
                return 0;<br>
        }<br>
<p></p>
<p>// more logic follows here....</p>
<p><br>
</p>
<p>................................................................................................................................................<br>
</p>
<br>
<p></p>
<p><br>
</p>
<p>Any hint will be very helpful!!</p>
<p><br>
</p>
<p>Best regards.<span class=""><font color="#888888"><br>
</font></span></p><span class=""><font color="#888888">
<p><br>
</p>
<p><br>
</p>
<div>
<div name="divtagdefaultwrapper">
<div><font size="2">
<div>RODRIGO PIMENTA CARVALHO<br>
Inatel Competence Center<br>
Software<br>
Ph: <a href="tel:%2B55%2035%203471%209200" value="+553534719200" target="_blank">+55 35 3471 9200</a> RAMAL 979<br>
</div>
</font></div>
</div>
</div>
</font></span></div>
</div>

<br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Aron Podrigal<div>-</div><div>&#39;1000001&#39;, &#39;1110010&#39;, &#39;1101111&#39;, &#39;1101110&#39;   &#39;1010000&#39;, &#39;1101111&#39;, &#39;1100100&#39;, &#39;1110010&#39;, &#39;1101001&#39;, &#39;1100111&#39;, &#39;1100001&#39;, &#39;1101100&#39;</div><div><br></div><div>P: &#39;2b&#39;, &#39;31&#39;, &#39;33&#39;, &#39;34&#39;, &#39;37&#39;, &#39;34&#39;, &#39;35&#39;, &#39;38&#39;, &#39;36&#39;, &#39;30&#39;, &#39;39&#39;, &#39;39&#39;<br></div><div><br></div></div></div></div></div>
</div></div>