Commit 07487439 authored by unknown's avatar unknown

Merge mronstrom@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  zim.(none):/home/mikael/bug16370

parents 890eca75 ac4219fa
...@@ -6,26 +6,26 @@ Table Op Msg_type Msg_text ...@@ -6,26 +6,26 @@ Table Op Msg_type Msg_text
test.t4 backup error Failed copying .frm file (errno: X) test.t4 backup error Failed copying .frm file (errno: X)
test.t4 backup status Operation failed test.t4 backup status Operation failed
Warnings: Warnings:
Warning 1540 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/bogus/t4.frm' (Errcode: X) Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/bogus/t4.frm' (Errcode: X)
backup table t4 to '../tmp'; backup table t4 to '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t4 backup status OK test.t4 backup status OK
Warnings: Warnings:
Warning 1540 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
backup table t4 to '../tmp'; backup table t4 to '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t4 backup error Failed copying .frm file (errno: X) test.t4 backup error Failed copying .frm file (errno: X)
test.t4 backup status Operation failed test.t4 backup status Operation failed
Warnings: Warnings:
Warning 1540 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/tmp/t4.frm' (Errcode: X) Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/tmp/t4.frm' (Errcode: X)
drop table t4; drop table t4;
restore table t4 from '../tmp'; restore table t4 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t4 restore status OK test.t4 restore status OK
Warnings: Warnings:
Warning 1540 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
select count(*) from t4; select count(*) from t4;
count(*) count(*)
0 0
...@@ -35,19 +35,19 @@ backup table t1 to '../tmp'; ...@@ -35,19 +35,19 @@ backup table t1 to '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 backup status OK test.t1 backup status OK
Warnings: Warnings:
Warning 1540 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
drop table t1; drop table t1;
restore table t1 from '../bogus'; restore table t1 from '../bogus';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
t1 restore error Failed copying .frm file t1 restore error Failed copying .frm file
Warnings: Warnings:
Warning 1540 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X) Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X)
restore table t1 from '../tmp'; restore table t1 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 restore status OK test.t1 restore status OK
Warnings: Warnings:
Warning 1540 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
select n from t1; select n from t1;
n n
23 23
...@@ -62,7 +62,7 @@ Table Op Msg_type Msg_text ...@@ -62,7 +62,7 @@ Table Op Msg_type Msg_text
test.t2 backup status OK test.t2 backup status OK
test.t3 backup status OK test.t3 backup status OK
Warnings: Warnings:
Warning 1540 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
drop table t1,t2,t3; drop table t1,t2,t3;
restore table t1,t2,t3 from '../tmp'; restore table t1,t2,t3 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
...@@ -70,7 +70,7 @@ test.t1 restore status OK ...@@ -70,7 +70,7 @@ test.t1 restore status OK
test.t2 restore status OK test.t2 restore status OK
test.t3 restore status OK test.t3 restore status OK
Warnings: Warnings:
Warning 1540 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
select n from t1; select n from t1;
n n
23 23
...@@ -91,7 +91,7 @@ restore table t1 from '../tmp'; ...@@ -91,7 +91,7 @@ restore table t1 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 restore status OK test.t1 restore status OK
Warnings: Warnings:
Warning 1540 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
rename table t1 to t5; rename table t1 to t5;
lock tables t5 write; lock tables t5 write;
backup table t5 to '../tmp'; backup table t5 to '../tmp';
...@@ -99,5 +99,5 @@ unlock tables; ...@@ -99,5 +99,5 @@ unlock tables;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t5 backup status OK test.t5 backup status OK
Warnings: Warnings:
Warning 1540 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead. Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead.
drop table t5; drop table t5;
...@@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP ...@@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
SHOW WARNINGS; SHOW WARNINGS;
Level Code Message Level Code Message
Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
Error 1506 Failed to create LOGFILE GROUP Error 1507 Failed to create LOGFILE GROUP
CREATE LOGFILE GROUP lg1 CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat' ADD UNDOFILE 'undofile.dat'
INITIAL_SIZE 16M INITIAL_SIZE 16M
......
...@@ -89,3 +89,16 @@ ALTER TABLE t1 ...@@ -89,3 +89,16 @@ ALTER TABLE t1
PARTITION BY KEY(a) PARTITION BY KEY(a)
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
drop table t1; 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;
...@@ -428,6 +428,88 @@ partition by list (a) ...@@ -428,6 +428,88 @@ partition by list (a)
alter table t1 rebuild partition; alter table t1 rebuild partition;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
drop table t1; drop table t1;
create table t1 (a int)
partition by list (a)
(partition p0 values in (5));
insert into t1 values (0);
ERROR HY000: Table has no partition for value 0
drop table t1;
create table t1 (a int)
partition by range (a) subpartition by hash (a)
(partition p0 values less than (100));
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 HASH (a) (PARTITION p0 VALUES LESS THAN (100) )
alter table t1 add partition (partition p1 values less than (200)
(subpartition subpart21));
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 HASH (a) (PARTITION p0 VALUES LESS THAN (100) (SUBPARTITION p0sp0 ENGINE = MyISAM), PARTITION p1 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM))
drop table t1;
create table t1 (a int)
partition by key (a);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a)
alter table t1 add partition (partition p1);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM)
drop table t1;
create table t1 (a int, b int)
partition by range (a)
subpartition by hash(a)
(partition p0 values less than (0) (subpartition sp0),
partition p1 values less than (1));
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near ')' at line 5
create table t1 (a int, b int)
partition by range (a)
subpartition by hash(a)
(partition p0 values less than (0),
partition p1 values less than (1) (subpartition sp0));
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '))' at line 5
create table t1 (a int)
partition by hash (a)
(partition p0 (subpartition sp0));
ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning
create table t1 (a int)
partition by range (a)
(partition p0 values less than (1));
alter table t1 add partition (partition p1 values in (2));
ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition
alter table t1 add partition (partition p1);
ERROR HY000: RANGE PARTITIONING requires definition of VALUES LESS THAN for each partition
drop table t1;
create table t1 (a int)
partition by list (a)
(partition p0 values in (1));
alter table t1 add partition (partition p1 values less than (2));
ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition
alter table t1 add partition (partition p1);
ERROR HY000: LIST PARTITIONING requires definition of VALUES IN for each partition
drop table t1;
create table t1 (a int)
partition by hash (a)
(partition p0);
alter table t1 add partition (partition p1 values less than (2));
ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition
alter table t1 add partition (partition p1 values in (2));
ERROR HY000: Only LIST PARTITIONING can use VALUES IN in partition definition
drop table t1;
create table t1 (a int)
partition by list (a)
(partition p0 values in (1));
alter table t1 rebuild partition;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
drop table t1;
create table t1 (a int) engine=innodb partition by hash(a) ; create table t1 (a int) engine=innodb partition by hash(a) ;
show table status like 't1'; show table status like 't1';
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 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
......
...@@ -141,7 +141,9 @@ DROP TABLE t1; ...@@ -141,7 +141,9 @@ DROP TABLE t1;
CREATE TABLE t1 (a INT) PARTITION BY HASH(a); CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
ALTER TABLE t1 ADD PARTITION PARTITIONS 4; ALTER TABLE t1 ADD PARTITION PARTITIONS 4;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (s1 int, s2 int) PARTITION BY LIST (s1) ( CREATE TABLE t1 (s1 int, s2 int)
PARTITION BY LIST (s1)
SUBPARTITION BY KEY (s2) (
PARTITION p1 VALUES IN (0) (SUBPARTITION p1b), PARTITION p1 VALUES IN (0) (SUBPARTITION p1b),
PARTITION p2 VALUES IN (2) (SUBPARTITION p1b) PARTITION p2 VALUES IN (2) (SUBPARTITION p1b)
); );
......
...@@ -319,7 +319,7 @@ use db_bug7787; ...@@ -319,7 +319,7 @@ use db_bug7787;
CREATE PROCEDURE p1() CREATE PROCEDURE p1()
SHOW INNODB STATUS; SHOW INNODB STATUS;
Warnings: Warnings:
Warning 1540 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead. Warning 1541 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead.
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost; GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost;
DROP DATABASE db_bug7787; DROP DATABASE db_bug7787;
use test; use test;
......
...@@ -100,13 +100,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6), ...@@ -100,13 +100,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12), t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
t14 timestamp(14)); t14 timestamp(14));
Warnings: Warnings:
Warning 1540 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
Warning 1540 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
Warning 1540 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
Warning 1540 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
Warning 1540 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
Warning 1540 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
Warning 1540 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead. Warning 1541 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead.
insert t1 values (0,0,0,0,0,0,0), insert t1 values (0,0,0,0,0,0,0),
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", ("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
......
...@@ -168,7 +168,7 @@ max_error_count 10 ...@@ -168,7 +168,7 @@ max_error_count 10
drop table t1; drop table t1;
set table_type=MYISAM; set table_type=MYISAM;
Warnings: Warnings:
Warning 1540 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead. Warning 1541 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead.
create table t1 (a int); create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc'; update t1 set a='abc';
......
...@@ -63,10 +63,10 @@ flush logs; ...@@ -63,10 +63,10 @@ flush logs;
# check locking of the log tables # check locking of the log tables
# #
--error 1532 --error 1533
lock tables mysql.general_log WRITE; lock tables mysql.general_log WRITE;
--error 1532 --error 1533
lock tables mysql.slow_log WRITE; lock tables mysql.slow_log WRITE;
# #
...@@ -75,10 +75,10 @@ lock tables mysql.slow_log WRITE; ...@@ -75,10 +75,10 @@ lock tables mysql.slow_log WRITE;
# tables are always opened and locked by the logger. # tables are always opened and locked by the logger.
# #
--error 1533 --error 1534
lock tables mysql.general_log READ; lock tables mysql.general_log READ;
--error 1533 --error 1534
lock tables mysql.slow_log READ; lock tables mysql.slow_log READ;
# #
......
...@@ -66,6 +66,6 @@ partition by list(a) ...@@ -66,6 +66,6 @@ partition by list(a)
partitions 2 partitions 2
(partition x123 values in (11, 12), (partition x123 values in (11, 12),
partition x234 values in (5, 1)); partition x234 values in (5, 1));
--error 1504 --error 1505
insert into t1 values (NULL,1,1); insert into t1 values (NULL,1,1);
drop table t1; drop table t1;
...@@ -79,3 +79,32 @@ PARTITION BY KEY(a) ...@@ -79,3 +79,32 @@ PARTITION BY KEY(a)
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB); (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
drop table t1; drop table t1;
#
# BUG 16810 Out of memory when coalesce partition
#
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;
let $j= 11;
--disable_query_log
while ($j)
{
eval INSERT INTO t1 VALUES (NULL, "Tested Remotely from Texas, USA", $j,
b'0',
$j.00,"By JBM $j","2006-01-26");
dec $j;
}
--enable_query_log
ALTER TABLE t1 COALESCE PARTITION 4;
DROP TABLE t1;
...@@ -504,14 +504,14 @@ from information_schema.partitions where table_schema ='test'; ...@@ -504,14 +504,14 @@ from information_schema.partitions where table_schema ='test';
drop table t1; drop table t1;
# NULL for LIST partition # NULL for LIST partition
--error 1473 --error ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
create table t1 (a int,b int, c int) create table t1 (a int,b int, c int)
partition by list(a) partition by list(a)
partitions 2 partitions 2
(partition x123 values in (11,12), (partition x123 values in (11,12),
partition x234 values in (1 ,NULL, NULL)); partition x234 values in (1 ,NULL, NULL));
--error 1473 --error ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
create table t1 (a int,b int, c int) create table t1 (a int,b int, c int)
partition by list(a) partition by list(a)
partitions 2 partitions 2
...@@ -523,7 +523,7 @@ partition by list(a) ...@@ -523,7 +523,7 @@ partition by list(a)
partitions 2 partitions 2
(partition x123 values in (11, 12), (partition x123 values in (11, 12),
partition x234 values in (5, 1)); partition x234 values in (5, 1));
--error 1504 --error ER_NO_PARTITION_FOR_GIVEN_VALUE
insert into t1 values (NULL,1,1); insert into t1 values (NULL,1,1);
drop table t1; drop table t1;
...@@ -552,6 +552,115 @@ alter table t1 rebuild partition; ...@@ -552,6 +552,115 @@ alter table t1 rebuild partition;
drop table t1; drop table t1;
#
# BUG 15253 Insert that should fail doesn't
#
create table t1 (a int)
partition by list (a)
(partition p0 values in (5));
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
insert into t1 values (0);
drop table t1;
#
# BUG #16370 Subpartitions names not shown in SHOW CREATE TABLE output
#
create table t1 (a int)
partition by range (a) subpartition by hash (a)
(partition p0 values less than (100));
show create table t1;
alter table t1 add partition (partition p1 values less than (200)
(subpartition subpart21));
show create table t1;
drop table t1;
create table t1 (a int)
partition by key (a);
show create table t1;
alter table t1 add partition (partition p1);
show create table t1;
drop table t1;
#
# BUG 15407 Crash with subpartition
#
--error 1064
create table t1 (a int, b int)
partition by range (a)
subpartition by hash(a)
(partition p0 values less than (0) (subpartition sp0),
partition p1 values less than (1));
--error 1064
create table t1 (a int, b int)
partition by range (a)
subpartition by hash(a)
(partition p0 values less than (0),
partition p1 values less than (1) (subpartition sp0));
#
# BUG 15961 No error when subpartition defined without subpartition by clause
#
--error ER_SUBPARTITION_ERROR
create table t1 (a int)
partition by hash (a)
(partition p0 (subpartition sp0));
#
# Bug 17127
#
create table t1 (a int)
partition by range (a)
(partition p0 values less than (1));
--error ER_PARTITION_WRONG_VALUES_ERROR
alter table t1 add partition (partition p1 values in (2));
--error ER_PARTITION_REQUIRES_VALUES_ERROR
alter table t1 add partition (partition p1);
drop table t1;
create table t1 (a int)
partition by list (a)
(partition p0 values in (1));
--error ER_PARTITION_WRONG_VALUES_ERROR
alter table t1 add partition (partition p1 values less than (2));
--error ER_PARTITION_REQUIRES_VALUES_ERROR
alter table t1 add partition (partition p1);
drop table t1;
create table t1 (a int)
partition by hash (a)
(partition p0);
--error ER_PARTITION_WRONG_VALUES_ERROR
alter table t1 add partition (partition p1 values less than (2));
--error ER_PARTITION_WRONG_VALUES_ERROR
alter table t1 add partition (partition p1 values in (2));
drop table t1;
#
# BUG 17947 Crash with REBUILD PARTITION
#
create table t1 (a int)
partition by list (a)
(partition p0 values in (1));
--error 1064
alter table t1 rebuild partition;
drop table t1;
# #
# Bug #14673: Wrong InnoDB default row format # Bug #14673: Wrong InnoDB default row format
# #
......
...@@ -205,7 +205,9 @@ DROP TABLE t1; ...@@ -205,7 +205,9 @@ DROP TABLE t1;
#BUG 15408: Partitions: subpartition names are not unique #BUG 15408: Partitions: subpartition names are not unique
# #
--error ER_SAME_NAME_PARTITION --error ER_SAME_NAME_PARTITION
CREATE TABLE t1 (s1 int, s2 int) PARTITION BY LIST (s1) ( CREATE TABLE t1 (s1 int, s2 int)
PARTITION BY LIST (s1)
SUBPARTITION BY KEY (s2) (
PARTITION p1 VALUES IN (0) (SUBPARTITION p1b), PARTITION p1 VALUES IN (0) (SUBPARTITION p1b),
PARTITION p2 VALUES IN (2) (SUBPARTITION p1b) PARTITION p2 VALUES IN (2) (SUBPARTITION p1b)
); );
...@@ -5614,6 +5614,10 @@ ER_PARTITION_MAXVALUE_ERROR ...@@ -5614,6 +5614,10 @@ ER_PARTITION_MAXVALUE_ERROR
ER_PARTITION_SUBPARTITION_ERROR ER_PARTITION_SUBPARTITION_ERROR
eng "Subpartitions can only be hash partitions and by key" eng "Subpartitions can only be hash partitions and by key"
swe "Subpartitioner kan bara vara hash och key partitioner" swe "Subpartitioner kan bara vara hash och key partitioner"
ER_PARTITION_SUBPART_MIX_ERROR
eng "Must define subpartitions on all partitions if on one partition"
swe "Subpartitioner måste definieras på alla partitioner om på en"
ER_PARTITION_WRONG_NO_PART_ERROR ER_PARTITION_WRONG_NO_PART_ERROR
eng "Wrong number of partitions defined, mismatch with previous setting" eng "Wrong number of partitions defined, mismatch with previous setting"
swe "Antal partitioner definierade och antal partitioner r inte lika" swe "Antal partitioner definierade och antal partitioner r inte lika"
......
...@@ -692,6 +692,13 @@ bool check_partition_info(partition_info *part_info,handlerton **eng_type, ...@@ -692,6 +692,13 @@ bool check_partition_info(partition_info *part_info,handlerton **eng_type,
char *same_name; char *same_name;
DBUG_ENTER("check_partition_info"); DBUG_ENTER("check_partition_info");
if (unlikely(!part_info->is_sub_partitioned() &&
!(part_info->use_default_subpartitions &&
part_info->use_default_no_subpartitions)))
{
my_error(ER_SUBPARTITION_ERROR, MYF(0));
goto end;
}
if (unlikely(part_info->is_sub_partitioned() && if (unlikely(part_info->is_sub_partitioned() &&
(!(part_info->part_type == RANGE_PARTITION || (!(part_info->part_type == RANGE_PARTITION ||
part_info->part_type == LIST_PARTITION)))) part_info->part_type == LIST_PARTITION))))
...@@ -4078,6 +4085,7 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info, ...@@ -4078,6 +4085,7 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info,
ALTER_REPAIR_PARTITION | ALTER_REBUILD_PARTITION)) ALTER_REPAIR_PARTITION | ALTER_REBUILD_PARTITION))
{ {
partition_info *tab_part_info= table->part_info; partition_info *tab_part_info= table->part_info;
partition_info *alt_part_info= thd->lex->part_info;
uint flags= 0; uint flags= 0;
if (!tab_part_info) if (!tab_part_info)
{ {
...@@ -4135,6 +4143,35 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info, ...@@ -4135,6 +4143,35 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info,
((flags & (HA_FAST_CHANGE_PARTITION | HA_PARTITION_ONE_PHASE)) != 0); ((flags & (HA_FAST_CHANGE_PARTITION | HA_PARTITION_ONE_PHASE)) != 0);
DBUG_PRINT("info", ("*fast_alter_partition: %d flags: 0x%x", DBUG_PRINT("info", ("*fast_alter_partition: %d flags: 0x%x",
*fast_alter_partition, flags)); *fast_alter_partition, flags));
if (((alter_info->flags & ALTER_ADD_PARTITION) ||
(alter_info->flags & ALTER_REORGANIZE_PARTITION)) &&
(thd->lex->part_info->part_type != tab_part_info->part_type) &&
(thd->lex->part_info->part_type != NOT_A_PARTITION))
{
if (thd->lex->part_info->part_type == RANGE_PARTITION)
{
my_error(ER_PARTITION_WRONG_VALUES_ERROR, MYF(0),
"RANGE", "LESS THAN");
}
else if (thd->lex->part_info->part_type == LIST_PARTITION)
{
DBUG_ASSERT(thd->lex->part_info->part_type == LIST_PARTITION);
my_error(ER_PARTITION_WRONG_VALUES_ERROR, MYF(0),
"LIST", "IN");
}
else if (tab_part_info->part_type == RANGE_PARTITION)
{
my_error(ER_PARTITION_REQUIRES_VALUES_ERROR, MYF(0),
"RANGE", "LESS THAN");
}
else
{
DBUG_ASSERT(tab_part_info->part_type == LIST_PARTITION);
my_error(ER_PARTITION_REQUIRES_VALUES_ERROR, MYF(0),
"LIST", "IN");
}
DBUG_RETURN(TRUE);
}
if (alter_info->flags & ALTER_ADD_PARTITION) if (alter_info->flags & ALTER_ADD_PARTITION)
{ {
/* /*
...@@ -4143,7 +4180,6 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info, ...@@ -4143,7 +4180,6 @@ uint prep_alter_part_table(THD *thd, TABLE *table, ALTER_INFO *alter_info,
partitioning scheme as currently set-up. partitioning scheme as currently set-up.
Partitions are always added at the end in ADD PARTITION. Partitions are always added at the end in ADD PARTITION.
*/ */
partition_info *alt_part_info= thd->lex->part_info;
uint no_new_partitions= alt_part_info->no_parts; uint no_new_partitions= alt_part_info->no_parts;
uint no_orig_partitions= tab_part_info->no_parts; uint no_orig_partitions= tab_part_info->no_parts;
uint check_total_partitions= no_new_partitions + no_orig_partitions; uint check_total_partitions= no_new_partitions + no_orig_partitions;
...@@ -4738,6 +4774,12 @@ the generated partition syntax in a correct manner. ...@@ -4738,6 +4774,12 @@ the generated partition syntax in a correct manner.
if (alter_info->flags == ALTER_ADD_PARTITION || if (alter_info->flags == ALTER_ADD_PARTITION ||
alter_info->flags == ALTER_REORGANIZE_PARTITION) alter_info->flags == ALTER_REORGANIZE_PARTITION)
{ {
if (tab_part_info->use_default_subpartitions &&
!alt_part_info->use_default_subpartitions)
{
tab_part_info->use_default_subpartitions= FALSE;
tab_part_info->use_default_no_subpartitions= FALSE;
}
if (check_partition_info(tab_part_info, (handlerton**)NULL, if (check_partition_info(tab_part_info, (handlerton**)NULL,
table->file, ULL(0))) table->file, ULL(0)))
{ {
......
...@@ -3663,6 +3663,8 @@ opt_part_values: ...@@ -3663,6 +3663,8 @@ opt_part_values:
YYABORT; YYABORT;
} }
} }
else
lex->part_info->part_type= HASH_PARTITION;
} }
| VALUES LESS_SYM THAN_SYM part_func_max | VALUES LESS_SYM THAN_SYM part_func_max
{ {
...@@ -3676,6 +3678,8 @@ opt_part_values: ...@@ -3676,6 +3678,8 @@ opt_part_values:
YYABORT; YYABORT;
} }
} }
else
lex->part_info->part_type= RANGE_PARTITION;
} }
| VALUES IN_SYM '(' part_list_func ')' | VALUES IN_SYM '(' part_list_func ')'
{ {
...@@ -3689,6 +3693,8 @@ opt_part_values: ...@@ -3689,6 +3693,8 @@ opt_part_values:
YYABORT; YYABORT;
} }
} }
else
lex->part_info->part_type= LIST_PARTITION;
} }
; ;
...@@ -3793,7 +3799,15 @@ part_bit_expr: ...@@ -3793,7 +3799,15 @@ part_bit_expr:
; ;
opt_sub_partition: opt_sub_partition:
/* empty */ {} /* empty */
{
if (Lex->part_info->no_subparts != 0 &&
!Lex->part_info->use_default_subpartitions)
{
yyerror(ER(ER_PARTITION_WRONG_NO_SUBPART_ERROR));
YYABORT;
}
}
| '(' sub_part_list ')' | '(' sub_part_list ')'
{ {
LEX *lex= Lex; LEX *lex= Lex;
...@@ -3809,6 +3823,11 @@ opt_sub_partition: ...@@ -3809,6 +3823,11 @@ opt_sub_partition:
} }
else if (part_info->count_curr_subparts > 0) else if (part_info->count_curr_subparts > 0)
{ {
if (part_info->partitions.elements > 1)
{
yyerror(ER(ER_PARTITION_WRONG_NO_SUBPART_ERROR));
YYABORT;
}
part_info->no_subparts= part_info->count_curr_subparts; part_info->no_subparts= part_info->count_curr_subparts;
} }
part_info->count_curr_subparts= 0; part_info->count_curr_subparts= 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment