mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 20:07:13 +02:00
Problem was that the mix of handlers was not consistent between
CREATE and ALTER
changed so that it works like:
- All partitions must use the same engine
AND it must be the same as the table.
- if one does NOT specify an engine on the table level
then one must either NOT specify any engine on any
partition/subpartition OR for ALL partitions/subpartitions
Note: that after a table have been created, the storage engine
is specified for all parts of the table (table/partition/subpartition)
and so when using alter, one does not need to specify it (unless one
wants to change the storage engine, then one have to specify it on the
table level)
mysql-test/r/partition.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/r/partition_innodb.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case update
mysql-test/suite/parts/inc/partition_engine.inc:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
mysql-test/suite/parts/r/ndb_partition_key.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/parts/r/partition_engine_innodb.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/parts/r/partition_engine_myisam.result:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test result updated
mysql-test/suite/parts/t/ndb_partition_key.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
mysql-test/t/partition.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
mysql-test/t/partition_innodb.test:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
test case updated
sql/partition_info.cc:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
moved the check_engine_condition here from sql_partition.cc
created a new check_engine_mix from check_native_partitioned in
sql_partition.cc
sql/partition_info.h:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
non static function check_engine_mix (now used in sql_partition.cc)
sql/sql_partition.cc:
Bug#31931 Partitions: unjustified 'mix of handlers' error message
moved check_engine_condition to partition_info.cc and moved out some
common code in check_native_partitioned to check_engine_mix in
partition_info.cc
206 lines
5.9 KiB
Text
206 lines
5.9 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1 (a int, b int, c int, d int, PRIMARY KEY(a,b,c))
|
|
ENGINE = NDB
|
|
PARTITION BY KEY (a,b);
|
|
insert into t1 values (1,1,1,1);
|
|
select * from t1;
|
|
a b c d
|
|
1 1 1 1
|
|
update t1 set d = 2 where a = 1 and b = 1 and c = 1;
|
|
select * from t1;
|
|
a b c d
|
|
1 1 1 2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c d
|
|
drop table t1;
|
|
CREATE TABLE t1 (a int, b int, c int, d int, PRIMARY KEY(a,b))
|
|
ENGINE = NDB
|
|
PARTITION BY KEY (c);
|
|
ERROR HY000: A PRIMARY KEY must include all columns in the table's partitioning function
|
|
CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY(a,b))
|
|
ENGINE = NDB
|
|
PARTITION BY KEY (a);
|
|
insert into t1 values
|
|
(1,1,3),(1,2,3),(1,3,3),(1,4,3),(1,5,3),(1,6,3),
|
|
(1,7,3),(1,8,3),(1,9,3),(1,10,3),(1,11,3),(1,12,3);
|
|
select * from t1 order by b;
|
|
a b c
|
|
1 1 3
|
|
1 2 3
|
|
1 3 3
|
|
1 4 3
|
|
1 5 3
|
|
1 6 3
|
|
1 7 3
|
|
1 8 3
|
|
1 9 3
|
|
1 10 3
|
|
1 11 3
|
|
1 12 3
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a INT, b CHAR(10) COLLATE latin1_bin, c INT, d INT,
|
|
PRIMARY KEY (a,b,c) USING HASH)
|
|
ENGINE=NDB
|
|
DEFAULT CHARSET=latin1
|
|
PARTITION BY KEY (b);
|
|
insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1);
|
|
-- t1 --
|
|
|
|
Fragment type: 5
|
|
K Value: 6
|
|
Min load factor: 78
|
|
Max load factor: 80
|
|
Temporary table: no
|
|
Number of attributes: 4
|
|
Number of primary keys: 3
|
|
Length of frm data: #
|
|
Row Checksum: 1
|
|
Row GCI: 1
|
|
SingleUserMode: 0
|
|
ForceVarPart: 1
|
|
TableStatus: Retrieved
|
|
-- Attributes --
|
|
a Int PRIMARY KEY AT=FIXED ST=MEMORY
|
|
b Char(10;latin1_bin) PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
|
|
c Int PRIMARY KEY AT=FIXED ST=MEMORY
|
|
d Int NULL AT=FIXED ST=MEMORY
|
|
|
|
-- Indexes --
|
|
PRIMARY KEY(a, b, c) - UniqueHashIndex
|
|
|
|
|
|
NDBT_ProgramExit: 0 - OK
|
|
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL DEFAULT '0',
|
|
`b` char(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
|
|
`c` int(11) NOT NULL DEFAULT '0',
|
|
`d` int(11) DEFAULT NULL,
|
|
PRIMARY KEY (`a`,`b`,`c`) USING HASH
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (b) */
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a int not null primary key)
|
|
PARTITION BY KEY(a)
|
|
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
|
drop table t1;
|
|
CREATE TABLE t1 (a int not null primary key);
|
|
ALTER TABLE t1
|
|
ENGINE = NDB
|
|
PARTITION BY KEY(a)
|
|
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
|
drop table t1;
|
|
CREATE TABLE t1 (a int not null primary key) ENGINE = NDB;
|
|
ALTER TABLE t1
|
|
PARTITION BY KEY(a)
|
|
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
|
drop table t1;
|
|
create table t1 (a int)
|
|
engine=ndb
|
|
partition by key(a)
|
|
(partition p0, partition p1);
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */
|
|
alter table t1 engine=heap;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MEMORY, PARTITION p1 ENGINE = MEMORY) */
|
|
alter table t1 engine=ndb;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */
|
|
alter table t1 engine=heap remove partitioning;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1
|
|
alter table t1 engine=ndb
|
|
partition by key(a)
|
|
(partition p0, partition p1 engine = ndb);
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */
|
|
alter table t1
|
|
partition by key (a)
|
|
(partition p0 engine=ndb, partition p1 engine=ndb);
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */
|
|
alter table t1 remove partitioning;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
|
alter table t1
|
|
partition by key(a)
|
|
(partition p0 engine=ndb, partition p1);
|
|
alter table t1
|
|
engine=ndb
|
|
partition by key(a)
|
|
(partition p0 engine=ndb, partition p1 engine = ndb);
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION p0 ENGINE = ndbcluster, PARTITION p1 ENGINE = ndbcluster) */
|
|
drop table t1;
|
|
CREATE TABLE t1 (
|
|
c1 MEDIUMINT NOT NULL AUTO_INCREMENT,
|
|
c2 TEXT NOT NULL,
|
|
c3 INT NOT NULL,
|
|
c4 BIT NOT NULL,
|
|
c5 FLOAT,
|
|
c6 VARCHAR(255),
|
|
c7 TIMESTAMP,
|
|
PRIMARY KEY(c1,c3))
|
|
ENGINE=NDB
|
|
PARTITION BY KEY(c3) PARTITIONS 5;
|
|
ALTER TABLE t1 COALESCE PARTITION 4;
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a int primary key)
|
|
ENGINE=NDB
|
|
PARTITION BY KEY(a);
|
|
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
|
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
ALTER TABLE t1 CHECK PARTITION p0;
|
|
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
ALTER TABLE t1 REPAIR PARTITION p0;
|
|
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
ALTER TABLE t1 ANALYZE PARTITION p0;
|
|
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
ALTER TABLE t1 REBUILD PARTITION p0;
|
|
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (
|
|
c1 MEDIUMINT NOT NULL AUTO_INCREMENT,
|
|
c2 TEXT NOT NULL,
|
|
c3 INT NOT NULL,
|
|
PRIMARY KEY(c1,c3))
|
|
ENGINE=NDB
|
|
PARTITION BY KEY(c3) PARTITIONS 5;
|
|
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (
|
|
c1 MEDIUMINT NOT NULL AUTO_INCREMENT,
|
|
c2 TEXT NOT NULL,
|
|
c3 INT NOT NULL,
|
|
PRIMARY KEY(c1,c3))
|
|
ENGINE=NDB
|
|
PARTITION BY KEY(c3);
|
|
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
|
DROP TABLE t1;
|