Package: mysql-server-5.0
Version: 5.0.32-7etch12

Hi, 

I need to report a bug for the below package (MySQL-Server 5.0.32-7etch12).

debian40:~# dpkg --list mysql-server-5.0
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                         Version                      Description
+++-============================-============================-========================================================================
ii  mysql-server-5.0             5.0.32-7etch12               mysql database 
server binaries

debian40:~# dpkg --status mysql-server-5.0
Package: mysql-server-5.0
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 68928
Maintainer: Christian Hammers <[email protected]>
Architecture: amd64
Source: mysql-dfsg-5.0
Version: 5.0.32-7etch12
Replaces: mysql-server (<< 5.0.32-7etch12), mysql-server-4.1
Provides: mysql-server, virtual-mysql-server, mysql-server-4.1
Depends: mysql-client-5.0 (>= 5.0.32-7etch12), libdbi-perl, perl (>= 5.6), 
libc6 (>= 2.3.5-1), libgcc1 (>= 1:4.1.1-12), libmysqlclient15off (>= 5.0.27-1), 
libncurses5 (>= 5.4-5), libreadline5 (>= 5.2), libstdc++6 (>= 4.1.1-12), 
libwrap0, zlib1g (>= 1:1.2.1), debconf (>= 0.5) | debconf-2.0, psmisc, passwd, 
lsb-base (>= 3.0-10)
Pre-Depends: mysql-common (>= 5.0.32-7etch12), adduser (>= 3.40)
Recommends: mailx
Suggests: tinyca
Conflicts: mysql-server (<< 5.0.32-7etch12), mysql-server-4.1 (<< 5.0.26-3)
Conffiles:
 /etc/init.d/mysql-ndb-mgm d8e59f75aa722b2727d1e168cdc54a46
 /etc/init.d/mysql-ndb cc36ed07930ea06a216b9c00bbeb56e3
 /etc/init.d/mysql 4f0c573e38f141149bd19e4a929305b9
 /etc/logrotate.d/mysql-server 3ca2603d73eeebf3e7978f0b6e572699
 /etc/mysql/debian-start 49411590e584499b823314e9d1915da8
 /etc/logcheck/ignore.d.workstation/mysql-server-5_0 
20ccf274886d8f2897a10d9288579410
 /etc/logcheck/ignore.d.server/mysql-server-5_0 20ccf274886d8f2897a10d9288579410
 /etc/logcheck/ignore.d.paranoid/mysql-server-5_0 
e8dbe35695437354553e61fd65b702ba
Description: mysql database server binaries
 MySQL is a fast, stable and true multi-user, multi-threaded SQL database
 server. SQL (Structured Query Language) is the most popular database query
 language in the world. The main goals of MySQL are speed, robustness and
 ease of use.
 .
 This package includes the server and ndb-cluster binaries.


=====================================

We are currently maintain an ERP which make use of InnoDB MySQL heavily.
The ERP is writen in PHP.
I discovered a serious bug in MySQL 5.0.32-7 on Debian Etch 4.0.
The system was up-to-date, includding security.
System uses only official, stable patches.
I discovered this bug when archiving some data on ERP which has a TRANSACTIONAL 
sequence like:
INSERT INTO (SELECT ... FROM)
This bug occur always when doing a particular query.

I tested it on other servers (MySQL 5.0.67, MySQL 5.0.90) and does not occur.
I have been forced to compile the MySQL community server 5.0.67 from source 
with --prefix=/opt/mysql to be able 
to run the ERP in a stable manner.

CONCLUSION: This bug does not occur on other MySQL versions, but only in MySQL 
5.0.32-7.
After using MySQL 5.0.67 community on the same OS and PHP version the bug 
didn't occur.


Bug Severity: Critical
Bug occurence: Always
Bug Description: MySQL Crash, when doing a query ...

Hints: If you run the query without INSERT INTO (), as SELECT ..., it does not 
crash the server.

The query that does crash the server:

INSERT INTO `erp_archive__2009_11_sum_stocklog_val` ( 
SELECT 
        '', 
        '2009-11-30', 
        `item_code` AS y_code, 
        `item_attrib` AS y_attrib, 
        @y_prev_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='in'))),0) AS DECIMAL(20,4)) AS y_prev_qty, 
        @y_int_i_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
((`doc_type`='zx') AND (`partner_type`='z') AND (`item_qty`>0)))),0) AS 
DECIMAL(20,4)) AS y_int_i_qty, 
        @y_int_o_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
((`doc_type`='zx') AND (`partner_type`='z') AND (`item_qty`<0)))),0) AS 
DECIMAL(20,4)) AS y_int_o_qty, 
        @y_buy_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='sp'))),0) AS DECIMAL(20,4)) AS y_buy_qty, 
        @y_rbuy_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='sr'))),0) AS DECIMAL(20,4)) AS y_rbuy_qty, 
        @y_sell_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='cs'))),0) AS DECIMAL(20,4)) AS y_sell_qty, 
        @y_rsell_qty:= CAST(IFNULL((SELECT SUM(`item_qty`) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='cr'))),0) AS DECIMAL(20,4)) AS y_rsell_qty, 
        @y_final_qty:= CAST((@y_prev_qty + (@y_int_i_qty + @y_int_o_qty) + 
(@y_buy_qty + @y_rbuy_qty) + (@y_sell_qty + @y_rsell_qty)) AS DECIMAL(20,4)) AS 
y_final_qty, 
        @y_prev_mprice:= CAST(IFNULL((SELECT (SUM(`item_qty` * `item_price`) / 
SUM(`item_qty`)) FROM `erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') 
AND (`date_time` LIKE '2009-11-%')) AND ((`item_code`=y_code) AND 
(`item_attrib`=y_attrib)) AND (`doc_type`='in'))),0) AS DECIMAL(20,4)) AS 
y_prev_mprice, 
        @y_int_i_mprice:= CAST(IFNULL((SELECT (SUM(`item_qty` * `item_price`) / 
SUM(`item_qty`)) FROM `erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') 
AND (`date_time` LIKE '2009-11-%')) AND ((`item_code`=y_code) AND 
(`item_attrib`=y_attrib)) AND ((`doc_type`='zx') AND (`partner_type`='z') AND 
(`item_qty`>0)))),0) AS DECIMAL(20,4)) AS y_int_i_mprice,
        @y_buy_mprice:= CAST(IFNULL((SELECT (SUM(`item_qty` * `item_price`) / 
SUM(`item_qty`)) FROM `erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') 
AND (`date_time` LIKE '2009-11-%')) AND ((`item_code`=y_code) AND 
(`item_attrib`=y_attrib)) AND (`doc_type`='sp'))),0) AS DECIMAL(20,4)) AS 
y_buy_mprice, 
        @y_rbuy_mprice := CAST(IFNULL((SELECT (SUM(`item_qty` * `item_price`) / 
SUM(`item_qty`)) FROM `erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') 
AND (`date_time` LIKE '2009-11-%')) AND ((`item_code`=y_code) AND 
(`item_attrib`=y_attrib)) AND (`doc_type`='sr'))),0) AS DECIMAL(20,4)) AS 
y_rbuy_mprice, 
        @y_sell_mprice:= CAST(IFNULL((SELECT (SUM(`item_qty` * (`item_price` * 
((100 - `item_discount`) / 100))) / SUM(`item_qty`)) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='cs'))),0) AS DECIMAL(20,4)) AS y_sell_mprice, 
        @y_rsell_mprice:= CAST(IFNULL((SELECT (SUM(`item_qty` * (`item_price` * 
((100 - `item_discount`) / 100))) / SUM(`item_qty`)) FROM 
`erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') AND (`date_time` LIKE 
'2009-11-%')) AND ((`item_code`=y_code) AND (`item_attrib`=y_attrib)) AND 
(`doc_type`='cr'))),0) AS DECIMAL(20,4)) AS y_rsell_mprice, 
        @y_cmp_mprice:= CAST(IFNULL((SELECT (SUM(`item_qty` * `item_price`) / 
SUM(`item_qty`)) FROM `erp_archive__2009_11_stocklog` WHERE (((`delivered`='1') 
AND (`date_time` LIKE '2009-11-%')) AND ((`item_code`=y_code) AND 
(`item_attrib`=y_attrib)) AND ((`doc_type`='in') OR ((`doc_type`='zx') AND 
(`partner_type`='z') AND (`item_qty`>0)) OR (`doc_type`='sp') OR 
(`doc_type`='cr')))),0) AS DECIMAL(20,4)) AS y_cmp_mprice 
FROM `erp_archive__2009_11_stocklog` WHERE ((`delivered`='1') AND (`date_time` 
LIKE '2009-11-%')) 
GROUP BY `item_code`, `item_attrib` 
ORDER BY `item_code`, `item_attrib` 
) 


=================== The schema of the two tables:

CREATE TABLE `erp_archive__2009_11_stocklog` (
 `id` varchar(36) NOT NULL,
 `date_time` varchar(20) NOT NULL COMMENT 'YYYY-MM-DD HH:II:SS',
 `doc_type` char(2) NOT NULL COMMENT 'document type',
 `doc_id` varchar(10) NOT NULL COMMENT 'id document',
 `imp_exp` enum('','i','e') NOT NULL COMMENT '''''=internal ; i=import ; 
e=export',
 `partner_type` enum('','c','p','s','z','x') NOT NULL COMMENT '''''=internal ; 
c=corporate customer ; p=private customer ; s=supplier ; z = int. adj ; x = int 
transf.',
 `partner_id` varchar(10) NOT NULL COMMENT 'Partner ID',
 `warehouse` tinyint(2) unsigned NOT NULL COMMENT 'warehouse ID',
 `item_code` varchar(20) NOT NULL COMMENT 'item unique code',
 `item_attrib` varchar(50) NOT NULL COMMENT 'max. 50 chars',
 `item_qty` decimal(11,4) NOT NULL default '0.0000' COMMENT 'item quantity 
+in/-out',
 `item_price` decimal(11,4) unsigned NOT NULL default '0.0000' COMMENT 'item 
stock in/out price except. transport',
 `item_transport` decimal(11,4) unsigned NOT NULL default '0.0000' COMMENT 
'item transport price on in/out',
 `item_tax` decimal(4,2) unsigned NOT NULL default '0.00' COMMENT 'item tax % 
(percent)',
 `item_discount` decimal(4,2) unsigned NOT NULL default '0.00' COMMENT 'item 
discount %',
 `delivered` tinyint(1) unsigned NOT NULL default '0' COMMENT 'IN: 0=on ordered 
; 1=in warehouse // OUT: 0=reserved ; 1=delivered',
 PRIMARY KEY  (`id`),
 KEY `date` (`date_time`(10)),
 KEY `doc_type` (`doc_type`),
 KEY `item_group` (`warehouse`,`item_code`,`item_attrib`),
 KEY `partner` (`partner_type`,`partner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ERP - Inventory - Stocks Log';


CREATE TABLE `erp_archive__2009_11_sum_stocklog_val` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `date` varchar(10) NOT NULL COMMENT 'YYYY-MM-DD',
 `item_code` varchar(20) NOT NULL COMMENT 'Item Unique Code',
 `item_attrib` varchar(50) NOT NULL COMMENT 'Item Attribute',
 `q_prev` decimal(20,4) NOT NULL COMMENT 'Total Qty - Prev',
 `q_in_i` decimal(20,4) NOT NULL COMMENT 'Total Qty Internal - IN',
 `q_in_o` decimal(20,4) NOT NULL COMMENT 'Total Qty Internal - OUT',
 `q_buy` decimal(20,4) NOT NULL COMMENT 'Total Qty - Buy',
 `q_rbuy` decimal(20,4) NOT NULL COMMENT 'Total Qty - RBuy',
 `q_sell` decimal(20,4) NOT NULL COMMENT 'Total Qty - Sell',
 `q_rsell` decimal(20,4) NOT NULL COMMENT 'Total Qty - RSell',
 `q_fin` decimal(20,4) NOT NULL COMMENT 'Total Qty - FINAL',
 `mp_prev` decimal(20,4) NOT NULL COMMENT 'Medium Price - PREV',
 `mp_int_i` decimal(20,4) NOT NULL COMMENT 'Medium Price Internals IN (Z Type)',
 `mp_buy` decimal(20,4) NOT NULL COMMENT 'Medium Price - BUY',
 `mp_rbuy` decimal(20,4) NOT NULL COMMENT 'Medium Price - RBUY',
 `mp_sell` decimal(20,4) NOT NULL COMMENT 'Medium Price - SELL',
 `mp_rsell` decimal(20,4) NOT NULL COMMENT 'Medium Price - RSELL',
 `mp_cmp` decimal(20,4) NOT NULL COMMENT 'Medium Price - CMP',
 PRIMARY KEY  (`id`),
 KEY `date` (`date`),
 KEY `item_group` (`item_code`,`item_attrib`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ERP - TEMPLATE - v.1.5 - 
Inventory Log Value Sum / Overall' AUTO_INCREMENT=1 ;


===================

Please anounce me when this bug is fixed, and I will move again on the MySQL 
server from Debian Distro (prefered agains keeping my separate MySQL server 
compiled from source,
to be able to keep the ERP running.

Regards,
Radu



--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to