Bug #29449 | Updates on InnoDB table with CHAR primary key column are not processed | ||
---|---|---|---|
Submitted: | 29 Jun 2007 16:47 | Modified: | 29 Jun 2007 17:08 |
Reporter: | Chris Jacobson | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server | Severity: | S2 (Serious) |
Version: | 5.0.42-enterprise-gpl-log | OS: | Solaris (Solaris 10 / AMD64) |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | char, innodb, primary key, UPDATE |
[29 Jun 2007 16:47]
Chris Jacobson
[29 Jun 2007 17:02]
Heikki Tuuri
I can repeat with MySQL-5.0.44/InnoDB-5.0.4x: heikki@ws35:~/mysql-5.0/client$ ./mysql -uroot test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.44-debug-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE `test_table` ( -> `pkey` char(16) NOT NULL, -> `value` varchar(255) NOT NULL, -> PRIMARY KEY (`pkey`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.06 sec) mysql> INSERT INTO test_table (pkey, value) VALUES ('KEY_1', 'VAL_1'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test_table (pkey, value) VALUES ('KEY_2', 'VAL_2'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test_table (pkey, value) VALUES ('KEY_3', 'VAL_3'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM test_table WHERE pkey = 'KEY_1'; +-------+-------+ | pkey | value | +-------+-------+ | KEY_1 | VAL_1 | +-------+-------+ 1 row in set (0.02 sec) mysql> UPDATE test_table SET value = 'NEW_VALUE' WHERE pkey = 'KEY_1'; Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0
[29 Jun 2007 17:04]
Heikki Tuuri
There was an earlier bug report where the problem was that MySQL in a WHERE clause padded UTF-8 CHAR columns with 0x00, and not with 0x20 like it should. I guess this is a duplicate of that ultra-critical bug.
[29 Jun 2007 17:06]
MySQL Verification Team
With current source server and Linux 32-bit I can't repeat. I will test with 64-bit server. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.0.46-debug Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE `test_table` ( -> `pkey` char(16) NOT NULL, -> `value` varchar(255) NOT NULL, -> PRIMARY KEY (`pkey`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.09 sec) mysql> INSERT INTO test_table (pkey, value) VALUES ('KEY_1', 'VAL_1'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test_table (pkey, value) VALUES ('KEY_2', 'VAL_2'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test_table (pkey, value) VALUES ('KEY_3', 'VAL_3'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM test_table WHERE pkey = 'KEY_1'; +-------+-------+ | pkey | value | +-------+-------+ | KEY_1 | VAL_1 | +-------+-------+ 1 row in set (0.01 sec) mysql> UPDATE test_table SET value = 'NEW_VALUE' WHERE pkey = 'KEY_1'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM test_table WHERE pkey = 'KEY_1'; +-------+-----------+ | pkey | value | +-------+-----------+ | KEY_1 | NEW_VALUE | +-------+-----------+ 1 row in set (0.00 sec) mysql>
[29 Jun 2007 17:08]
Heikki Tuuri
This is a duplicate of http://bugs.mysql.com/bug.php?id=28878