List:Commits« Previous MessageNext Message »
From:Sergey Petrunia Date:April 3 2006 8:52pm
Subject:bk commit into 5.1 tree (sergefp:1.2280) BUG#18659
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of psergey. When psergey 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.2280 06/04/04 00:52:14 sergefp@stripped +3 -0
  BUG#18659: In get_part_iter_for_interval_via_walking(), when we need to 
  obtain partition number, call partition_info->get_part_partition_id() when
  the table has subpartitions, and get_partition_id() otherwise. (The bug
  was that we were always doing the latter)

  sql/sql_partition.cc
    1.63 06/04/04 00:52:11 sergefp@stripped +5 -1
    BUG#18659: In get_part_iter_for_interval_via_walking(), when we need to 
    obtain partition number, call partition_info->get_part_partition_id() when
    the table has subpartitions, and get_partition_id() otherwise. (The bug
    was that we were always doing the latter)

  mysql-test/t/partition_pruning.test
    1.10 06/04/04 00:52:11 sergefp@stripped +14 -0
    Testcase for BUG#18659

  mysql-test/r/partition_pruning.result
    1.11 06/04/04 00:52:11 sergefp@stripped +14 -0
    Testcase for BUG#18659

# 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:	sergefp
# Host:	pylon.mylan
# Root:	/home/psergey/mysql-5.1-bug18659

--- 1.62/sql/sql_partition.cc	2006-04-01 09:56:44 +04:00
+++ 1.63/sql/sql_partition.cc	2006-04-04 00:52:11 +04:00
@@ -5521,7 +5521,11 @@
     else
     {
       longlong dummy;
-      if (!part_info->get_partition_id(part_info, &part_id, &dummy))
+      int res= part_info->is_sub_partitioned() ?
+                  part_info->get_part_partition_id(part_info, &part_id,
+                                                   &dummy):
+                  part_info->get_partition_id(part_info, &part_id, &dummy);
+      if (!res)
       {
         init_single_partition_iterator(part_id, part_iter);
         return 1; /* Ok, iterator initialized */

--- 1.10/mysql-test/r/partition_pruning.result	2006-03-31 15:17:10 +04:00
+++ 1.11/mysql-test/r/partition_pruning.result	2006-04-04 00:52:11 +04:00
@@ -583,3 +583,17 @@
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	p1,p2,p3,p4,p5	ALL	NULL	NULL	NULL	NULL	5	Using where
 drop table t1;
+create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
+subpartition by hash(f_int1) subpartitions 2
+(
+partition part1 values in (0),
+partition part2 values in (1),
+partition part4 values in (null)
+);
+insert into t1 set f_int1 = null;
+select * from t1 where f_int1 is null;
+f_int1
+NULL
+explain partitions select * from t1 where f_int1 is null;
+id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	part4_p2sp0	system	NULL	NULL	NULL	NULL	1	

--- 1.9/mysql-test/t/partition_pruning.test	2006-03-31 15:17:10 +04:00
+++ 1.10/mysql-test/t/partition_pruning.test	2006-04-04 00:52:11 +04:00
@@ -479,5 +479,19 @@
 explain partitions select * from t1 where a>='a' and a <= 'dddd';
 drop table t1;
 
+# BUG#18659: Assertion failure when subpartitioning is used and partition is
+# "IS NULL"
+create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
+  subpartition by hash(f_int1) subpartitions 2
+(
+  partition part1 values in (0),
+  partition part2 values in (1),
+  partition part4 values in (null)
+);
+insert into t1 set f_int1 = null;
+
+select * from t1 where f_int1 is null;
+explain partitions select * from t1 where f_int1 is null;
+
 # No tests for NULLs in RANGE(monotonic_expr()) - they depend on BUG#15447
 # being fixed.
Thread
bk commit into 5.1 tree (sergefp:1.2280) BUG#18659Sergey Petrunia3 Apr