Skip Menu |

This queue is for tickets about the DBD-mysql CPAN distribution.

Report information
The Basics
Id: 83351
Status: rejected
Priority: 0/
Queue: DBD-mysql

Owner: Nobody in particular
Requestors: sveta.smirnova [...]
Cc: cpan [...]
pali [...]

Bug Information
Severity: Normal
Broken in: 4.020
Fixed in: (no value)

Subject: select* methods output misleading error messages on InnoDB lock timeout
Download (untitled) / with headers
text/plain 1.1k
This bug was originally reported by Frederic Briere at Description: The various select* methods (such as selectrow_hashref or selectcol_arrayref) output misleading error messages when a timeout occurs while waiting for an InnoDB lock. (For example, selectrow_hashref outputs "fetch() without execute()", and selectcol_arrayref outputs "Statement has no result columns to bind".) From the look of it, the methods appear to not notice that execute() has failed, and proceed to call fetch() nonetheless. The resulting error message thus reflects the failure from wrongly calling fetch(), instead of the original timeout error (which is found to be accurately reported by the MySQL server with DBI_TRACE). How to repeat: Create an InnoDB table: Show quoted text
mysql> use test mysql> create table t(i int primary key) engine = innodb;
Acquire a row lock on this table: Show quoted text
mysql> begin; mysql> insert into t values (1);
From a console, run a query via select* that tries to acquire the same lock: $ perl -MDBI -e '$dbh = DBI->connect("DBI:mysql:database=test", "...", "...", {RaiseError=>1}); $dbh->begin_work; $dbh->selectrow_hashref("SELECT i FROM t FOR UPDATE")'
FYI, I had already filed #75353 over this; you'll probably want to merge those two tickets.
Rejecting because a duplicate of 75353.

This service is sponsored and maintained by Best Practical Solutions and runs on infrastructure.

Please report any issues with to