MySQL Stored Procedure works differently with DBI

[email protected] (Erik)
Newsgroups perl.dbi.users
Message-ID <[email protected]>
I have a stored procedure which produces different results when called 
from Perl DBI compared to when it is called from the other MySQL 
clients, including the MySQL command line.

The procedure does not take any arguments and does not retrn any data. 
It simply processes data in a few tables, iterating over a WHILE loop 
until some condition is met. Basically it looks like this:


BEGIN
DECLARE rowcnt INT DEFAULT 1;
[Some queries to get things set up]
WHILE ( rowcnt > 0 ) DO
   TRUNCATE TABLE scratch;
   INSERT INTO scratch
     SELECT .... ;
   UPDATE datatable1,scratch
     SET datatable1.x = 1
     WHERE [conditons] ;
   SET rowcnt=ROW_COUNT();
   [call to procedure to log value of rowcnt]
END WHILE;
END

During the second iteration the UPDATE statment is where the behavior 
changes depening on the database client. As far as I can tell the tables 
contain identical data at this point when using DBI or another client. I 
have compared the contents of the tables at various stages and it 
appears the ROW_COUNT function is not returning the correct value.

I have compared the results of SHOW SESSION VARIABLES to ensure that the 
connections are set up the same. But I don't see how a stored procedure 
which is run completely on the server can function differently when it 
is called by different clients.

I would greatly appreciate any suggestions you may have to assist me in 
troubleshooting.


I have tested with:

Client side: perl(5.10.0-24ubuntu4), libdbi-perl( 1.609-1), 
libdbd-mysql-perl (4.011-1ubuntu1)
Server: mysql(5.0.22-4~bpo.1)

and

Client side: perl(5.8.8-7etch6), libdbi-perl(1.53-1etch1), 
libdbd-mysql-perl(3.0008-1)
Server: mysql(5.0.22-4~bpo.1)

and

Client side: perl(5.10.0-19lenny2), libdbi-perl(1.605-1), 
libdbd-mysql-perl(4.007-1+lenny1)
Server: mysql(5.0.51a-24+lenny2+spu1)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.