Subject: | select* methods output misleading error messages on InnoDB lock timeout |
(Also filed on mysql.com as bug #64475.)
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).