| Bug #43962 | "Packets out of order" calling a SHOW TABLE STATUS | ||
|---|---|---|---|
| Submitted: | 30 Mar 2009 14:47 | Modified: | 16 May 2009 0:04 |
| Reporter: | Luca Zavarella | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: General | Severity: | S1 (Critical) |
| Version: | 5.1.30, 5.1.32, 5.1.34-bzr | OS: | Any (Vista Business) |
| Assigned to: | Sergei Glukhov | CPU Architecture: | Any |
| Tags: | packets out of order, regression, show table status | ||
[30 Mar 2009 14:56]
Valeriy Kravchuk
Thank you for the problem report. Please, try to repeat with a newer version, 5.1.32, and inform about the results. Do you have the orderheader table in current schema?
[30 Mar 2009 15:03]
Luca Zavarella
Yes, "orderheader" is in my current schema. I'll install the 5.1.32 version and try it. Thanks. Luca
[30 Mar 2009 15:17]
Valeriy Kravchuk
I can not repeat this when refers to existing table in 5.1.32, hence the request.
[30 Mar 2009 15:22]
Luca Zavarella
The orderheader schema is: CREATE TABLE `orderheader` ( `OrderId` BIGINT(20) NOT NULL AUTO_INCREMENT, `OrderDate` DATETIME NOT NULL, `DueDate` DATETIME NOT NULL, `ShipDate` DATETIME DEFAULT NULL, `CustomerId` VARCHAR(50) COLLATE utf8_general_ci NOT NULL DEFAULT '', `SalesPersonId` BIGINT(20) NOT NULL, `SubTotal` DECIMAL(19,4) NOT NULL, `TaxAmt` DECIMAL(19,4) NOT NULL, `Freight` DECIMAL(19,4) NOT NULL, `TotalDue` DECIMAL(19,4) NOT NULL, `Note` VARCHAR(255) COLLATE utf8_general_ci DEFAULT NULL, `ModifiedDate` DATETIME NOT NULL, PRIMARY KEY (`OrderId`), KEY `CustomerId` (`CustomerId`), KEY `SalesPersonId` (`SalesPersonId`), CONSTRAINT `FK_OrderHeader_Customer` FOREIGN KEY (`CustomerId`) REFERENCES `customer` (`CustomerId`), CONSTRAINT `FK_OrderHeader_UserAccount` FOREIGN KEY (`SalesPersonId`) REFERENCES `useraccount` (`UserAccountId`) )ENGINE=InnoDB AUTO_INCREMENT=1 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; Do you need "customer" and "useraccount" schemas too?
[30 Mar 2009 15:31]
Valeriy Kravchuk
I need to know if the problem is repeatable on 5.1.32, for the beginning. 5.1.30 can not be fixed even if there is a bug in it...
[30 Mar 2009 19:04]
Luca Zavarella
I got the same error on 5.1.32 version
[31 Mar 2009 6:02]
Sveta Smirnova
Thank you for the report. I assume you get this error in you application. Have you read at http://dev.mysql.com/doc/refman/5.1/en/c-api-multiple-queries.html about "Multiple-result processing also is required if you execute CALL statements for stored procedures..."? If so and if you use multiple-result processing please provide repeatable test case (example program), so we can repeat the problem.
[31 Mar 2009 6:06]
Valeriy Kravchuk
OK. From mysql command line client, after calling this procedure several times (sometimes two, sometimes 4 or 5 - that's why I was not able to repeat with only two calls yesterday) I get (with 5.1.32 on XP): mysql> call order_get_table_info(); ERROR 2013 (HY000): Lost connection to MySQL server during query and Aborted_clients status variable is increased.
[31 Mar 2009 6:10]
Valeriy Kravchuk
Note that client from 5.0.79 was used in both cases, and the problem is NOT repeatable when the same procedure is created and executed on 5.0.79.
[31 Mar 2009 6:12]
Valeriy Kravchuk
Same results with mysql client from 5.1.32. So, the problem is in server.
[31 Mar 2009 6:18]
Valeriy Kravchuk
This is what I've got with recent 5.1.34-debug from bzr:
openxs@suse:/home2/openxs/dbs/5.1> bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.34-debug Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create table orderheader(c1 int) engine=InnoDB;
Query OK, 0 rows affected (0.05 sec)
mysql> delimiter //
mysql> CREATE DEFINER = 'root'@'localhost' PROCEDURE `order_get_table_info`()
-> NOT DETERMINISTIC
-> CONTAINS SQL
-> SQL SECURITY DEFINER
-> COMMENT ''
-> BEGIN
-> SHOW TABLE STATUS LIKE 'orderheader';
-> END;
-> //
Query OK, 0 rows affected (0.06 sec)
mysql> call order_get_table_info()//
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
| orderheader | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 9437184 | NULL | 2009-07-06 20:09:41 | NULL | NULL | latin1_swedish_ci | NULL | | |
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
1 row in set (0.01 sec)
mysql> call order_get_table_info()//
Note: net_clear() skipped 11 bytes from file: socket (3)
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
| orderheader | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 9437184 | NULL | 2009-07-06 20:09:41 | NULL | NULL | latin1_swedish_ci | NULL | | |
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
1 row in set (0.01 sec)
mysql> call order_get_table_info()//
Note: net_clear() skipped 11 bytes from file: socket (3)
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
| orderheader | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 9437184 | NULL | 2009-07-06 20:09:41 | NULL | NULL | latin1_swedish_ci | NULL | | |
+-------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+
1 row in set (0.01 sec)
mysql> call order_get_table_info()//
Error: Packets out of order (Found: 23, expected 1)
mysql: net.c:910: my_real_read: Assertion `0' failed.
Aborted
[20 Apr 2009 7:47]
Luca Zavarella
Any news on this bug? Thank you.
[28 Apr 2009 10:50]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/72896 2873 Sergey Glukhov 2009-04-28 Bug#43962 "Packets out of order" calling a SHOW TABLE STATUS Error happens because sp_head::MULTI_RESULTS is not set for SP which has 'show table status' command. The fix is to add a SQLCOM_SHOW_TABLE_STATUS case into sp_get_flags_for_command() func. @ mysql-test/r/sp.result test result @ mysql-test/t/sp.test test case @ sql/sp_head.cc Error happens because sp_head::MULTI_RESULTS is not set for SP which has 'show table status' command. The fix is to add a SQLCOM_SHOW_TABLE_STATUS case into sp_get_flags_for_command() func.
[29 Apr 2009 9:52]
Alexander Nozdrin
I think, the patch is Ok.
[30 Apr 2009 12:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/73122 2881 Sergey Glukhov 2009-04-30 Bug#43962 "Packets out of order" calling a SHOW TABLE STATUS Error happens because sp_head::MULTI_RESULTS is not set for SP which has 'show table status' command. The fix is to add a SQLCOM_SHOW_TABLE_STATUS case into sp_get_flags_for_command() func. @ mysql-test/r/sp.result test result @ mysql-test/t/sp.test test case @ sql/sp_head.cc Error happens because sp_head::MULTI_RESULTS is not set for SP which has 'show table status' command. The fix is to add a SQLCOM_SHOW_TABLE_STATUS case into sp_get_flags_for_command() func.
[5 May 2009 19:38]
Bugs System
Pushed into 5.1.35 (revid:davi.arnaut@sun.com-20090505190206-9xmh7dlc6kom8exp) (version source revid:davi.arnaut@sun.com-20090505190206-9xmh7dlc6kom8exp) (merge vers: 5.1.35) (pib:6)
[6 May 2009 14:06]
Bugs System
Pushed into 6.0.12-alpha (revid:svoj@sun.com-20090506125450-yokcmvqf2g7jhujq) (version source revid:sergey.glukhov@sun.com-20090430101432-4gn94a5lgn3gte45) (merge vers: 6.0.11-alpha) (pib:6)
[16 May 2009 0:04]
Paul DuBois
Noted in 5.1.35, 6.0.12 changelogs. Invoking SHOW TABLE STATUS from within a stored procedure could cause a "Packets out of order" error.
[15 Jun 2009 8:24]
Bugs System
Pushed into 5.1.35-ndb-6.3.26 (revid:jonas@mysql.com-20090615074202-0r5r2jmi83tww6sf) (version source revid:jonas@mysql.com-20090615070837-9pccutgc7repvb4d) (merge vers: 5.1.35-ndb-6.3.26) (pib:6)
[15 Jun 2009 9:04]
Bugs System
Pushed into 5.1.35-ndb-7.0.7 (revid:jonas@mysql.com-20090615074335-9hcltksp5cu5fucn) (version source revid:jonas@mysql.com-20090615072714-rmfkvrbbipd9r32c) (merge vers: 5.1.35-ndb-7.0.7) (pib:6)
[15 Jun 2009 9:44]
Bugs System
Pushed into 5.1.35-ndb-6.2.19 (revid:jonas@mysql.com-20090615061520-sq7ds4yw299ggugm) (version source revid:jonas@mysql.com-20090615054654-ebgpz7elwu1xj36j) (merge vers: 5.1.35-ndb-6.2.19) (pib:6)

Description: MySql raise the "Packets out of order" error when I call more times a Stored Procedure with "SHOW TABLE STATUS LIKE '...'" How to repeat: CREATE DEFINER = 'root'@'localhost' PROCEDURE `order_get_table_info`() NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN SHOW TABLE STATUS LIKE 'orderheader'; END; then I call the stored procedure 2 times and I get the error