List:Commits« Previous MessageNext Message »
From:Martin Skold Date:December 19 2006 10:21pm
Subject:bk commit into 5.1 tree (mskold:1.2368) BUG#24667
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of marty. When marty 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@stripped, 2006-12-19 23:20:43+01:00, mskold@stripped +10 -0
  bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  include/my_base.h@stripped, 2006-12-19 23:19:14+01:00, mskold@stripped +8 -0
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  mysql-test/r/ndb_dd_disk2memory.result@stripped, 2006-12-19 23:19:20+01:00, mskold@stripped +2 -2
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  mysql-test/r/rpl_ndb_dd_advance.result@stripped, 2006-12-19 23:19:20+01:00, mskold@stripped +6 -6
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  mysql-test/t/ndb_dd_disk2memory.test@stripped, 2006-12-19 23:19:19+01:00, mskold@stripped +1 -1
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  sql/ha_ndbcluster.cc@stripped, 2006-12-19 23:19:18+01:00, mskold@stripped +5 -5
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  sql/ha_ndbcluster.h@stripped, 2006-12-19 23:19:17+01:00, mskold@stripped +1 -1
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  sql/handler.h@stripped, 2006-12-19 23:19:14+01:00, mskold@stripped +2 -2
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  sql/sql_show.cc@stripped, 2006-12-19 23:19:17+01:00, mskold@stripped +2 -2
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  sql/sql_table.cc@stripped, 2006-12-19 23:19:16+01:00, mskold@stripped +4 -4
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

  sql/sql_yacc.yy@stripped, 2006-12-19 23:19:15+01:00, mskold@stripped +4 -2
    bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: ALTER TABLE must specify STORAGE explicitely to change it, + post review changes

# 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:	mskold
# Host:	linux.site
# Root:	/windows/Linux_space/MySQL/mysql-5.1-new-ndb

--- 1.93/include/my_base.h	2006-12-19 23:21:08 +01:00
+++ 1.94/include/my_base.h	2006-12-19 23:21:08 +01:00
@@ -96,6 +96,14 @@ enum ha_key_alg {
   HA_KEY_ALG_FULLTEXT=	4		/* FULLTEXT (MyISAM tables) */
 };
 
+        /* Storage media types */ 
+
+enum ha_storage_media {
+  HA_SM_DEFAULT=        0,		/* Not specified (engine default) */
+  HA_SM_DISK=           1,		/* DISK storage */
+  HA_SM_MEMORY=         2		/* MAIN MEMORY storage */
+};
+
 	/* The following is parameter to ha_extra() */
 
 enum ha_extra_function {

--- 1.249/sql/handler.h	2006-12-19 23:21:08 +01:00
+++ 1.250/sql/handler.h	2006-12-19 23:21:08 +01:00
@@ -764,7 +764,7 @@ typedef struct st_ha_create_information
   bool table_existed;			/* 1 in create if table existed */
   bool frm_only;                        /* 1 if no ha_create_table() */
   bool varchar;                         /* 1 if table has a VARCHAR */
-  bool store_on_disk;                   /* 1 if table stored on disk */
+  enum ha_storage_media storage_media;  /* DEFAULT, DISK or MEMORY */
 } HA_CREATE_INFO;
 
 
@@ -1410,7 +1410,7 @@ public:
   { return FALSE; }
   virtual char* get_foreign_key_create_info()
   { return(NULL);}  /* gets foreign key create string from InnoDB */
-  virtual char* get_tablespace_name(THD *thd, char *name)
+  virtual char* get_tablespace_name(THD *thd, char *name, uint name_len)
   { return(NULL);}  /* gets tablespace name from handler */
   /* used in ALTER TABLE; 1 if changing storage engine is allowed */
   virtual bool can_switch_engines() { return 1; }

--- 1.380/sql/sql_show.cc	2006-12-19 23:21:08 +01:00
+++ 1.381/sql/sql_show.cc	2006-12-19 23:21:08 +01:00
@@ -1267,7 +1267,7 @@ int store_create_info(THD *thd, TABLE_LI
       to the CREATE TABLE statement
     */
 
-    if ((for_str= file->get_tablespace_name(thd,0)))
+    if ((for_str= file->get_tablespace_name(thd,0,0)))
     {
       packet->append(STRING_WITH_LEN(" /*!50100 TABLESPACE "));
       packet->append(for_str, strlen(for_str));
@@ -3974,7 +3974,7 @@ static void store_schema_partitions_reco
                               strlen(part_elem->tablespace_name), cs);
     else
     {
-      char *ts= showing_table->file->get_tablespace_name(thd,0);
+      char *ts= showing_table->file->get_tablespace_name(thd,0,0);
       if(ts)
       {
         table->field[24]->store(ts, strlen(ts), cs);

--- 1.380/sql/sql_table.cc	2006-12-19 23:21:08 +01:00
+++ 1.381/sql/sql_table.cc	2006-12-19 23:21:08 +01:00
@@ -5630,14 +5630,14 @@ view_err:
   if (!(used_fields & HA_CREATE_USED_KEY_BLOCK_SIZE))
     create_info->key_block_size= table->s->key_block_size;
 
-  if (!create_info->tablespace)
+  if (!create_info->tablespace && create_info->storage_media != HA_SM_MEMORY)
   {
     /* 
-       Regular alter table of disk stored table (no tablespace change)
+       Regular alter table of disk stored table (no tablespace/storage change)
        Copy tablespace name
     */
-    if (table->file->get_tablespace_name(thd, (char *) &tablespace))
-      create_info->tablespace= (char *) &tablespace;
+    if ((table->file->get_tablespace_name(thd, tablespace, FN_LEN)))
+      create_info->tablespace= tablespace;
   }
   restore_record(table, s->default_values);     // Empty record for DEFAULT
   List_iterator<Alter_drop> drop_it(alter_info->drop_list);

--- 1.524/sql/sql_yacc.yy	2006-12-19 23:21:08 +01:00
+++ 1.525/sql/sql_yacc.yy	2006-12-19 23:21:08 +01:00
@@ -3947,8 +3947,8 @@ create_table_option:
 	| DATA_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys { Lex->create_info.data_file_name= $4.str; Lex->create_info.used_fields|= HA_CREATE_USED_DATADIR; }
 	| INDEX_SYM DIRECTORY_SYM opt_equal TEXT_STRING_sys { Lex->create_info.index_file_name= $4.str;  Lex->create_info.used_fields|= HA_CREATE_USED_INDEXDIR; }
         | TABLESPACE ident {Lex->create_info.tablespace= $2.str;}
-        | STORAGE_SYM DISK_SYM {Lex->create_info.store_on_disk= TRUE;}
-        | STORAGE_SYM MEMORY_SYM {Lex->create_info.store_on_disk= FALSE;}
+        | STORAGE_SYM DISK_SYM {Lex->create_info.storage_media= HA_SM_DISK;}
+        | STORAGE_SYM MEMORY_SYM {Lex->create_info.storage_media= HA_SM_MEMORY;}
 	| CONNECTION_SYM opt_equal TEXT_STRING_sys { Lex->create_info.connect_string.str= $3.str; Lex->create_info.connect_string.length= $3.length;  Lex->create_info.used_fields|= HA_CREATE_USED_CONNECTION; }
 	| KEY_BLOCK_SIZE opt_equal ulong_num
 	  {
@@ -4690,6 +4690,7 @@ alter:
 	  lex->alter_info.reset();
 	  lex->alter_info.flags= 0;
           lex->no_write_to_binlog= 0;
+          lex->create_info.storage_media= HA_SM_DEFAULT;	
 	}
 	alter_commands
 	{}
@@ -8342,6 +8343,7 @@ show_param:
 	    if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0))
 	      YYABORT;
             lex->only_view= 0;
+	    lex->create_info.storage_media= HA_SM_DEFAULT;
 	  }
         | CREATE VIEW_SYM table_ident
           {

--- 1.8/mysql-test/r/ndb_dd_disk2memory.result	2006-12-19 23:21:08 +01:00
+++ 1.9/mysql-test/r/ndb_dd_disk2memory.result	2006-12-19 23:21:08 +01:00
@@ -237,7 +237,7 @@ t2	CREATE TABLE `t2` (
   `c2` int(11) NOT NULL,
   PRIMARY KEY (`pk2`)
 ) /*!50100 TABLESPACE table_space1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
-ALTER TABLE test.t1 ENGINE=NDBCLUSTER;
+ALTER TABLE test.t1 STORAGE MEMORY ENGINE=NDBCLUSTER;
 SHOW CREATE TABLE test.t1;
 Table	Create Table
 t1	CREATE TABLE `t1` (
@@ -341,7 +341,7 @@ t1	CREATE TABLE `t1` (
   KEY `a2` (`a2`),
   KEY `a3` (`a3`),
   KEY `a8` (`a8`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE table_space1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 Table	Create Table
 t2	CREATE TABLE `t2` (
   `b1` smallint(6) NOT NULL,

--- 1.9/mysql-test/r/rpl_ndb_dd_advance.result	2006-12-19 23:21:08 +01:00
+++ 1.10/mysql-test/r/rpl_ndb_dd_advance.result	2006-12-19 23:21:08 +01:00
@@ -70,7 +70,7 @@ t1	CREATE TABLE `t1` (
   PRIMARY KEY (`c1`),
   KEY `t1_i` (`c2`,`c3`),
   KEY `c5` (`c5`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 **** Show first set of ALTERs on SLAVE ****
 SHOW CREATE TABLE t1;
 Table	Create Table
@@ -83,7 +83,7 @@ t1	CREATE TABLE `t1` (
   PRIMARY KEY (`c1`),
   KEY `t1_i` (`c2`,`c3`),
   KEY `c5` (`c5`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 **** Second set of alters test 1 ****
 ALTER TABLE t1 RENAME t2;
 ALTER TABLE t2 DROP INDEX c5;
@@ -102,7 +102,7 @@ t1	CREATE TABLE `t1` (
   `c5` double DEFAULT NULL,
   PRIMARY KEY (`c1`),
   KEY `t1_i` (`c2`,`c3`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 **** Show second set of ALTERs on SLAVE ****
 SHOW CREATE TABLE t1;
 Table	Create Table
@@ -114,7 +114,7 @@ t1	CREATE TABLE `t1` (
   `c5` double DEFAULT NULL,
   PRIMARY KEY (`c1`),
   KEY `t1_i` (`c2`,`c3`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 **** Third and last set of alters for test1  ****
 ALTER TABLE t1 CHANGE c1 c1 DOUBLE;
 ALTER TABLE t1 CHANGE c2 c2 DECIMAL(10,2);
@@ -136,7 +136,7 @@ t1	CREATE TABLE `t1` (
   `c5` double DEFAULT NULL,
   PRIMARY KEY (`c1`),
   KEY `t1_i` (`c2`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 SELECT * FROM t1 ORDER BY c1 LIMIT 5;
 c1	c2	c3	c5
 1	2.00	b1b1b1b1b1b1b1b1b1b1	NULL
@@ -154,7 +154,7 @@ t1	CREATE TABLE `t1` (
   `c5` double DEFAULT NULL,
   PRIMARY KEY (`c1`),
   KEY `t1_i` (`c2`)
-) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
 SELECT * FROM t1 where c1 = 1;
 c1	c2	c3	c5
 1	2.00	b1b1b1b1b1b1b1b1b1b1	NULL

--- 1.3/mysql-test/t/ndb_dd_disk2memory.test	2006-12-19 23:21:08 +01:00
+++ 1.4/mysql-test/t/ndb_dd_disk2memory.test	2006-12-19 23:21:08 +01:00
@@ -111,7 +111,7 @@ SHOW CREATE TABLE test.t1;
 ALTER TABLE test.t2 TABLESPACE table_space1 STORAGE DISK
 ENGINE=NDB;
 SHOW CREATE TABLE test.t2;
-ALTER TABLE test.t1 ENGINE=NDBCLUSTER;
+ALTER TABLE test.t1 STORAGE MEMORY ENGINE=NDBCLUSTER;
 SHOW CREATE TABLE test.t1;
 --echo
 ######################### End Test Section 2 #################

--- 1.379/sql/ha_ndbcluster.cc	2006-12-19 23:21:09 +01:00
+++ 1.380/sql/ha_ndbcluster.cc	2006-12-19 23:21:09 +01:00
@@ -4807,7 +4807,7 @@ int ha_ndbcluster::create(const char *na
     if ((my_errno= create_ndb_column(col, field, info)))
       DBUG_RETURN(my_errno);
  
-    if (info->store_on_disk || getenv("NDB_DEFAULT_DISK"))
+    if (info->storage_media == HA_SM_DISK || getenv("NDB_DEFAULT_DISK"))
       col.setStorageType(NdbDictionary::Column::StorageTypeDisk);
     else
       col.setStorageType(NdbDictionary::Column::StorageTypeMemory);
@@ -4827,7 +4827,7 @@ int ha_ndbcluster::create(const char *na
                              NdbDictionary::Column::StorageTypeMemory);
   }
 
-  if (info->store_on_disk)
+  if (info->storage_media == HA_SM_DISK)
   { 
     if (info->tablespace)
       tab.setTablespace(info->tablespace);
@@ -4837,7 +4837,7 @@ int ha_ndbcluster::create(const char *na
   else if (info->tablespace)
   {
     tab.setTablespace(info->tablespace);
-    info->store_on_disk = true;  //if use tablespace, that also means store on disk
+    info->storage_media = HA_SM_DISK;  //if use tablespace, that also means store on disk
   }
 
   // No primary key, create shadow key as 64 bit, auto increment  
@@ -9949,7 +9949,7 @@ int ha_ndbcluster::generate_scan_filter_
 /*
   get table space info for SHOW CREATE TABLE
 */
-char* ha_ndbcluster::get_tablespace_name(THD *thd, char* name)
+char* ha_ndbcluster::get_tablespace_name(THD *thd, char* name, uint name_len)
 {
   Ndb *ndb= check_ndb_in_thd(thd);
   NDBDICT *ndbdict= ndb->getDictionary();
@@ -9969,7 +9969,7 @@ char* ha_ndbcluster::get_tablespace_name
       goto err;
     if (name)
     {
-      strxnmov(name, FN_LEN, ts.getName(), NullS);
+      strxnmov(name, name_len, ts.getName(), NullS);
       return name;
     }
     else

--- 1.160/sql/ha_ndbcluster.h	2006-12-19 23:21:09 +01:00
+++ 1.161/sql/ha_ndbcluster.h	2006-12-19 23:21:09 +01:00
@@ -824,7 +824,7 @@ private:
   uint set_up_partition_info(partition_info *part_info,
                              TABLE *table,
                              void *tab);
-  char* get_tablespace_name(THD *thd, char *name);
+  char* get_tablespace_name(THD *thd, char *name, uint name_len);
   int set_range_data(void *tab, partition_info* part_info);
   int set_list_data(void *tab, partition_info* part_info);
   int complemented_read(const byte *old_data, byte *new_data,
Thread
bk commit into 5.1 tree (mskold:1.2368) BUG#24667Martin Skold19 Dec