List:Commits« Previous MessageNext Message »
From:Jim Winstead Date:March 13 2006 2:15pm
Subject:bk commit into 5.1 tree (jimw:1.2171)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of jimw. When jimw does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2171 06/03/13 06:15:21 jimw@stripped +3 -0
  Merge mysql.com:/home/jimw/my/mysql-5.1-14526
  into  mysql.com:/home/jimw/my/mysql-5.1-clean

  sql/ha_partition.cc
    1.38 06/03/13 06:15:13 jimw@stripped +0 -1
    Resolve conflict

  mysql-test/t/partition.test
    1.22 06/03/13 06:14:35 jimw@stripped +12 -12
    Resolve conflict

  mysql-test/r/partition.result
    1.19 06/03/13 06:14:13 jimw@stripped +18 -18
    Resolve conflict

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jimw
# Host:	rama.(none)
# Root:	/home/jimw/my/mysql-5.1-clean/RESYNC

--- 1.18/mysql-test/r/partition.result	2006-03-13 06:12:06 -08:00
+++ 1.19/mysql-test/r/partition.result	2006-03-13 06:14:13 -08:00
@@ -433,4 +433,22 @@
 Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
 t1	PARTITION	10	Compact	2	8192	16384	0	0	0	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL		
 drop table t1;
+create table t2 (s1 int not null auto_increment, primary key (s1)) partition by list (s1) (partition p1 values in (1),partition p2 values in (2),partition p3 values in (3),partition p4 values in (4));
+insert into t2 values (null),(null),(null);
+select * from t2;
+s1
+1
+2
+3
+select * from t2 where s1 < 2;
+s1
+1
+update t2 set s1 = s1 + 1 order by s1 desc;
+select * from t2 where s1 < 3;
+s1
+2
+select * from t2 where s1 = 2;
+s1
+2
+drop table t2;
 End of 5.1 tests

--- 1.21/mysql-test/t/partition.test	2006-03-13 06:12:37 -08:00
+++ 1.22/mysql-test/t/partition.test	2006-03-13 06:14:35 -08:00
@@ -559,4 +559,16 @@
 show table status like 't1';
 drop table t1;
 
+#
+# Bug #14526: Partitions: indexed searches fail
+#
+create table t2 (s1 int not null auto_increment, primary key (s1)) partition by list (s1) (partition p1 values in (1),partition p2 values in (2),partition p3 values in (3),partition p4 values in (4));
+insert into t2 values (null),(null),(null);
+select * from t2;
+select * from t2 where s1 < 2;
+update t2 set s1 = s1 + 1 order by s1 desc;
+select * from t2 where s1 < 3;
+select * from t2 where s1 = 2;
+drop table t2;
+
 --echo End of 5.1 tests

--- 1.37/sql/ha_partition.cc	2006-03-08 11:05:56 -08:00
+++ 1.38/sql/ha_partition.cc	2006-03-13 06:15:13 -08:00
@@ -2603,22 +2603,13 @@
     ha_berkeley.cc has a variant of how to store it intact by "packing" it
     for ha_berkeley's own native storage type.
 
-    See the note for update_row() on auto_increments and timestamps. This
-    case also applied to write_row().
-
     Called from item_sum.cc, item_sum.cc, sql_acl.cc, sql_insert.cc,
     sql_insert.cc, sql_select.cc, sql_table.cc, sql_udf.cc, and sql_update.cc.
 
     ADDITIONAL INFO:
 
-    Most handlers set timestamp when calling write row if any such fields
-    exists. Since we are calling an underlying handler we assume the´
-    underlying handler will assume this responsibility.
-
-    Underlying handlers will also call update_auto_increment to calculate
-    the new auto increment value. We will catch the call to
-    get_auto_increment and ensure this increment value is maintained by
-    only one of the underlying handlers.
+    We have to set timestamp fields and auto_increment fields, because those
+    may be used in determining which partition the row should be written to.
 */
 
 int ha_partition::write_row(byte * buf)
@@ -2631,6 +2622,17 @@
 #endif
   DBUG_ENTER("ha_partition::write_row");
   DBUG_ASSERT(buf == m_rec0);
+
+  /* If we have a timestamp column, update it to the current time */
+  if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT)
+    table->timestamp_field->set_time();
+
+  /*
+    If we have an auto_increment column and we are writing a changed row
+    or a new row, then update the auto_increment value in the record.
+  */
+  if (table->next_number_field && buf == table->record[0])
+    update_auto_increment();
 
 #ifdef NOT_NEEDED
   if (likely(buf == rec0))
Thread
bk commit into 5.1 tree (jimw:1.2171)Jim Winstead13 Mar