On Tue, Jul 21, 2015 at 6:35 AM, mayamatakeshi <mayamatakeshi(a)gmail.com>
wrote:
Hello,
I am planning to enable acc cdr in my kamailio 4.1 server.
I am testing in my lab and it is working fine.
However, when I check the table definition I see this:
mysql> describe acc_cdrs;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| start_time | varchar(32) | NO | MUL | | |
| end_time | varchar(32) | NO | | | |
| duration | varchar(32) | NO | | | |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
The *_time and duration columns are defined as varchar.
Because of this, i need to perform a cast when doing queries:
select * from acc_cdrs where cast(start_time as unsigned) >= 1437120622;
which would cause extra processing in the db server.
So I experimented changing these columns to "int unsigned" and to "float
unsigned" and it worked for both without problems (records properly added
to acc_cdrs and no errors in kamailio.log):
alter table acc_cdrs modify start_time int unsigned;
alter table acc_cdrs modify end_time int unsigned;
alter table acc_cdrs modify duration int unsigned;
alter table acc_cdrs modify start_time float unsigned;
alter table acc_cdrs modify end_time float unsigned;
alter table acc_cdrs modify duration float unsigned;
Actually, checking again, they should not be a "float unsigned" but
"double
unsigned":
alter table acc_cdrs modify start_time double unsigned;
alter table acc_cdrs modify end_time double unsigned;
alter table acc_cdrs modify duration double unsigned;
So I am thinking in doing this in my production server but I would like to
know if there is any potential risk of doing this (as I am not sure why it
was decided for these fields to be varchar instead of a numeric type).
Regards,
Takeshi