List:Commits« Previous MessageNext Message »
From:Mattias Jonsson Date:January 24 2011 12:41pm
Subject:bzr commit into mysql-5.1 branch (mattias.jonsson:3565) Bug#59297
View as plain text  
#At file:///C:/mysql-bzr/b59297-51/ based on revid:anders.song@stripped

 3565 Mattias Jonsson	2011-01-24
      Bug#59297: Can't find record in 'tablename' on update inner join
      
      Regression introduced in bug#52455. Problem was that the
      fixed function did not set the last used partition variable, resulting
      in wrong partition used when storing the position of the newly
      retrieved row.
      
      Fixed by setting the last used partition in ha_partition::index_read_idx_map.

    modified:
      mysql-test/r/partition.result
      mysql-test/t/partition.test
      sql/ha_partition.cc
=== modified file 'mysql-test/r/partition.result'
--- a/mysql-test/r/partition.result	2010-12-22 09:50:36 +0000
+++ b/mysql-test/r/partition.result	2011-01-24 12:41:44 +0000
@@ -1,5 +1,43 @@
 drop table if exists t1, t2;
 #
+# Bug#59297: Can't find record in 'tablename' on update inner join
+#
+CREATE TABLE t1 (
+a char(2) NOT NULL,
+b char(2) NOT NULL,
+c int(10) unsigned NOT NULL,
+d varchar(255) DEFAULT NULL,
+e varchar(1000) DEFAULT NULL,
+PRIMARY KEY (a, b, c),
+KEY (a),
+KEY (a, b)
+)
+/*!50100 PARTITION BY KEY (a)
+PARTITIONS 20 */;
+INSERT INTO t1 (a, b, c, d, e) VALUES
+('07', '03', 343, '1', '07_03_343'),
+('01', '04', 343, '2', '01_04_343'),
+('01', '06', 343, '3', '01_06_343'),
+('01', '07', 343, '4', '01_07_343'),
+('01', '08', 343, '5', '01_08_343'),
+('01', '09', 343, '6', '01_09_343'),
+('03', '03', 343, '7', '03_03_343'),
+('03', '06', 343, '8', '03_06_343'),
+('03', '07', 343, '9', '03_07_343'),
+('04', '03', 343, '10', '04_03_343'),
+('04', '06', 343, '11', '04_06_343'),
+('05', '03', 343, '12', '05_03_343'),
+('11', '03', 343, '13', '11_03_343'),
+('11', '04', 343, '14', '11_04_343')
+;
+UPDATE t1 AS A,
+(SELECT '03' AS a, '06' AS b, 343 AS c, 'last' AS d) AS B
+SET A.e = B.d  
+WHERE A.a = '03'  
+AND A.b = '06' 
+AND A.c = 343;
+DROP TABLE t1;
+#
 # Bug#57113: ha_partition::extra(ha_extra_function):
 #            Assertion `m_extra_cache' failed
 CREATE TABLE t1

=== modified file 'mysql-test/t/partition.test'
--- a/mysql-test/t/partition.test	2010-12-22 09:50:36 +0000
+++ b/mysql-test/t/partition.test	2011-01-24 12:41:44 +0000
@@ -15,6 +15,49 @@ drop table if exists t1, t2;
 --enable_warnings
 
 --echo #
+--echo # Bug#59297: Can't find record in 'tablename' on update inner join
+--echo #
+
+CREATE TABLE t1 (
+a char(2) NOT NULL,
+b char(2) NOT NULL,
+c int(10) unsigned NOT NULL,
+d varchar(255) DEFAULT NULL,
+e varchar(1000) DEFAULT NULL,
+PRIMARY KEY (a, b, c),
+KEY (a),
+KEY (a, b)
+)
+/*!50100 PARTITION BY KEY (a)
+PARTITIONS 20 */;
+
+INSERT INTO t1 (a, b, c, d, e) VALUES
+('07', '03', 343, '1', '07_03_343'),
+('01', '04', 343, '2', '01_04_343'),
+('01', '06', 343, '3', '01_06_343'),
+('01', '07', 343, '4', '01_07_343'),
+('01', '08', 343, '5', '01_08_343'),
+('01', '09', 343, '6', '01_09_343'),
+('03', '03', 343, '7', '03_03_343'),
+('03', '06', 343, '8', '03_06_343'),
+('03', '07', 343, '9', '03_07_343'),
+('04', '03', 343, '10', '04_03_343'),
+('04', '06', 343, '11', '04_06_343'),
+('05', '03', 343, '12', '05_03_343'),
+('11', '03', 343, '13', '11_03_343'),
+('11', '04', 343, '14', '11_04_343')
+;
+
+UPDATE t1 AS A,
+(SELECT '03' AS a, '06' AS b, 343 AS c, 'last' AS d) AS B
+SET A.e = B.d  
+WHERE A.a = '03'  
+AND A.b = '06' 
+AND A.c = 343;
+
+DROP TABLE t1;
+
+--echo #
 --echo # Bug#57113: ha_partition::extra(ha_extra_function):
 --echo #            Assertion `m_extra_cache' failed
 CREATE TABLE t1

=== modified file 'sql/ha_partition.cc'
--- a/sql/ha_partition.cc	2010-12-16 14:40:52 +0000
+++ b/sql/ha_partition.cc	2011-01-24 12:41:44 +0000
@@ -4317,6 +4317,7 @@ int ha_partition::index_read_idx_map(uch
           break;
       }
     }
+    m_last_part= part;
   }
   else
   {


Attachment: [text/bzr-bundle] bzr/mattias.jonsson@oracle.com-20110124124144-6jme0uptm3gdo992.bundle
Thread
bzr commit into mysql-5.1 branch (mattias.jonsson:3565) Bug#59297Mattias Jonsson24 Jan