Merge c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/clean-mysql-5.1-new
into c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug19010 mysql-test/r/ndb_dd_basic.result: Auto merged mysql-test/r/ndb_partition_key.result: Auto merged mysql-test/t/ndb_partition_key.test: Auto merged sql/ha_partition.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_partition.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged sql/unireg.cc: Auto merged
This commit is contained in:
commit
0e336304d0
@ -9,7 +9,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`pk1` int(11) NOT NULL,
|
`pk1` int(11) NOT NULL,
|
||||||
`b` bit(64) DEFAULT NULL,
|
`b` bit(64) DEFAULT NULL,
|
||||||
PRIMARY KEY (`pk1`)
|
PRIMARY KEY (`pk1`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
insert into t1 values
|
insert into t1 values
|
||||||
(0,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
(0,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
||||||
(1,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
(1,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
||||||
|
@ -49,7 +49,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` int(11) NOT NULL,
|
`b` int(11) NOT NULL,
|
||||||
`c` int(11) NOT NULL,
|
`c` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`pk1`)
|
PRIMARY KEY (`pk1`)
|
||||||
) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
INSERT INTO t1 VALUES (0, 0, 0);
|
INSERT INTO t1 VALUES (0, 0, 0);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
pk1 b c
|
pk1 b c
|
||||||
|
@ -218,7 +218,7 @@ t2 CREATE TABLE `t2` (
|
|||||||
`b2` int(11) NOT NULL,
|
`b2` int(11) NOT NULL,
|
||||||
`c2` int(11) NOT NULL,
|
`c2` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`pk2`)
|
PRIMARY KEY (`pk2`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
SHOW CREATE TABLE test.t1;
|
SHOW CREATE TABLE test.t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@ -226,7 +226,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` int(11) NOT NULL,
|
`b` int(11) NOT NULL,
|
||||||
`c` int(11) NOT NULL,
|
`c` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`pk1`)
|
PRIMARY KEY (`pk1`)
|
||||||
) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
ALTER TABLE test.t2 TABLESPACE table_space1 STORAGE DISK
|
ALTER TABLE test.t2 TABLESPACE table_space1 STORAGE DISK
|
||||||
ENGINE=NDB;
|
ENGINE=NDB;
|
||||||
SHOW CREATE TABLE test.t2;
|
SHOW CREATE TABLE test.t2;
|
||||||
@ -236,7 +236,7 @@ t2 CREATE TABLE `t2` (
|
|||||||
`b2` int(11) NOT NULL,
|
`b2` int(11) NOT NULL,
|
||||||
`c2` int(11) NOT NULL,
|
`c2` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`pk2`)
|
PRIMARY KEY (`pk2`)
|
||||||
) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
ALTER TABLE test.t1 ENGINE=NDBCLUSTER;
|
ALTER TABLE test.t1 ENGINE=NDBCLUSTER;
|
||||||
SHOW CREATE TABLE test.t1;
|
SHOW CREATE TABLE test.t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -245,7 +245,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` int(11) NOT NULL,
|
`b` int(11) NOT NULL,
|
||||||
`c` int(11) NOT NULL,
|
`c` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`pk1`)
|
PRIMARY KEY (`pk1`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
|
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
DROP TABLE test.t2;
|
DROP TABLE test.t2;
|
||||||
|
@ -14,7 +14,7 @@ gis_point CREATE TABLE `gis_point` (
|
|||||||
`fid` int(11) NOT NULL AUTO_INCREMENT,
|
`fid` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`g` point DEFAULT NULL,
|
`g` point DEFAULT NULL,
|
||||||
PRIMARY KEY (`fid`)
|
PRIMARY KEY (`fid`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
SHOW FIELDS FROM gis_point;
|
SHOW FIELDS FROM gis_point;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
fid int(11) NO PRI NULL auto_increment
|
fid int(11) NO PRI NULL auto_increment
|
||||||
@ -476,7 +476,7 @@ gis_point CREATE TABLE `gis_point` (
|
|||||||
`fid` int(11) NOT NULL AUTO_INCREMENT,
|
`fid` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`g` point DEFAULT NULL,
|
`g` point DEFAULT NULL,
|
||||||
PRIMARY KEY (`fid`)
|
PRIMARY KEY (`fid`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
SHOW FIELDS FROM gis_point;
|
SHOW FIELDS FROM gis_point;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
fid int(11) NO PRI NULL auto_increment
|
fid int(11) NO PRI NULL auto_increment
|
||||||
|
@ -137,7 +137,7 @@ show create table t1;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL
|
`a` int(11) DEFAULT NULL
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
alter table t1
|
alter table t1
|
||||||
partition by key(a)
|
partition by key(a)
|
||||||
(partition p0 engine=ndb, partition p1);
|
(partition p0 engine=ndb, partition p1);
|
||||||
@ -197,3 +197,40 @@ ENGINE=NDB
|
|||||||
PARTITION BY KEY(c3);
|
PARTITION BY KEY(c3);
|
||||||
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (a int) engine = ndb;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
|
alter table t1 add column b int;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
|
alter table t1 engine = myisam;
|
||||||
|
alter table t1 engine = ndb;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
|
alter table t1 coalesce partition 1;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 1
|
||||||
|
drop table t1 ;
|
||||||
|
create table t1 (a int) engine = ndb;
|
||||||
|
alter table t1 add partition partitions 1;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () PARTITIONS 3
|
||||||
|
drop table t1;
|
||||||
|
@ -886,4 +886,30 @@ s1
|
|||||||
2
|
2
|
||||||
3
|
3
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a varchar(1))
|
||||||
|
partition by key (a)
|
||||||
|
as select 'a';
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a)
|
||||||
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a int) ENGINE = MYISAM PARTITION BY KEY(a);
|
||||||
|
INSERT into t1 values (1), (2);
|
||||||
|
SHOW TABLE STATUS;
|
||||||
|
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 MyISAM 10 Fixed 2 7 14 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||||
|
DELETE from t1 where a = 1;
|
||||||
|
SHOW TABLE STATUS;
|
||||||
|
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 MyISAM 10 Fixed 1 14 14 0 0 7 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||||
|
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
||||||
|
SHOW TABLE STATUS;
|
||||||
|
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 MyISAM 10 Fixed 1 7 7 0 1024 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||||
|
CREATE TABLE t1 (a int, index(a)) PARTITION BY KEY(a);
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
ALTER TABLE t1 ENABLE KEYS;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -33,7 +33,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`blob_column` longblob,
|
`blob_column` longblob,
|
||||||
`vchar_column` varchar(100) DEFAULT NULL,
|
`vchar_column` varchar(100) DEFAULT NULL,
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
DROP PROCEDURE test.p1;
|
DROP PROCEDURE test.p1;
|
||||||
DROP FUNCTION test.fn1;
|
DROP FUNCTION test.fn1;
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
|
@ -69,7 +69,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
KEY `t1_i` (`c2`,`c3`),
|
KEY `t1_i` (`c2`,`c3`),
|
||||||
KEY `c5` (`c5`)
|
KEY `c5` (`c5`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
**** Show first set of ALTERs on SLAVE ****
|
**** Show first set of ALTERs on SLAVE ****
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -82,7 +82,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
KEY `t1_i` (`c2`,`c3`),
|
KEY `t1_i` (`c2`,`c3`),
|
||||||
KEY `c5` (`c5`)
|
KEY `c5` (`c5`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
**** Second set of alters test 1 ****
|
**** Second set of alters test 1 ****
|
||||||
ALTER TABLE t1 RENAME t2;
|
ALTER TABLE t1 RENAME t2;
|
||||||
ALTER TABLE t2 DROP INDEX c5;
|
ALTER TABLE t2 DROP INDEX c5;
|
||||||
@ -101,7 +101,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
KEY `t1_i` (`c2`,`c3`)
|
KEY `t1_i` (`c2`,`c3`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
**** Show second set of ALTERs on SLAVE ****
|
**** Show second set of ALTERs on SLAVE ****
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -113,7 +113,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
KEY `t1_i` (`c2`,`c3`)
|
KEY `t1_i` (`c2`,`c3`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
**** Third and last set of alters for test1 ****
|
**** Third and last set of alters for test1 ****
|
||||||
ALTER TABLE t1 CHANGE c1 c1 DOUBLE;
|
ALTER TABLE t1 CHANGE c1 c1 DOUBLE;
|
||||||
ALTER TABLE t1 CHANGE c2 c2 DECIMAL(10,2);
|
ALTER TABLE t1 CHANGE c2 c2 DECIMAL(10,2);
|
||||||
@ -135,7 +135,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
KEY `t1_i` (`c2`)
|
KEY `t1_i` (`c2`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
||||||
c1 c2 c3 c5
|
c1 c2 c3 c5
|
||||||
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
||||||
@ -153,7 +153,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c5` double DEFAULT NULL,
|
`c5` double DEFAULT NULL,
|
||||||
PRIMARY KEY (`c1`),
|
PRIMARY KEY (`c1`),
|
||||||
KEY `t1_i` (`c2`)
|
KEY `t1_i` (`c2`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||||
SELECT * FROM t1 where c1 = 1;
|
SELECT * FROM t1 where c1 = 1;
|
||||||
c1 c2 c3 c5
|
c1 c2 c3 c5
|
||||||
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
1 2.00 b1b1b1b1b1b1b1b1b1b1 NULL
|
||||||
|
@ -196,3 +196,23 @@ CREATE TABLE t1 (
|
|||||||
|
|
||||||
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG 19010: ALTER TABLE from NDB to other engine without primary key
|
||||||
|
# doesn't work.
|
||||||
|
#
|
||||||
|
create table t1 (a int) engine = ndb;
|
||||||
|
show create table t1;
|
||||||
|
alter table t1 add column b int;
|
||||||
|
show create table t1;
|
||||||
|
alter table t1 engine = myisam;
|
||||||
|
alter table t1 engine = ndb;
|
||||||
|
show create table t1;
|
||||||
|
alter table t1 coalesce partition 1;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1 ;
|
||||||
|
create table t1 (a int) engine = ndb;
|
||||||
|
alter table t1 add partition partitions 1;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@ -1009,4 +1009,37 @@ select auto_increment from information_schema.tables where table_name='t1';
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG 19062 Partition clause ignored if CREATE TABLE ... AS SELECT ...;
|
||||||
|
#
|
||||||
|
create table t1 (a varchar(1))
|
||||||
|
partition by key (a)
|
||||||
|
as select 'a';
|
||||||
|
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG 19501 Partitions: SHOW TABLE STATUS shows wrong Data_free
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int) ENGINE = MYISAM PARTITION BY KEY(a);
|
||||||
|
INSERT into t1 values (1), (2);
|
||||||
|
--replace_column 9 0 12 NULL 13 NULL 14 NULL
|
||||||
|
SHOW TABLE STATUS;
|
||||||
|
DELETE from t1 where a = 1;
|
||||||
|
--replace_column 9 0 12 NULL 13 NULL 14 NULL
|
||||||
|
SHOW TABLE STATUS;
|
||||||
|
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
||||||
|
--replace_column 12 NULL 13 NULL 14 NULL
|
||||||
|
SHOW TABLE STATUS;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG 19502: ENABLE/DISABLE Keys don't work for partitioned tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int, index(a)) PARTITION BY KEY(a);
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
ALTER TABLE t1 ENABLE KEYS;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -4175,6 +4175,8 @@ void ha_partition::info(uint flag)
|
|||||||
index_file_length: Length of index file, in principle bytes in
|
index_file_length: Length of index file, in principle bytes in
|
||||||
indexes in the table
|
indexes in the table
|
||||||
We report sum
|
We report sum
|
||||||
|
delete_length: Length of free space easily used by new records in table
|
||||||
|
We report sum
|
||||||
mean_record_length:Mean record length in the table
|
mean_record_length:Mean record length in the table
|
||||||
We calculate this
|
We calculate this
|
||||||
check_time: Time of last check (only applicable to MyISAM)
|
check_time: Time of last check (only applicable to MyISAM)
|
||||||
@ -4184,6 +4186,7 @@ void ha_partition::info(uint flag)
|
|||||||
deleted= 0;
|
deleted= 0;
|
||||||
data_file_length= 0;
|
data_file_length= 0;
|
||||||
index_file_length= 0;
|
index_file_length= 0;
|
||||||
|
delete_length= 0;
|
||||||
check_time= 0;
|
check_time= 0;
|
||||||
file_array= m_file;
|
file_array= m_file;
|
||||||
do
|
do
|
||||||
@ -4196,6 +4199,7 @@ void ha_partition::info(uint flag)
|
|||||||
deleted+= file->deleted;
|
deleted+= file->deleted;
|
||||||
data_file_length+= file->data_file_length;
|
data_file_length+= file->data_file_length;
|
||||||
index_file_length+= file->index_file_length;
|
index_file_length+= file->index_file_length;
|
||||||
|
delete_length+= file->delete_length;
|
||||||
if (file->check_time > check_time)
|
if (file->check_time > check_time)
|
||||||
check_time= file->check_time;
|
check_time= file->check_time;
|
||||||
}
|
}
|
||||||
@ -5324,6 +5328,82 @@ void ha_partition::init_table_handle_for_HANDLER()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
MODULE enable/disable indexes
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Disable indexes for a while
|
||||||
|
SYNOPSIS
|
||||||
|
disable_indexes()
|
||||||
|
mode Mode
|
||||||
|
RETURN VALUES
|
||||||
|
0 Success
|
||||||
|
!= 0 Error
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ha_partition::disable_indexes(uint mode)
|
||||||
|
{
|
||||||
|
handler **file;
|
||||||
|
int error= 0;
|
||||||
|
|
||||||
|
for (file= m_file; *file; file++)
|
||||||
|
{
|
||||||
|
if ((error= (*file)->disable_indexes(mode)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Enable indexes again
|
||||||
|
SYNOPSIS
|
||||||
|
enable_indexes()
|
||||||
|
mode Mode
|
||||||
|
RETURN VALUES
|
||||||
|
0 Success
|
||||||
|
!= 0 Error
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ha_partition::enable_indexes(uint mode)
|
||||||
|
{
|
||||||
|
handler **file;
|
||||||
|
int error= 0;
|
||||||
|
|
||||||
|
for (file= m_file; *file; file++)
|
||||||
|
{
|
||||||
|
if ((error= (*file)->enable_indexes(mode)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check if indexes are disabled
|
||||||
|
SYNOPSIS
|
||||||
|
indexes_are_disabled()
|
||||||
|
|
||||||
|
RETURN VALUES
|
||||||
|
0 Indexes are enabled
|
||||||
|
!= 0 Indexes are disabled
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ha_partition::indexes_are_disabled(void)
|
||||||
|
{
|
||||||
|
handler **file;
|
||||||
|
int error= 0;
|
||||||
|
|
||||||
|
for (file= m_file; *file; file++)
|
||||||
|
{
|
||||||
|
if ((error= (*file)->indexes_are_disabled()))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
MODULE Partition Share
|
MODULE Partition Share
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -938,17 +938,18 @@ public:
|
|||||||
virtual uint checksum() const;
|
virtual uint checksum() const;
|
||||||
virtual bool is_crashed() const;
|
virtual bool is_crashed() const;
|
||||||
virtual bool auto_repair() const;
|
virtual bool auto_repair() const;
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
MODULE enable/disable indexes
|
MODULE enable/disable indexes
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Enable/Disable Indexes are not supported currently (Heap, MyISAM)
|
Enable/Disable Indexes are only supported by HEAP and MyISAM.
|
||||||
This means that the following methods are not implemented:
|
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
virtual int disable_indexes(uint mode);
|
virtual int disable_indexes(uint mode);
|
||||||
virtual int enable_indexes(uint mode);
|
virtual int enable_indexes(uint mode);
|
||||||
virtual int indexes_are_disabled(void);
|
virtual int indexes_are_disabled(void);
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
@ -184,6 +184,7 @@ public:
|
|||||||
bool list_of_subpart_fields;
|
bool list_of_subpart_fields;
|
||||||
bool linear_hash_ind;
|
bool linear_hash_ind;
|
||||||
bool fixed;
|
bool fixed;
|
||||||
|
bool is_auto_partitioned;
|
||||||
bool from_openfrm;
|
bool from_openfrm;
|
||||||
bool has_null_value;
|
bool has_null_value;
|
||||||
uint has_null_part_id;
|
uint has_null_part_id;
|
||||||
@ -219,6 +220,7 @@ public:
|
|||||||
list_of_part_fields(FALSE), list_of_subpart_fields(FALSE),
|
list_of_part_fields(FALSE), list_of_subpart_fields(FALSE),
|
||||||
linear_hash_ind(FALSE),
|
linear_hash_ind(FALSE),
|
||||||
fixed(FALSE),
|
fixed(FALSE),
|
||||||
|
is_auto_partitioned(FALSE),
|
||||||
from_openfrm(FALSE),
|
from_openfrm(FALSE),
|
||||||
has_null_value(FALSE),
|
has_null_value(FALSE),
|
||||||
has_null_part_id(0)
|
has_null_part_id(0)
|
||||||
|
@ -2855,6 +2855,17 @@ mysql_execute_command(THD *thd)
|
|||||||
res= 1;
|
res= 1;
|
||||||
goto end_with_restore_list;
|
goto end_with_restore_list;
|
||||||
}
|
}
|
||||||
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
|
{
|
||||||
|
partition_info *part_info= thd->lex->part_info;
|
||||||
|
if (part_info && !(part_info= thd->lex->part_info->get_clone()))
|
||||||
|
{
|
||||||
|
res= -1;
|
||||||
|
goto end_with_restore_list;
|
||||||
|
}
|
||||||
|
thd->work_part_info= part_info;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (select_lex->item_list.elements) // With select
|
if (select_lex->item_list.elements) // With select
|
||||||
{
|
{
|
||||||
select_result *result;
|
select_result *result;
|
||||||
@ -2924,15 +2935,6 @@ mysql_execute_command(THD *thd)
|
|||||||
lex->like_name);
|
lex->like_name);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
|
||||||
partition_info *part_info= thd->lex->part_info;
|
|
||||||
if (part_info && !(part_info= thd->lex->part_info->get_clone()))
|
|
||||||
{
|
|
||||||
res= -1;
|
|
||||||
goto end_with_restore_list;
|
|
||||||
}
|
|
||||||
thd->work_part_info= part_info;
|
|
||||||
#endif
|
|
||||||
res= mysql_create_table(thd, create_table->db,
|
res= mysql_create_table(thd, create_table->db,
|
||||||
create_table->table_name, &lex->create_info,
|
create_table->table_name, &lex->create_info,
|
||||||
lex->create_list,
|
lex->create_list,
|
||||||
|
@ -4076,6 +4076,7 @@ that are reorganised.
|
|||||||
tab_part_info->use_default_partitions= FALSE;
|
tab_part_info->use_default_partitions= FALSE;
|
||||||
}
|
}
|
||||||
tab_part_info->use_default_no_partitions= FALSE;
|
tab_part_info->use_default_no_partitions= FALSE;
|
||||||
|
tab_part_info->is_auto_partitioned= FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (alter_info->flags == ALTER_DROP_PARTITION)
|
else if (alter_info->flags == ALTER_DROP_PARTITION)
|
||||||
@ -4091,6 +4092,8 @@ that are reorganised.
|
|||||||
uint no_parts_dropped= alter_info->partition_names.elements;
|
uint no_parts_dropped= alter_info->partition_names.elements;
|
||||||
uint no_parts_found= 0;
|
uint no_parts_found= 0;
|
||||||
List_iterator<partition_element> part_it(tab_part_info->partitions);
|
List_iterator<partition_element> part_it(tab_part_info->partitions);
|
||||||
|
|
||||||
|
tab_part_info->is_auto_partitioned= FALSE;
|
||||||
if (!(tab_part_info->part_type == RANGE_PARTITION ||
|
if (!(tab_part_info->part_type == RANGE_PARTITION ||
|
||||||
tab_part_info->part_type == LIST_PARTITION))
|
tab_part_info->part_type == LIST_PARTITION))
|
||||||
{
|
{
|
||||||
@ -4275,7 +4278,10 @@ state of p1.
|
|||||||
tab_part_info->no_parts= no_parts_remain;
|
tab_part_info->no_parts= no_parts_remain;
|
||||||
}
|
}
|
||||||
if (!(alter_info->flags & ALTER_TABLE_REORG))
|
if (!(alter_info->flags & ALTER_TABLE_REORG))
|
||||||
|
{
|
||||||
tab_part_info->use_default_no_partitions= FALSE;
|
tab_part_info->use_default_no_partitions= FALSE;
|
||||||
|
tab_part_info->is_auto_partitioned= FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (alter_info->flags == ALTER_REORGANIZE_PARTITION)
|
else if (alter_info->flags == ALTER_REORGANIZE_PARTITION)
|
||||||
{
|
{
|
||||||
@ -4294,6 +4300,8 @@ state of p1.
|
|||||||
uint no_parts_new= thd->work_part_info->partitions.elements;
|
uint no_parts_new= thd->work_part_info->partitions.elements;
|
||||||
partition_info *alt_part_info= thd->work_part_info;
|
partition_info *alt_part_info= thd->work_part_info;
|
||||||
uint check_total_partitions;
|
uint check_total_partitions;
|
||||||
|
|
||||||
|
tab_part_info->is_auto_partitioned= FALSE;
|
||||||
if (no_parts_reorged > tab_part_info->no_parts)
|
if (no_parts_reorged > tab_part_info->no_parts)
|
||||||
{
|
{
|
||||||
my_error(ER_REORG_PARTITION_NOT_EXIST, MYF(0));
|
my_error(ER_REORG_PARTITION_NOT_EXIST, MYF(0));
|
||||||
@ -4534,7 +4542,22 @@ the generated partition syntax in a correct manner.
|
|||||||
Make sure change of engine happens to all partitions.
|
Make sure change of engine happens to all partitions.
|
||||||
*/
|
*/
|
||||||
DBUG_PRINT("info", ("partition changed"));
|
DBUG_PRINT("info", ("partition changed"));
|
||||||
set_engine_all_partitions(thd->work_part_info, create_info->db_type);
|
if (table->part_info->is_auto_partitioned)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
If the user originally didn't specify partitioning to be
|
||||||
|
used we can remove it now.
|
||||||
|
*/
|
||||||
|
thd->work_part_info= NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Ensure that all partitions have the proper engine set-up
|
||||||
|
*/
|
||||||
|
set_engine_all_partitions(thd->work_part_info,
|
||||||
|
create_info->db_type);
|
||||||
|
}
|
||||||
*partition_changed= TRUE;
|
*partition_changed= TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1286,6 +1286,7 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
|
|||||||
uint part_syntax_len;
|
uint part_syntax_len;
|
||||||
char *part_syntax;
|
char *part_syntax;
|
||||||
if (table->part_info &&
|
if (table->part_info &&
|
||||||
|
(!table->part_info->is_auto_partitioned) &&
|
||||||
((part_syntax= generate_partition_syntax(table->part_info,
|
((part_syntax= generate_partition_syntax(table->part_info,
|
||||||
&part_syntax_len,
|
&part_syntax_len,
|
||||||
FALSE,FALSE))))
|
FALSE,FALSE))))
|
||||||
|
@ -3078,6 +3078,7 @@ bool mysql_create_table_internal(THD *thd,
|
|||||||
}
|
}
|
||||||
file->set_auto_partitions(part_info);
|
file->set_auto_partitions(part_info);
|
||||||
part_info->default_engine_type= create_info->db_type;
|
part_info->default_engine_type= create_info->db_type;
|
||||||
|
part_info->is_auto_partitioned= TRUE;
|
||||||
}
|
}
|
||||||
if (part_info)
|
if (part_info)
|
||||||
{
|
{
|
||||||
|
11
sql/table.cc
11
sql/table.cc
@ -656,7 +656,6 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
|
|||||||
my_free(buff, MYF(0));
|
my_free(buff, MYF(0));
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
next_chunk++;
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (partition_info_len)
|
if (partition_info_len)
|
||||||
@ -680,7 +679,15 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
|
|||||||
*/
|
*/
|
||||||
next_chunk+= 4;
|
next_chunk+= 4;
|
||||||
}
|
}
|
||||||
|
else if (share->mysql_version >= 50110)
|
||||||
#endif
|
#endif
|
||||||
|
{
|
||||||
|
/* New auto_partitioned indicator introduced in 5.1.11 */
|
||||||
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
|
share->auto_partitioned= *next_chunk;
|
||||||
|
#endif
|
||||||
|
next_chunk++;
|
||||||
|
}
|
||||||
keyinfo= share->key_info;
|
keyinfo= share->key_info;
|
||||||
for (i= 0; i < keys; i++, keyinfo++)
|
for (i= 0; i < keys; i++, keyinfo++)
|
||||||
{
|
{
|
||||||
@ -1471,6 +1478,8 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias,
|
|||||||
Fix the partition functions and ensure they are not constant
|
Fix the partition functions and ensure they are not constant
|
||||||
functions
|
functions
|
||||||
*/
|
*/
|
||||||
|
outparam->part_info->is_auto_partitioned= share->auto_partitioned;
|
||||||
|
DBUG_PRINT("info", ("autopartitioned = %u", share->auto_partitioned));
|
||||||
if (fix_partition_func(thd, share->normalized_path.str, outparam,
|
if (fix_partition_func(thd, share->normalized_path.str, outparam,
|
||||||
is_create_table))
|
is_create_table))
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -214,6 +214,7 @@ typedef struct st_table_share
|
|||||||
*/
|
*/
|
||||||
bool log_table;
|
bool log_table;
|
||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
|
bool auto_partitioned;
|
||||||
const uchar *partition_info;
|
const uchar *partition_info;
|
||||||
uint partition_info_len;
|
uint partition_info_len;
|
||||||
const uchar *part_state;
|
const uchar *part_state;
|
||||||
|
@ -130,8 +130,14 @@ bool mysql_create_frm(THD *thd, const char *file_name,
|
|||||||
/* str_db_type */
|
/* str_db_type */
|
||||||
create_info->extra_size= (2 + str_db_type.length +
|
create_info->extra_size= (2 + str_db_type.length +
|
||||||
2 + create_info->connect_string.length);
|
2 + create_info->connect_string.length);
|
||||||
/* Partition */
|
/*
|
||||||
create_info->extra_size+= 9;
|
Partition:
|
||||||
|
Length of partition info = 4 byte
|
||||||
|
Potential NULL byte at end of partition info string = 1 byte
|
||||||
|
Indicator if auto-partitioned table = 1 byte
|
||||||
|
=> Total 6 byte
|
||||||
|
*/
|
||||||
|
create_info->extra_size+= 6;
|
||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
if (part_info)
|
if (part_info)
|
||||||
{
|
{
|
||||||
@ -203,17 +209,19 @@ bool mysql_create_frm(THD *thd, const char *file_name,
|
|||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
if (part_info)
|
if (part_info)
|
||||||
{
|
{
|
||||||
|
char auto_partitioned= part_info->is_auto_partitioned ? 1 : 0;
|
||||||
int4store(buff, part_info->part_info_len);
|
int4store(buff, part_info->part_info_len);
|
||||||
if (my_write(file, (const byte*)buff, 4, MYF_RW) ||
|
if (my_write(file, (const byte*)buff, 4, MYF_RW) ||
|
||||||
my_write(file, (const byte*)part_info->part_info_string,
|
my_write(file, (const byte*)part_info->part_info_string,
|
||||||
part_info->part_info_len + 1, MYF_RW))
|
part_info->part_info_len + 1, MYF_RW) ||
|
||||||
|
my_write(file, (const byte*)&auto_partitioned, 1, MYF_RW))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
bzero(buff, 9);
|
bzero(buff, 6);
|
||||||
if (my_write(file, (byte*) buff, 9, MYF_RW))
|
if (my_write(file, (byte*) buff, 6, MYF_RW))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
for (i= 0; i < keys; i++)
|
for (i= 0; i < keys; i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user