MySQL Lists are EOL. Please join:

List:Internals« Previous MessageNext Message »
From:Mikael Ronström Date:May 31 2006 8:00am
Subject:bk commit - 5.1 tree (mikael:1.2171) BUG#20161
View as plain text  
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2006/05/31 09:33:10-04:00  
mikael@stripped
#   BUG#20161: LINEAR keyword on subpartitions not displayed in  
information schema for partitions
#   and in SHOW CREATE TABLE
#
# sql/sql_show.cc
#   2006/05/31 09:33:05-04:00  
mikael@stripped +12 -9
#   Added missing check for LINEAR keyword on subpartitions
#   Small remove of duplicate code
#
# sql/sql_partition.cc
#   2006/05/31 09:33:05-04:00  
mikael@stripped +2 -0
#   Added missing check for LINEAR keyword on subpartitions
#
# mysql-test/t/information_schema_part.test
#   2006/05/31 09:33:05-04:00  
mikael@stripped +22 -0
#   Added new test cases
#
# mysql-test/r/information_schema_part.result
#   2006/05/31 09:33:04-04:00  
mikael@stripped +29 -0
#   Added new test cases
#
diff -Nru a/mysql-test/r/information_schema_part.result  
b/mysql-test/r/information_schema_part.result
--- a/mysql-test/r/information_schema_part.result	2006-05-31 09:34:03  
-04:00
+++ b/mysql-test/r/information_schema_part.result	2006-05-31 09:34:03  
-04:00
@@ -111,3 +111,32 @@
  NULL	test	t1	p1	NULL	2	NULL	LINEAR  
HASH	NULL	month(f1)	NULL	NULL	0	0	0	#	1024	0	#	#	NULL	NULL	default	0	 
default
  NULL	test	t1	p2	NULL	3	NULL	LINEAR  
HASH	NULL	month(f1)	NULL	NULL	0	0	0	#	1024	0	#	#	NULL	NULL	default	0	 
default
  drop table t1;
+create table t1 (a int)
+PARTITION BY RANGE (a)
+SUBPARTITION BY LINEAR HASH (a)
+(PARTITION p0 VALUES LESS THAN (10));
+SHOW CREATE TABLE t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a)  
SUBPARTITION BY LINEAR HASH (a) (PARTITION p0 VALUES LESS THAN (10) )
+select SUBPARTITION_METHOD FROM information_schema.partitions WHERE
+table_schema="test" AND table_name="t1";
+SUBPARTITION_METHOD
+LINEAR HASH
+drop table t1;
+create table t1 (a int)
+PARTITION BY LIST (a)
+(PARTITION p0 VALUES IN
+(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
+32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53));
+SHOW CREATE TABLE t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY LIST (a)  
(PARTITION p0 VALUES IN  
(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 
,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53) ENGINE =  
MyISAM)
+SELECT PARTITION_DESCRIPTION FROM information_schema.partitions WHERE
+table_schema = "test" AND table_name = "t1";
+PARTITION_DESCRIPTION
+10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 
,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53
+drop table t1;
diff -Nru a/mysql-test/t/information_schema_part.test  
b/mysql-test/t/information_schema_part.test
--- a/mysql-test/t/information_schema_part.test	2006-05-31 09:34:03  
-04:00
+++ b/mysql-test/t/information_schema_part.test	2006-05-31 09:34:03  
-04:00
@@ -99,3 +99,25 @@
  and table_name="t1";
  drop table t1;

+#
+# Bug 20161 Partitions: SUBPARTITION METHOD doesn't show LINEAR keyword
+#
+create table t1 (a int)
+PARTITION BY RANGE (a)
+SUBPARTITION BY LINEAR HASH (a)
+(PARTITION p0 VALUES LESS THAN (10));
+
+SHOW CREATE TABLE t1;
+select SUBPARTITION_METHOD FROM information_schema.partitions WHERE
+table_schema="test" AND table_name="t1";
+drop table t1;
+
+create table t1 (a int)
+PARTITION BY LIST (a)
+(PARTITION p0 VALUES IN
+(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
+ 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53));
+SHOW CREATE TABLE t1;
+SELECT PARTITION_DESCRIPTION FROM information_schema.partitions WHERE
+table_schema = "test" AND table_name = "t1";
+drop table t1;
diff -Nru a/sql/sql_partition.cc b/sql/sql_partition.cc
--- a/sql/sql_partition.cc	2006-05-31 09:34:03 -04:00
+++ b/sql/sql_partition.cc	2006-05-31 09:34:03 -04:00
@@ -1843,6 +1843,8 @@
    {
      err+= add_subpartition_by(fptr);
      /* Must be hash partitioning for subpartitioning */
+    if (part_info->linear_hash_ind)
+      err+= add_string(fptr, partition_keywords[PKW_LINEAR].str);
      if (part_info->list_of_subpart_fields)
        err+= add_key_partition(fptr, part_info->subpart_field_list);
      else
diff -Nru a/sql/sql_show.cc b/sql/sql_show.cc
--- a/sql/sql_show.cc	2006-05-31 09:34:03 -04:00
+++ b/sql/sql_show.cc	2006-05-31 09:34:03 -04:00
@@ -3911,24 +3911,28 @@
      {
        table->field[9]->store(part_info->part_func_string,
                               part_info->part_func_len, cs);
-      table->field[9]->set_notnull();
      }
      else if (part_info->list_of_part_fields)
      {
        collect_partition_expr(part_info->part_field_list, &tmp_str);
        table->field[9]->store(tmp_str.ptr(), tmp_str.length(), cs);
-      table->field[9]->set_notnull();
      }
+    table->field[9]->set_notnull();

      if (part_info->is_sub_partitioned())
      {
        /* Subpartition method */
+      tmp_res.length(0);
+      if (part_info->linear_hash_ind)
+        tmp_res.append(partition_keywords[PKW_LINEAR].str,
+                       partition_keywords[PKW_LINEAR].length);
        if (part_info->list_of_subpart_fields)
-        table->field[8]->store(partition_keywords[PKW_KEY].str,
-                               partition_keywords[PKW_KEY].length, cs);
+        tmp_res.append(partition_keywords[PKW_KEY].str,
+                       partition_keywords[PKW_KEY].length);
        else
-        table->field[8]->store(partition_keywords[PKW_HASH].str,
-                               partition_keywords[PKW_HASH].length,  
cs);
+        tmp_res.append(partition_keywords[PKW_HASH].str,
+                       partition_keywords[PKW_HASH].length);
+      table->field[8]->store(tmp_res.ptr(), tmp_res.length(), cs);
        table->field[8]->set_notnull();

        /* Subpartition expression */
@@ -3936,14 +3940,13 @@
        {
          table->field[10]->store(part_info->subpart_func_string,
                                  part_info->subpart_func_len, cs);
-        table->field[10]->set_notnull();
        }
        else if (part_info->list_of_subpart_fields)
        {
          collect_partition_expr(part_info->subpart_field_list,  
&tmp_str);
          table->field[10]->store(tmp_str.ptr(), tmp_str.length(), cs);
-        table->field[10]->set_notnull();
        }
+      table->field[10]->set_notnull();
      }

      while ((part_elem= part_it++))
@@ -5241,7 +5244,7 @@
    {"PARTITION_ORDINAL_POSITION", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
    {"SUBPARTITION_ORDINAL_POSITION", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
    {"PARTITION_METHOD", 12, MYSQL_TYPE_STRING, 0, 1, 0},
-  {"SUBPARTITION_METHOD", 5, MYSQL_TYPE_STRING, 0, 1, 0},
+  {"SUBPARTITION_METHOD", 12, MYSQL_TYPE_STRING, 0, 1, 0},
    {"PARTITION_EXPRESSION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},
    {"SUBPARTITION_EXPRESSION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},
    {"PARTITION_DESCRIPTION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},

Mikael Ronstrom, Senior Software Architect
MySQL AB, www.mysql.com

Jumpstart your cluster:
http://www.mysql.com/consulting/packaged/cluster.html
My blog:
http://mikaelronstrom.blogspot.com

Thread
bk commit - 5.1 tree (mikael:1.2171) BUG#20161Mikael Ronström31 May