Hi Daniel, Hi Alex,
Thanks! That looks great. Once commited, I'll test it, too.
By the way, I've just tried with sql_query. It didn't work as well. Do you think it is fixed together with Alex's change?
Shouldn't there be a warning/error message if the returned data type is not supported?
Code: sql_query("openserdb", "SELECT count(*) FROM subscriber where username='foo'", "ra"); $avp(s:value) = $dbr(ra=>[0,0]); xlog("L_INFO", "avp(s:value)=$avp(s:value)\n"); sql_result_free("ra");
Output: avp(s:value)=
Mit freundlichen Grüßen / Best regards
Ricardo Keigo de Sales Andrade
Robert Bosch GmbH (CI/AFU) Postfach 30 02 20 70442 Stuttgart GERMANY www.bosch.com
Tel. +49(711)811-3607004 Mobil +49(172)1081152 ricardo.andrade@br.bosch.com
Sitz: Stuttgart, Registergericht: Amtsgericht Stuttgart, HRB 14000; Aufsichtsratsvorsitzender: Hermann Scholl; Geschäftsführung: Franz Fehrenbach, Siegfried Dais; Stefan Asenkerschbaumer, Bernd Bohr, Rudolf Colm, Volkmar Denner, Wolfgang Malchow, Peter Marks, Uwe Raschke, Wolf-Henning Scheider, Peter Tyroller
-----Ursprüngliche Nachricht----- Von: Daniel-Constantin Mierla [mailto:miconda@gmail.com] Gesendet: Dienstag, 5. Juli 2011 11:51 An: SIP Router - Kamailio (OpenSER) and SIP Express Router (SER) - Users Mailing List Cc: Alex Hermann; Andrade Ricardo (CI/AFU1) Betreff: Re: [SR-Users] "select count(*)" with avp_db_query always returns null
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