Hi to both Daniels and thank you for your responses. I understand what you are both saying. Currently the field I am extracting the value from in the database is set to type; bigint(20) unsigned If I change to varchar for example it returns fine, my only issue is that the overflow only occurs on 10 digit numbers starting with 2 or 3. If I add a value for example 1785702370 or 7785702370 they are returned without issue without changing the DB value type. Thanks Jon
To: sr-users@lists.sip-router.org From: miconda@gmail.com Date: Tue, 5 Jan 2016 19:49:02 +0100 Subject: Re: [SR-Users] Negative value returned when using sql_pvquery
On 05/01/16 17:51, Daniel Tryba wrote:
On Tue, Jan 05, 2016 at 03:38:58PM +0000, Jonathan Hunter wrote:
sql_pvquery("cd","select DestinationMsisdn,SourceMsisdn from MsisdnPoolAllocations where PoolMsisdn='$rU'","$var(MOdest),$var(NewSourceMSISDN)"); However this returns a value of -509264926 for $var(MOdest) which should just be the 3785702370 number. What can cause kamailio to interpret this as a negative value? Has anyone seen this before?
What you are seeing is an integer overflow, in this case you are trying to store a number greater than 2^31 in a signed 32bit int. -509264926 (3785702370-2^32) is the correct answer if the var is a signed 32bit int.
I treat phonenumbers as strings (both in the database and kamailio) since I store them as E.164 with a leading + (which results in a bit more diskspace)
If you don't need the number as int in kamailio, try casting it to a string in the query.
To complete, as just looked at the source -- if the bigint number returned does not fit in 32bit size, then it is stored as string. If it fits in 32bit, then is stored also as int. I see the code was added in 2011 by Alex Hermann.
Maybe the behavior is not that coherent, hard to predict if not knowing what is in the db, and should be changed to be always stored as string, then use {s.int} in config if wanted as int.
Cheers, Daniel
-- Daniel-Constantin Mierla http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Book: SIP Routing With Kamailio - http://www.asipto.com http://miconda.eu
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users