[asterisk-bugs] [Asterisk 0012583]: MYSQL() from dialplan appears to "eat" the first field retrieved from a MySQL Table

noreply at bugs.digium.com noreply at bugs.digium.com
Wed May 7 18:46:39 CDT 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=12583 
====================================================================== 
Reported By:                albaker
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   12583
Category:                   Addons/app_addon_sql_mysql
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     feedback
Asterisk Version:           Addons 1.4.6 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             05-05-2008 09:25 CDT
Last Modified:              05-07-2008 18:46 CDT
====================================================================== 
Summary:                    MYSQL() from dialplan appears to "eat" the first
field retrieved from a MySQL Table
Description: 
Thier appears to be a BUG  with the MySQL add-on for Asterisk .This is on
FEDORA 8 fully patched with Asterisk Addons 1-4-6 with the Asterisk
1.4.18.1

It appears that the interface “eats” the first field requested from a
table. If only One Field is Requested from the Table , that field is eaten
ENTIRELY by Asterisk. If several fields are requested, the First Field Is
Eaten and the remaining filed are returned, but place in the WRONG Variable
since the 1tst field data was eaten. In the DIALPLAN below I have tried 3
Different ways to approach this.

Extension 9999 – Get only ONE (1) field from Table

Extension 8888 – Get THREE(3) fields from the Table and Quote Them.

Extension 7777 - Get THREE(3) fields from the Table

I have show the Output from the Asterisk CLI for each, which clearly show
that SOMETHING is not
right. Maybe the Software, maybe the person using the software :) In any
event the First Field pulled from the table in not correctly returned to
the DialPlan

Here is the Table in the Database.

mysql> select * from agent;

+----------+---------+--------+------------+---------------------+

| id          | cust_id  | status |    phone     |    tlce |

+----------+---------+--------+------------+---------------------+
| 00000001 | NAMB | free | 1234567890 | 2008-04-17 02:32:02 |

| 00000002 | NAMB | free | 2234567890 | 2008-04-17 02:32:02 |

| 00000003 | NAMB | free | 3234567890 | 2008-04-17 02:32:02 |

| 00000004 | NAMB | free | 4234567890 | 2008-04-17 02:32:02 |
+----------+---------+--------+------------+---------------------+

4 rows in set (0.00 sec)


Here is the DIALPLAN

exten => 7777,1,MYSQL(Connect connid localhost ivr ivrxxx dtc)

exten => 7777,n,MYSQL(Query resultid ${connid} SELECT\ cust_id\, \
status\,\ tlce\ from\ agent\ where\ phone=\'1234567890\')

exten => 7777,n,MYSQL(Fetch fetchid ${resultid} custid mystatus mytlce)

exten => 7777,n,NoOp(CUSTID is ${custid} MYSTATUS is ${mystatus} MYTLCE is
${mytlce})

exten => 7777,n,NoOp(FETCHID is ${fetchid} RESULUT ID is .. ${resultid}
CONNID is ${connid})

exten => 7777,n,MYSQL(Clear ${resultid})

exten => 7777,n,MYSQL(Disconnect ${connid})

exten => 7777,n,HANGUP



exten => 8888,1,MYSQL(Query resultid ${connid} SELECT\ 'cust_id'\, \
'status'\,\ 'tlce'\ from\ agent\ where\ phone=\'1234567890\')

exten => 8888,n,MYSQL(Fetch fetchid ${resultid} custid mystatus mytlce)

exten => 8888,n,NoOp(CUSTID is ${custid} MYSTATUS is ${mystatus} MYTLCE is
${mytlce})

exten => 8888,n,NoOp(FETCHID is ${fetchid} RESULUT ID is .. ${resultid}
CONNID is ${connid})

exten => 8888,n,MYSQL(Clear ${resultid})

exten => 8888,n,MYSQL(Disconnect ${connid})

exten => 8888,n,HANGUP


exten => 9999,1,MYSQL(Connect connid localhost ivr ivrxxx dtc)

exten => 9999,n,MYSQL(Query resultid ${connid} SELECT\ 'cust_id'\ from\
agent\ where\ phone=\'1234567890\')

exten => 9999,n,MYSQL(Fetch fetchid ${resultid} custid)

exten => 9999,n,NoOp(CUSTID is ${custid})

exten => 9999,n,NoOp(FETCHID is ${fetchid} RESULUT ID is .. ${resultid}
CONNID is ${connid})

exten => 9999,n,MYSQL(Clear ${resultid})

exten => 9999,n,MYSQL(Disconnect ${connid})

exten => 9999,n,HANGUP




Here is the Asterisk CLI Output

dial 9999

== Console is full duplex

*CLI> -- Executing [9999 at default:1] MYSQL("OSS/dsp", "Connect connid
localhost ivr ivrxxx dtc") in new stack

-- Executing [9999 at default:2] MYSQL("OSS/dsp", "Query resultid 5 SELECT
cust_id from agent where phone='1234567890'") in new stack

-- Executing [9999 at default:3] MYSQL("OSS/dsp", "Fetch fetchid 6 custid")
in new stack

-- Executing [9999 at default:4] NoOp("OSS/dsp", "CUSTID is ") in new stack

-- Executing [9999 at default:5] NoOp("OSS/dsp", "FETCHID is 1 RESULUT ID is
.. 6 CONNID is 5") in new stack

-- Executing [9999 at default:6] MYSQL("OSS/dsp", "Clear 6") in new stack

-- Executing [9999 at default:7] MYSQL("OSS/dsp", "Disconnect 5") in new
stack

-- Executing [9999 at default:8] Hangup("OSS/dsp", "") in new stack

== Spawn extension (default, 9999, 8) exited non-zero on 'OSS/dsp'

<< Hangup on console

*CLI> dial 8888

== Console is full duplex

*CLI> -- Executing [8888 at default:1] MYSQL("OSS/dsp", "Connect connid
localhost ivr ivrxxx dtc") in new stack

-- Executing [8888 at default:2] MYSQL("OSS/dsp", "Query resultid 5 SELECT
cust_id, status, tlce from agent where phone='1234567890'") in new stack

-- Executing [8888 at default:3] MYSQL("OSS/dsp", "Fetch fetchid 6 custid
mystatus mytlce") in new stack

-- Executing [8888 at default:4] NoOp("OSS/dsp", "CUSTID is free MYSTATUS is
2008-04-17 02:32:02 MYTLCE is ") in new stack

-- Executing [8888 at default:5] NoOp("OSS/dsp", "FETCHID is 1 RESULUT ID is
.. 6 CONNID is 5") in new stack

-- Executing [8888 at default:6] MYSQL("OSS/dsp", "Clear 6") in new stack

-- Executing [8888 at default:7] MYSQL("OSS/dsp", "Disconnect 5") in new
stack

-- Executing [8888 at default:8] Hangup("OSS/dsp", "") in new stack

== Spawn extension (default, 8888, 8) exited non-zero on 'OSS/dsp'

<< Hangup on console >

OK – Have I done something really dumb or is this a BUG ?
Thank VERY MUCH for any and ALL Help 
====================================================================== 

---------------------------------------------------------------------- 
 albaker - 05-07-08 18:46  
---------------------------------------------------------------------- 
This is a cut paste from last part of log file. I cannot see how to get all
925 lines to you.
============== 
[May  7 19:36:30] ^[[1;32;40mDEBUG^[[0;37;40m[4331]:
^[[1;37;40mres_config_mysql.c^[[0;37;40m:^[[1;37;40m591^[[0;37;40m
^[[1;37;40mparse_config^[[0;37;40m: MySQL RealTime User: asterisk
[May  7 19:36:30] ^[[1;32;40mDEBUG^[[0;37;40m[4331]:
^[[1;37;40mres_config_mysql.c^[[0;37;40m:^[[1;37;40m592^[[0;37;40m
^[[1;37;40mparse_config^[[0;37;40m: MySQL RealTime Password: mawxxx
[May  7 19:36:30] ^[[31;40mERROR^[[0;37;40m[4331]:
^[[1;37;40mres_config_mysql.c^[[0;37;40m:^[[1;37;40m629^[[0;37;40m
^[[1;37;40mmysql_reconnect^[[0;37;40m: MySQL RealTime: Failed to connect
database server dtc on 127.0.0.1 (err 1044). Check debug for more info.
[May  7 19:36:30] ^[[1;32;40mDEBUG^[[0;37;40m[4331]:
^[[1;37;40mres_config_mysql.c^[[0;37;40m:^[[1;37;40m630^[[0;37;40m
^[[1;37;40mmysql_reconnect^[[0;37;40m: MySQL RealTime: Cannot Connect
(1044): Access denied for user 'asterisk'@'localhost' to database 'dtc'
[May  7 19:36:30] ^[[1;31;40mWARNING^[[0;37;40m[4331]:
^[[1;37;40mres_config_mysql.c^[[0;37;40m:^[[1;37;40m476^[[0;37;40m
^[[1;37;40mload_module^[[0;37;40m: MySQL RealTime: Couldn't establish
connection. Check debug.
[May  7 19:36:30] ^[[1;32;40mDEBUG^[[0;37;40m[4331]:
^[[1;37;40mres_config_mysql.c^[[0;37;40m:^[[1;37;40m477^[[0;37;40m
^[[1;37;40mload_module^[[0;37;40m: MySQL RealTime: Cannot Connect: Access
denied for user 'asterisk'@'localhost' to database 'dtc'
[May  7 19:36:30] ^[[1;33;40mNOTICE^[[0;37;40m[4331]:
^[[1;37;40mconfig.c^[[0;37;40m:^[[1;37;40m1259^[[0;37;40m
^[[1;37;40mast_config_engine_register^[[0;37;40m: Registered Config Engine
mysql
MySQL RealTime driver loaded.
res_config_mysql.so => (^[[33;40mMySQL RealTime Configuration
Driver^[[0;37;40m)
^[[1;37;40mAsterisk Ready.
^[[0;37;40m^[]1;Asterisk^G^[]2;Asterisk Console on 'testbox' (pid
4331)^G*CLI> dial 8888^M
^[[0;37;40m^[[1;30;40m  == ^[[0;37;40mConsole is full duplex
The 'dial' command is deprecated and will be removed in a future release.
Please use 'console dial' instead.
*CLI> ^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:1]
^[[1;36;40mMYSQL^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mConnect connid localhost ivr ivrxxx dtc^[[0;37;40m") in new
stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:2]
^[[1;36;40mMYSQL^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mQuery resultid 1 SELECT cust_id,  status, tlce from agent where
phone='1234567890'^[[0;37;40m") in new stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:3]
^[[1;36;40mMYSQL^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mFetch fetchid 2  custid mystatus mytlce^[[0;37;40m") in new
stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:4]
^[[1;36;40mNoOp^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mCUSTID is free  MYSTATUS is 2008-04-17 02:32:02  MYTLCE is
^[[0;37;40m") in new stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:5]
^[[1;36;40mNoOp^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mFETCHID is 1  RESULUT ID is .. 2 CONNID is 1^[[0;37;40m") in
new stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:6]
^[[1;36;40mMYSQL^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mClear 2^[[0;37;40m") in new stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:7]
^[[1;36;40mMYSQL^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40mDisconnect 1^[[0;37;40m") in new stack
^[[1;30;40m    -- ^[[0;37;40mExecuting [8888 at default:8]
^[[1;36;40mHangup^[[0;37;40m("^[[1;35;40mOSS/dsp^[[0;37;40m",
"^[[1;35;40m^[[0;37;40m") in new stack
^[[1;30;40m  == ^[[0;37;40mSpawn extension (default, 8888, 8) exited
non-zero on 'OSS/dsp'
^[[1;30;40m ^[[0;37;40m<< Hangup on console >>
^M
^[[0;37;40m*CLI>
================================================

Please advise on what else I can provide you that would be helpful. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
05-07-08 18:46  albaker        Note Added: 0086576                          
======================================================================




More information about the asterisk-bugs mailing list