[SR-Users] "select count(*)" with avp_db_query always returns null

Daniel-Constantin Mierla miconda at gmail.com
Tue Jul 5 12:13:46 CEST 2011



On 7/5/11 12:04 PM, Alex Balashov wrote:
> Does sqlops handle bigint these days? It's the same srdb1 API for Pg as avp_db_query(), right? So perhaps that's the wrong question.

sqlops handle bigint but looking in the code it converts it to string. 
Then it can be converted to int via transformation {s.int}. Hmm, wonder 
which is the better approach...

The difference is that avp_query() stores directly the result values in 
avps, while sqlops uses an internal structure which is accessed by 
$dbr(...) variables. For now it tries to convert to int/string, but it 
is more flexible overall.

Cheers,
Daniel

>
> --
> Alex Balashov - Principal
> Evariste Systems LLC
> 260 Peachtree Street NW
> Suite 2200
> Atlanta, GA 30303
> Tel: +1-678-954-0670
> Fax: +1-404-961-1892
> Web: http://www.evaristesys.com/
>
> On Jul 5, 2011, at 5:51 AM, Daniel-Constantin Mierla<miconda at gmail.com>  wrote:
>
>>
>> On 7/5/11 11:39 AM, Alex Hermann wrote:
>>> On Wednesday 29 June 2011, Andrade Ricardo (CI/AFU1) wrote:
>>>> Perhaps this fits better into a bug report, but I'd like to know if
>>>> somebody out there experienced a similar issue. I am executing a "select
>>>> count" query using the avp_db_query function, but it is not storing the
>>>> results in any avp. Other queries are working fine. I use db_mysql
>>>> connected with a mysql 5.1 server.
>>>>
>>>> I have tested this with kamailio-3.1.0 and kamailio-3.1.3, both didn't
>>>> work. In an old box (version 1.3.x), the same query was returning the
>>>> correct value.
>>>>
>>>> ---------------------------------------------------
>>>> Here is the case which is not working:
>>>>
>>>> Code:
>>>> avp_delete("$avp(s:count)");
>>>> $var(ret) = avp_db_query("SELECT count(*) FROM subscriber where
>>>> username='foo'", "$avp(s:count)");
>>>> xlog("L_INFO", "var(ret)=$var(ret) avp(s:count)=$avp(s:count)");
>>>>
>>>>
>>>> Output:
>>>> INFO:<script>: var(ret)=1 avp(s:count)=<null>
>>>>
>>>> (notice the return code 1, which means that the query was successfull and
>>>> there should be some output value stored in the avp, but it is<null>)
>>> The return type of the COUNT() function is a BIGINT, which is ignored in
>>> kamailio. The attached patch converts the lower 32 bits of the result to an
>>> int usable by kamailio. I'll push this eventually.
>> Thanks for quick reaction and patch. Go ahead and commit it.
>>
>> Cheers,
>> Daniel
>>
>> -- 
>> Daniel-Constantin Mierla -- http://www.asipto.com
>> http://linkedin.com/in/miconda -- http://twitter.com/miconda
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla -- http://www.asipto.com
http://linkedin.com/in/miconda -- http://twitter.com/miconda




More information about the sr-users mailing list