| Bug #27544 | Calling stored procedure causes "Out of sync" and "Lost connection" errors | ||
|---|---|---|---|
| Submitted: | 30 Mar 2007 10:01 | Modified: | 12 Jun 2007 10:26 |
| Reporter: | Bogdan Degtyariov | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / ODBC | Severity: | S2 (Serious) |
| Version: | 3.51 | OS: | Windows |
| Assigned to: | Georg Richter | CPU Architecture: | Any |
| Tags: | ODBC, stored procedure, VB | ||
[11 Jun 2007 13:02]
Georg Richter
Fix for SQLFreeStmt: clear multi result sets
Attachment: bug27544.patch (text/x-patch), 1.64 KiB.
[11 Jun 2007 13:59]
Bogdan Degtyariov
Verified on 3.51.14/3.51.15 This bug is not present in 3.51.12
[11 Jun 2007 16:12]
Jim Winstead
Some things to fix in the patch before committing: * Add space after while in addiion to driver/handle.c * Remvoe space before = in driver/handle.c * Two blank lines before/after new test * Add header before test (see below) * Use ok_sql() instead of tmysql_exec()/mystmt(). Also eliminates need for SQLRETURN rc. /** Bug #27544: Calling stored procedure causes "Out of sync" and "Lost connection" errors */
[11 Jun 2007 17:06]
Georg Richter
committed, will appear in 3.51.16
[12 Jun 2007 10:26]
MC Brown
A note has been added to the 3.51.16 changelog.

Description: When executing a select command or a stored procedure call AFTER making a stored procedure call the second execute fails. How to repeat: DROP TABLE IF EXISTS `general_config`; CREATE TABLE `general_config` ( `id` int(11) NOT NULL auto_increment, `namecol` varchar(128) default NULL, `dt` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `general_config` VALUES (1,'name 01','2007-03-29 11:19:30'),(2,'name 02','2007-03-30 01:01:01'); CREATE PROCEDURE `sp_general_config_list`() BEGIN SELECT * from general_config; END CREATE PROCEDURE `sp_general_config_cats_list`() BEGIN SELECT * from general_config; END Run the following VB code: '------------------------------------- Sub issue15561() On Error GoTo TestMySQL_Error Dim strCnn As String Dim cnn As ADODB.Connection Dim RS As ADODB.Recordset Set cnn = New ADODB.Connection Set RS = New ADODB.Recordset strCnn = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=test;User=****;Password=****;Option=131075;" cnn.CommandTimeout = 20 cnn.CursorLocation = adUseServer cnn.Open strCnn RS.Open "call sp_general_config_list();", cnn, adOpenForwardOnly, adLockReadOnly Start = Timer ' Set start time. Do While Timer < Start + 10 DoEvents ' Yield to other processes. Loop RS.Close RS.Open "call sp_general_config_cats_list();", cnn, adOpenForwardOnly, adLockReadOnly Exit Sub TestMySQL_Error: MsgBox "Error " & err.Description End Sub '-------------------------------------