Commit 1e106724 authored by unknown's avatar unknown
Browse files

bug#24667 After ALTER TABLE operation ndb_dd table becomes regular ndb: copy...

bug#24667  After ALTER TABLE operation ndb_dd table becomes regular ndb: copy tablespace from old table in copying alter table


parent 17472067
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -282,7 +282,13 @@ a1
18
19
20
SELECT * FROM information_schema.partitions WHERE table_name= 't1' AND partition_name = 'p0';
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PARTITION_NAME	SUBPARTITION_NAME	PARTITION_ORDINAL_POSITION	SUBPARTITION_ORDINAL_POSITION	PARTITION_METHOD	SUBPARTITION_METHOD	PARTITION_EXPRESSION	SUBPARTITION_EXPRESSION	PARTITION_DESCRIPTION	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	CREATE_TIME	UPDATE_TIME	CHECK_TIME	CHECKSUM	PARTITION_COMMENT	NODEGROUP	TABLESPACE_NAME
NULL	test	t1	p0	NULL	1	NULL	KEY	NULL		NULL	NULL	0	0	0	NULL	0	0	NULL	NULL	NULL	NULL	default	default	ts
ALTER TABLE test.t1 ADD a2 FLOAT, ADD a3 DOUBLE;
SELECT * FROM information_schema.partitions WHERE table_name= 't1' AND partition_name = 'p0';
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PARTITION_NAME	SUBPARTITION_NAME	PARTITION_ORDINAL_POSITION	SUBPARTITION_ORDINAL_POSITION	PARTITION_METHOD	SUBPARTITION_METHOD	PARTITION_EXPRESSION	SUBPARTITION_EXPRESSION	PARTITION_DESCRIPTION	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	CREATE_TIME	UPDATE_TIME	CHECK_TIME	CHECKSUM	PARTITION_COMMENT	NODEGROUP	TABLESPACE_NAME
NULL	test	t1	p0	NULL	1	NULL	KEY	NULL		NULL	NULL	0	0	0	NULL	0	0	NULL	NULL	NULL	NULL	default	default	ts
SELECT * FROM test.t1 ORDER BY a1;
a1	a2	a3
1	2.2345	20000001
@@ -369,7 +375,7 @@ t1 CREATE TABLE `t1` (
  `a13` text,
  `a14` blob,
  PRIMARY KEY (`a1`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
) /*!50100 TABLESPACE ts STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
ALTER TABLE test.t1 ADD INDEX a2_i (a2), ADD INDEX a3_i (a3);
SHOW CREATE TABLE test.t1;
Table	Create Table
@@ -391,7 +397,7 @@ t1 CREATE TABLE `t1` (
  PRIMARY KEY (`a1`),
  KEY `a2_i` (`a2`),
  KEY `a3_i` (`a3`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
) /*!50100 TABLESPACE ts STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
ALTER TABLE test.t1 DROP INDEX a2_i;
SHOW CREATE TABLE test.t1;
Table	Create Table
@@ -412,7 +418,7 @@ t1 CREATE TABLE `t1` (
  `a14` blob,
  PRIMARY KEY (`a1`),
  KEY `a3_i` (`a3`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
) /*!50100 TABLESPACE ts STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
ALTER TABLE test.t1 DROP a14;
ALTER TABLE test.t1 DROP a13;
ALTER TABLE test.t1 DROP a12;
@@ -432,7 +438,7 @@ t1 CREATE TABLE `t1` (
  `a4` bit(1) DEFAULT NULL,
  `a5` tinyint(4) DEFAULT NULL,
  KEY `a3_i` (`a3`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
) /*!50100 TABLESPACE ts STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=latin1
DROP TABLE test.t1;
ALTER TABLESPACE ts
DROP DATAFILE './table_space/datafile.dat'
+4 −0
Original line number Diff line number Diff line
@@ -156,8 +156,12 @@ enable_query_log;

SELECT * FROM test.t1 ORDER BY a1;

SELECT * FROM information_schema.partitions WHERE table_name= 't1' AND partition_name = 'p0';

ALTER TABLE test.t1 ADD a2 FLOAT, ADD a3 DOUBLE;

SELECT * FROM information_schema.partitions WHERE table_name= 't1' AND partition_name = 'p0';

let $1=20;
disable_query_log;
while ($1)
+8 −2
Original line number Diff line number Diff line
@@ -9949,7 +9949,7 @@ int ha_ndbcluster::generate_scan_filter_from_key(NdbScanOperation *op,
/*
  get table space info for SHOW CREATE TABLE
*/
char* ha_ndbcluster::get_tablespace_name(THD *thd)
char* ha_ndbcluster::get_tablespace_name(THD *thd, char* name)
{
  Ndb *ndb= check_ndb_in_thd(thd);
  NDBDICT *ndbdict= ndb->getDictionary();
@@ -9967,6 +9967,12 @@ char* ha_ndbcluster::get_tablespace_name(THD *thd)
    ndberr= ndbdict->getNdbError();
    if(ndberr.classification != NdbError::NoError)
      goto err;
    if (name)
    {
      strxnmov(name, FN_LEN, ts.getName(), NullS);
      return name;
    }
    else
      return (my_strdup(ts.getName(), MYF(0)));
  }
err:
+1 −1
Original line number Diff line number Diff line
@@ -824,7 +824,7 @@ static void set_tabname(const char *pathname, char *tabname);
  uint set_up_partition_info(partition_info *part_info,
                             TABLE *table,
                             void *tab);
  char* get_tablespace_name(THD *thd);
  char* get_tablespace_name(THD *thd, char *name);
  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,
+1 −1
Original line number Diff line number Diff line
@@ -1410,7 +1410,7 @@ class handler :public Sql_alloc
  { 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)
  virtual char* get_tablespace_name(THD *thd, char *name)
  { 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; }
Loading