MySQL Forums
Forum List  »  General

Bug in 5.0.36 - Re: INSERT ... ON DUPLICATE KEY UPDATE
Posted by: Samip Mehra
Date: October 20, 2008 08:39PM

FYI ...

I have received notification from MySQL that this is a bug in 5.0.36 that has been fixed in 5.0.38.

The test that was run to detect this bug is below:

# Start of Test Run
mysql> DROP TABLE IF EXISTS mgr_mthly_prefs;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>
mysql> CREATE TABLE `mgr_mthly_prefs` (
-> `incntv_mth` int(6) NOT NULL,
-> `mgr_empl_key` int(11) NOT NULL,
-> `mgr_racf_id` varchar(8) NOT NULL default 'UNKNOWN',
-> `dept_mgr_empl_key` int(11) NOT NULL,
-> `dept_mgr_racf_id` varchar(8) NOT NULL default 'UNKNOWN',
-> `schdle_id` int(3) NOT NULL default '0',
-> `call_tm` varchar(6) NOT NULL default 'XXXXXX',
-> `div_cde` char(3) NOT NULL default 'XXX',
-> `prim_call_func_cde` varchar(5) NOT NULL default 'XXXXX',
-> `incntv_plan_id` int(11) NOT NULL default '0',
-> `call_days_adj` int(3) NOT NULL default '0',
-> PRIMARY KEY (`incntv_mth`,`mgr_empl_key`),
-> KEY `dept_mgr_key` (`incntv_mth`,`dept_mgr_empl_key`),
-> KEY `dept_mgr_racf` (`incntv_mth`,`mgr_racf_id`)
-> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,123456,'name0',222222,'name1');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
1 row in set (0.00 sec)

mysql>
mysql> INSERT into mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,123456,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
1 row in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,1234567,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 1234567 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> TRUNCATE mgr_mthly_prefs;
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,123456,'name0',222222,'name1');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,1234567,'name0',222222,'name1');
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 1234567 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,123456,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 1234567 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,1234567,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 1234567 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,12345678,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 123456 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 1234567 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 12345678 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
3 rows in set (0.00 sec)

mysql>
mysql> TRUNCATE mgr_mthly_prefs;
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,1234567,'name0',222222,'name1');
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,123456,'name0',222222,'name1');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 1234567 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,123456,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 1234567 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,1234567,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 1234567 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 123456 | name0 | 222222 | name1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
2 rows in set (0.00 sec)

mysql>
mysql> INSERT INTO mgr_mthly_prefs
->
(incntv_mth,mgr_empl_key,mgr_racf_id,dept_mgr_empl_key,dept_mgr_racf_id)
-> VALUES (200809,12345678,'diff0',234567,'diff1')
-> ON DUPLICATE KEY UPDATE
-> mgr_racf_id=VALUES(mgr_racf_id),
-> dept_mgr_empl_key=VALUES(dept_mgr_empl_key),
-> dept_mgr_racf_id=VALUES(dept_mgr_racf_id);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> SELECT * FROM mgr_mthly_prefs;
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| incntv_mth | mgr_empl_key | mgr_racf_id | dept_mgr_empl_key |
dept_mgr_racf_id | schdle_id | call_tm | div_cde | prim_call_func_cde |
incntv_plan_id | call_days_adj |
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
| 200809 | 1234567 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 123456 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
| 200809 | 12345678 | diff0 | 234567 | diff1 |
0 | XXXXXX | XXX | XXXXX | 0 | 0
|
+------------+--------------+-------------+-------------------+------------------+-----------+---------+---------+--------------------+----------------+---------------+
3 rows in set (0.00 sec)

# End of Test Run

Options: ReplyQuote


Subject
Written By
Posted
Bug in 5.0.36 - Re: INSERT ... ON DUPLICATE KEY UPDATE
October 20, 2008 08:39PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.