Bug #7051 | mysql-max.exe Crash | ||
---|---|---|---|
Submitted: | 6 Dec 2004 20:03 | Modified: | 7 Dec 2004 14:05 |
Reporter: | Mathieu Tremblay | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
Version: | 4.1.7 gamma max | OS: | Windows (windows XP) |
Assigned to: | Oleksandr Byelkin | CPU Architecture: | Any |
[6 Dec 2004 20:03]
Mathieu Tremblay
[6 Dec 2004 20:25]
MySQL Verification Team
Could you please provide the table schema ? You can upload at: ftp://support.mysql.com/pub/mysql/upload thanks in advance.
[6 Dec 2004 23:13]
Mathieu Tremblay
I drop de shema "shema Bug 7051.sql" The query is SELECT SUM(CostPrice*Quantity)/(SELECT RateTPS FROM Taxes) AS TotalCost, Supplier.Name AS Supplier FROM Invoice,InvoiceLine,Supplier WHERE InvoiceLine.RefInvoice=Invoice.Number AND InvoiceLine.RefSupplier=Supplier.Number AND DATE_FORMAT(Invoice.Date,"%Y-%m-%d") BETWEEN '2004-11-19' AND '2004-11-19' GROUP BY Supplier.Name
[6 Dec 2004 23:17]
Mathieu Tremblay
There is a error in the schema sent to you in the "InvoiceLine" all constraint are double but not in my schema.. Sorry
[6 Dec 2004 23:28]
Heikki Tuuri
Hi! Please post the COMPLETE .err log of the mysqld server. Do not cut anything off. Regards, Heikki
[6 Dec 2004 23:32]
Mathieu Tremblay
Here is the correct schema SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT; SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS; SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION; SET NAMES utf8; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=NO_AUTO_VALUE_ON_ZERO */; CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mybd`; USE `mybd`; CREATE TABLE "invoice" ( "Number" int(11) unsigned NOT NULL auto_increment, "RefCustumer" varchar(9) default NULL, "Date" datetime default NULL, "SubTotal" decimal(15,8) NOT NULL default '0.00000000', "TPS" decimal(12,8) NOT NULL default '0.00000000', "TVQ" decimal(12,8) NOT NULL default '0.00000000', "Total" decimal(12,2) default '0.00', "BarreCode" varchar(12) NOT NULL default '', PRIMARY KEY ("Number"), KEY "IX_CustumerInvoice" ("RefCustumer"), KEY "Date" ("Date"), CONSTRAINT "Invoice_Custumer" FOREIGN KEY ("RefCustumer") REFERENCES "custumer" ("Number") ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `invoice` (`Number`,`RefCustumer`,`Date`,`SubTotal`,`TPS`,`TVQ`,`Total`,`BarreCode`) VALUES (1,'test','2004-11-19 00:00:00','55.00000000','3.85000000','4.41375000','63.26','1'); CREATE TABLE "invoiceline" ( "Number" int(11) unsigned NOT NULL auto_increment, "RefInvoice" int(11) unsigned NOT NULL default '0', "RefProduct" int(11) unsigned NOT NULL default '0', "RefSupplier" int(11) unsigned NOT NULL default '5', "Quantity" decimal(12,3) NOT NULL default '0.000', "CostPrice" decimal(12,3) default '0.000', PRIMARY KEY ("Number"), KEY "IX_LigneInvoice_RefInvoice" ("RefInvoice"), KEY "IX_LigneInvoice_RefProduct" ("RefProduct"), KEY "IX_LigneInvoice_Supplier" ("RefSupplier"), CONSTRAINT "InvoiceLine_Invoice" FOREIGN KEY ("RefInvoice") REFERENCES "invoice" ("Number") ON DELETE CASCADE, CONSTRAINT "InvoiceLine_Product" FOREIGN KEY ("RefProduct") REFERENCES "product" ("Number") ON UPDATE CASCADE, CONSTRAINT "InvoiceLine_Supplier" FOREIGN KEY ("RefSupplier") REFERENCES "supplier" ("Number") ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `invoiceline` (`Number`,`RefInvoice`,`RefProduct`,`RefSupplier`,`Quantity`,`CostPrice`) VALUES (1,1,1,1,'1.000','35.000'),(2,1,2,1,'1.000','20.000'); CREATE TABLE "product" ( "Number" int(11) unsigned NOT NULL default '0', "Name" varchar(30) default NULL, "RetailPrice" decimal(12,3) NOT NULL default '0.000', PRIMARY KEY ("Number"), KEY "IX_ProduitNumero" ("Number") ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `product` (`Number`,`Name`,`RetailPrice`) VALUES (1,'Plywood sheet','35.000'),(2,'2X4 6\'\'','20.000'); CREATE TABLE "supplier" ( "Number" int(10) unsigned NOT NULL default '0', "Code" int(11) NOT NULL default '0', "Name" varchar(25) NOT NULL default '', PRIMARY KEY ("Number") ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `supplier` (`Number`,`Code`,`Name`) VALUES (1,444,'ETC'); CREATE TABLE "taxes" ( "RateTPS" decimal(12,3) NOT NULL default '0.000', "RateTVQ" decimal(12,3) NOT NULL default '0.000' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `taxes` (`RateTPS`,`RateTVQ`) VALUES ('0.070','0.075'); CREATE TABLE "custumer" ( "Number" varchar(30) NOT NULL default '', PRIMARY KEY ("Number") ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `custumer` (`Number`) VALUES ('test'); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT; SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS; SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
[7 Dec 2004 0:45]
Mathieu Tremblay
041206 15:18:43InnoDB: Assertion failure in thread 2204 in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\row\row0sel.c line 2840 InnoDB: Failing assertion: 0 InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/mysql/en/Forcing_recovery.html InnoDB: about forcing recovery. InnoDB: Thread 2168 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\os\os0sync.c line 309 InnoDB: Thread 3148 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\os\os0sync.c line 487 InnoDB: Thread 3464 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\sync\sync0arr.c line 126 041206 15:19:03 [Note] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Normal shutdown 041206 15:19:04 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 3 user: 'root' C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: ready for connections. Version: '4.1.7-max' socket: '' port: 3306 Source distribution C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: ready for connections. Version: '4.1.7-max' socket: '' port: 3306 Source distribution C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: ready for connections. Version: '4.1.7-max' socket: '' port: 3306 Source distribution InnoDB: Error: MySQL is trying to perform a SELECT InnoDB: but it has not locked any tables in ::external_lock()! TRANSACTION 0 5958, not started, OS thread id 4084, thread declared inside InnoDB 500 MySQL thread id 25, query id 651 localhost 127.0.0.1 root Sending data SELECT SUM(CostPrice*Quantity)/(SELECT RateTPS FROM Taxes) AS TotalCost, Supplier.Name AS Supplier FROM Invoice,InvoiceLine,Supplier WHERE InvoiceLine.RefInvoice=Invoice.Number AND InvoiceLine.RefSupplier=Supplier.Number AND DATE_FORMAT(Invoice.Date,"%Y-%m-%d") BETWEEN '2004-11-19' AND '2004-11-19' 041206 18:27:15InnoDB: Assertion failure in thread 4084 in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\row\row0sel.c line 2840 InnoDB: Failing assertion: 0 InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/mysql/en/Forcing_recovery.html InnoDB: about forcing recovery. InnoDB: Thread 1496 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\os\os0sync.c line 309 InnoDB: Thread 2848 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\os\os0sync.c line 487 InnoDB: Thread 2980 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\sync\sync0arr.c line 126 041206 18:27:55 [Note] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Normal shutdown 041206 18:27:56 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 25 user: 'root' 041206 18:27:56 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 10 user: 'root' 041206 18:27:56 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 7 user: 'root' 041206 18:27:56 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 6 user: 'root' C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: ready for connections. Version: '4.1.7-max' socket: '' port: 3306 Source distribution InnoDB: Error: MySQL is trying to perform a SELECT InnoDB: but it has not locked any tables in ::external_lock()! TRANSACTION 0 6414, not started, OS thread id 2616, thread declared inside InnoDB 500 MySQL thread id 13, query id 132 localhost 127.0.0.1 root Sending data SELECT SUM(CostPrice*Quantity)/(SELECT RateTPS FROM Taxes) AS TotalCost, Supplier.Name AS Supplier FROM Invoice,InvoiceLine,Supplier WHERE InvoiceLine.RefInvoice=Invoice.Number AND InvoiceLine.RefSupplier=Supplier.Number AND DATE_FORMAT(Invoice.Date,"%Y-%m-%d") BETWEEN '2004-11-19' AND '2004-11-19' 041206 19:34:23InnoDB: Assertion failure in thread 2616 in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\row\row0sel.c line 2840 InnoDB: Failing assertion: 0 InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. InnoDB: If you get repeated assertion failures or crashes, even InnoDB: immediately after the mysqld startup, there may be InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/mysql/en/Forcing_recovery.html InnoDB: about forcing recovery. InnoDB: Thread 880 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\sync\sync0arr.c line 126 InnoDB: Thread 2504 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\os\os0sync.c line 487 InnoDB: Thread 924 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\read\read0read.c line 202 InnoDB: Thread 1456 stopped in file C:\cygwin\home\mysqldev\build\mysql-4.1.7-build\mysql-4.1.7\innobase\mem\mem0pool.c line 338 041206 19:39:20 [Note] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Normal shutdown 041206 19:39:21 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 14 user: 'root' 041206 19:39:21 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 13 user: 'root' 041206 19:39:21 [ERROR] C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld-max: Forcing close of thread 8 user: 'root'
[7 Dec 2004 1:13]
Mathieu Tremblay
If you don't use de group by everything work !! Like this: SELECT SUM(CostPrice*Quantity)/(SELECT RateTPS FROM Taxes) AS TotalCost FROM Invoice,InvoiceLine,Supplier WHERE InvoiceLine.RefInvoice=Invoice.Number AND InvoiceLine.RefSupplier=Supplier.Number AND DATE_FORMAT(Invoice.Date,"%Y-%m-%d") BETWEEN '2004-11-19' AND '2004-11-19'
[7 Dec 2004 8:39]
Heikki Tuuri
Hi! This is probably a duplicate of a sub-SELECT bug that Sanja has fixed in upcoming 4.1.8. I am assigning this bug report to Sanja. Thank you, Heikki
[7 Dec 2004 13:28]
MySQL Verification Team
Thank you for the bug report. I was able to repeat with server 4.1.7.. I will test it with latest BK source and let you know the current status.
[7 Dec 2004 14:05]
MySQL Verification Team
Thank you for the bug report, testing the offended query against a Windows server build from latest BK source the crash not happens anymore: C:\mysql\bin>mysql -uroot mybd Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.8-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT SUM(CostPrice*Quantity)/(SELECT RateTPS FROM Taxes) AS TotalCost, -> Supplier.Name AS Supplier -> FROM Invoice,InvoiceLine,Supplier -> WHERE InvoiceLine.RefInvoice=Invoice.Number -> AND InvoiceLine.RefSupplier=Supplier.Number -> AND DATE_FORMAT(Invoice.Date,"%Y-%m-%d") BETWEEN '2004-11-19' AND '2004-11-19' -> GROUP BY Supplier.Name; +-----------+----------+ | TotalCost | Supplier | +-----------+----------+ | 785.71429 | ETC | +-----------+----------+ 1 row in set (0.06 sec) mysql>