Merge remote-tracking branch '5.5' into 10.0
This commit is contained in:
commit
042f763268
@ -221,21 +221,11 @@ NULL
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Start of 5.3 tests
|
||||
#
|
||||
#
|
||||
# MDEV-4512 Valgrind warnings in my_long10_to_str_8bit on INTERVAL and DATE_ADD with incorrect types
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (10),(11);
|
||||
SELECT INTERVAL( 9, 1, DATE_ADD( pk, INTERVAL pk MINUTE_SECOND ), 9, 8, 3, 5, 2, 1 ) FROM t1;
|
||||
INTERVAL( 9, 1, DATE_ADD( pk, INTERVAL pk MINUTE_SECOND ), 9, 8, 3, 5, 2, 1 )
|
||||
8
|
||||
8
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '10'
|
||||
Warning 1292 Incorrect datetime value: '11'
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 5.3 tests
|
||||
# MDEV-14596 Crash in INTERVAL(ROW(..),ROW(..))
|
||||
#
|
||||
SELECT INTERVAL(ROW(1,1),ROW(1,2));
|
||||
ERROR 21000: Operand should contain 1 column(s)
|
||||
SELECT INTERVAL(1,ROW(1,2));
|
||||
ERROR 21000: Operand should contain 1 column(s)
|
||||
SELECT INTERVAL(ROW(1,2),1);
|
||||
ERROR 21000: Operand should contain 1 column(s)
|
||||
|
@ -2558,6 +2558,31 @@ create table t2 (c1 int, c2 int);
|
||||
select t1.c1 as c1, t2.c2 as c1 from t1, t2 where t1.c1 < 20 and t2.c2 > 5 group by t1.c1, t2.c2 having t1.c1 < 3;
|
||||
c1 c1
|
||||
drop table t1, t2;
|
||||
SET @old_sort_buff_size = @@sort_buffer_size;
|
||||
SET @@sort_buffer_size=256*1024;
|
||||
CREATE TABLE t1 (c INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(2011),(1977),(1982),(2027),(2023),(NULL),(NULL),(2004),(1974),(2032),
|
||||
(1993),(NULL),(1995),(2034),(NULL),(2009),(1900),(NULL),(2025),(1900),
|
||||
(2033),(1900),(2012),(NULL),(2009),(1992),(1974),(1974),(2012),(2028),
|
||||
(2007),(2012),(1900),(1983),(1900),(2010),(1987),(1994),(1981),(2032),
|
||||
(2010),(1989),(2014),(1900),(1900),(1976),(1978),(2007),(2030),(NULL),
|
||||
(2002),(1997),(1900),(NULL),(2000),(2027),(1975),(2026),(1975),(2026),
|
||||
(2029),(1977),(1900),(1900),(2031),(1993),(1986),(2012),(1979),(2013),
|
||||
(1994),(2014),(2025),(2006),(1971),(1974),(2021),(2011),(NULL),(1991),
|
||||
(2001),(1977),(2023),(2012),(1900),(1978),(1998),(NULL),(1988),(1999),
|
||||
(2017),(2008),(1976),(1900),(2005),(2030),(2023),(1900),(1978),(1990),
|
||||
(1978),(1987),(2030),(1900),(2034),(2006),(2015),(2001),(2019),(2024),
|
||||
(2030),(1989),(1997),(2007),(2023),(1994),(1971),(2011),(2011),(2015),
|
||||
(1984),(1978),(1979),(1989),(2008),(2030);
|
||||
SELECT ExtractValue('<a></a>','/a') AS f1, SPACE(c) AS f2 FROM t1 GROUP BY f1, f2 WITH ROLLUP;
|
||||
f1 f2
|
||||
NULL
|
||||
|
||||
NULL
|
||||
NULL NULL
|
||||
SET @@sort_buffer_size = @old_sort_buff_size;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #58782
|
||||
# Missing rows with SELECT .. WHERE .. IN subquery
|
||||
|
@ -698,6 +698,21 @@ id column_1
|
||||
expected -- 1 row(s) returned not ER_BAD_FIELD_ERROR
|
||||
drop table t1;
|
||||
#
|
||||
# mdev-14368: grouping query with alias for aggregate function in HAVING
|
||||
# when sql_mode = 'ONLY_FULL_GROUP_BY'
|
||||
set @save_sql_mode= @@sql_mode;
|
||||
set sql_mode = 'ONLY_FULL_GROUP_BY';
|
||||
create table t1(a int);
|
||||
insert t1 values (4),(1),(2),(1), (3),(4);
|
||||
SELECT a, COUNT(a) as ct FROM t1 GROUP BY a HAVING ct>0;
|
||||
a ct
|
||||
1 2
|
||||
2 1
|
||||
3 1
|
||||
4 2
|
||||
set sql_mode=@save_sql_mode;
|
||||
drop table t1;
|
||||
#
|
||||
# Bug mdev-5160: two-way join with HAVING over the second table
|
||||
#
|
||||
CREATE TABLE t1 (c1 varchar(6)) ENGINE=MyISAM;
|
||||
|
@ -2342,5 +2342,18 @@ Warnings:
|
||||
Note 1003 select `test`.`t1`.`col1` AS `col1`,`test`.`t2`.`col1` AS `col1`,`test`.`t2`.`col3` AS `col3` from `test`.`t1` left join `test`.`t2` on((`test`.`t2`.`col2` = `test`.`t1`.`col1`)) where (`f1`(`test`.`t2`.`col3`,0) = 0)
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-10397: Server crashes in key_copy with join_cache_level > 2 and join on BIT fields
|
||||
#
|
||||
CREATE TABLE t1 (b1 BIT NOT NULL);
|
||||
INSERT INTO t1 VALUES (0),(1);
|
||||
CREATE TABLE t2 (b2 BIT NOT NULL);
|
||||
INSERT INTO t2 VALUES (0),(1);
|
||||
SET SESSION JOIN_CACHE_LEVEL = 3;
|
||||
SELECT t1.b1+'0' , t2.b2 + '0' FROM t1 LEFT JOIN t2 ON b1 = b2;
|
||||
t1.b1+'0' t2.b2 + '0'
|
||||
0 0
|
||||
1 1
|
||||
DROP TABLE t1, t2;
|
||||
# end of 5.5 tests
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -2353,6 +2353,19 @@ Warnings:
|
||||
Note 1003 select `test`.`t1`.`col1` AS `col1`,`test`.`t2`.`col1` AS `col1`,`test`.`t2`.`col3` AS `col3` from `test`.`t1` left join `test`.`t2` on((`test`.`t2`.`col2` = `test`.`t1`.`col1`)) where (`f1`(`test`.`t2`.`col3`,0) = 0)
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-10397: Server crashes in key_copy with join_cache_level > 2 and join on BIT fields
|
||||
#
|
||||
CREATE TABLE t1 (b1 BIT NOT NULL);
|
||||
INSERT INTO t1 VALUES (0),(1);
|
||||
CREATE TABLE t2 (b2 BIT NOT NULL);
|
||||
INSERT INTO t2 VALUES (0),(1);
|
||||
SET SESSION JOIN_CACHE_LEVEL = 3;
|
||||
SELECT t1.b1+'0' , t2.b2 + '0' FROM t1 LEFT JOIN t2 ON b1 = b2;
|
||||
t1.b1+'0' t2.b2 + '0'
|
||||
0 0
|
||||
1 1
|
||||
DROP TABLE t1, t2;
|
||||
# end of 5.5 tests
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
set join_cache_level=default;
|
||||
|
@ -5630,6 +5630,20 @@ PREPARE stmt FROM 'REPLACE INTO v2 SELECT a FROM t3';
|
||||
ERROR HY000: Can not insert into join view 'test.v2' without fields list
|
||||
drop view v1,v2;
|
||||
drop table t3;
|
||||
#
|
||||
# MDEV-14619: VIEW and GROUP_CONCAT
|
||||
#
|
||||
CREATE TABLE t1 (str text);
|
||||
INSERT INTO t1 VALUES ("My"),("SQL");
|
||||
CREATE VIEW v1 AS SELECT GROUP_CONCAT(str SEPARATOR '\\') FROM t1;
|
||||
SELECT * FROM v1;
|
||||
GROUP_CONCAT(str SEPARATOR '\\')
|
||||
My\SQL
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select group_concat(`t1`.`str` separator '\\') AS `GROUP_CONCAT(str SEPARATOR '\\')` from `t1` latin1 latin1_swedish_ci
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.5 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
37
mysql-test/suite/parts/inc/part_alter_values.inc
Normal file
37
mysql-test/suite/parts/inc/part_alter_values.inc
Normal file
@ -0,0 +1,37 @@
|
||||
--echo #
|
||||
--echo # MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
||||
--echo #
|
||||
|
||||
--eval CREATE TABLE t1 (i INT) ENGINE=$engine PARTITION BY LIST(i) (PARTITION p0 VALUES IN (1), PARTITION p1 VALUES IN (2));
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Cleanup
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13788 Server crash when issuing bad SQL partition syntax
|
||||
--echo #
|
||||
|
||||
--eval CREATE TABLE t1 (id int, d date) ENGINE=$engine PARTITION BY RANGE COLUMNS(d) (PARTITION p1 VALUES LESS THAN (MAXVALUE))
|
||||
SHOW CREATE TABLE t1;
|
||||
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--eval CREATE TABLE t1 (id int, d date) ENGINE=$engine PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1,2,3))
|
||||
SHOW CREATE TABLE t1;
|
||||
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES IN (4,5,6)
|
||||
);
|
||||
DROP TABLE t1;
|
49
mysql-test/suite/parts/r/partition_alter_innodb.result
Normal file
49
mysql-test/suite/parts/r/partition_alter_innodb.result
Normal file
@ -0,0 +1,49 @@
|
||||
#
|
||||
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
||||
#
|
||||
CREATE TABLE t1 (i INT) ENGINE=InnoDB PARTITION BY LIST(i) (PARTITION p0 VALUES IN (1), PARTITION p1 VALUES IN (2));;
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
Warnings:
|
||||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
SELECT * FROM t1;
|
||||
i
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-13788 Server crash when issuing bad SQL partition syntax
|
||||
#
|
||||
CREATE TABLE t1 (id int, d date) ENGINE=InnoDB PARTITION BY RANGE COLUMNS(d) (PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`d` date DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
/*!50500 PARTITION BY RANGE COLUMNS(d)
|
||||
(PARTITION p1 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB) */
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
ERROR HY000: Syntax error: RANGE PARTITIONING requires definition of VALUES LESS THAN for each partition
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (id int, d date) ENGINE=InnoDB PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1,2,3));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`d` date DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY LIST (id)
|
||||
(PARTITION p1 VALUES IN (1,2,3) ENGINE = InnoDB) */
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES IN (4,5,6)
|
||||
);
|
||||
ERROR HY000: Syntax error: LIST PARTITIONING requires definition of VALUES IN for each partition
|
||||
DROP TABLE t1;
|
@ -16,3 +16,47 @@ select * from t1;
|
||||
pk dt
|
||||
1 2017-09-28 15:12:00
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
||||
#
|
||||
CREATE TABLE t1 (i INT) ENGINE=Aria PARTITION BY LIST(i) (PARTITION p0 VALUES IN (1), PARTITION p1 VALUES IN (2));;
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
SELECT * FROM t1;
|
||||
i
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-13788 Server crash when issuing bad SQL partition syntax
|
||||
#
|
||||
CREATE TABLE t1 (id int, d date) ENGINE=Aria PARTITION BY RANGE COLUMNS(d) (PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`d` date DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1
|
||||
/*!50500 PARTITION BY RANGE COLUMNS(d)
|
||||
(PARTITION p1 VALUES LESS THAN (MAXVALUE) ENGINE = Aria) */
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
ERROR HY000: Syntax error: RANGE PARTITIONING requires definition of VALUES LESS THAN for each partition
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (id int, d date) ENGINE=Aria PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1,2,3));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`d` date DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY LIST (id)
|
||||
(PARTITION p1 VALUES IN (1,2,3) ENGINE = Aria) */
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES IN (4,5,6)
|
||||
);
|
||||
ERROR HY000: Syntax error: LIST PARTITIONING requires definition of VALUES IN for each partition
|
||||
DROP TABLE t1;
|
||||
|
@ -1,10 +1,44 @@
|
||||
CREATE TABLE t1 (i INT) ENGINE=MYISAM
|
||||
PARTITION BY LIST(i) (
|
||||
PARTITION p0 VALUES IN (1),
|
||||
PARTITION p1 VALUES IN (2)
|
||||
);
|
||||
#
|
||||
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
||||
#
|
||||
CREATE TABLE t1 (i INT) ENGINE=MyISAM PARTITION BY LIST(i) (PARTITION p0 VALUES IN (1), PARTITION p1 VALUES IN (2));;
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
SELECT * FROM t1;
|
||||
i
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-13788 Server crash when issuing bad SQL partition syntax
|
||||
#
|
||||
CREATE TABLE t1 (id int, d date) ENGINE=MyISAM PARTITION BY RANGE COLUMNS(d) (PARTITION p1 VALUES LESS THAN (MAXVALUE));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`d` date DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!50500 PARTITION BY RANGE COLUMNS(d)
|
||||
(PARTITION p1 VALUES LESS THAN (MAXVALUE) ENGINE = MyISAM) */
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
ERROR HY000: Syntax error: RANGE PARTITIONING requires definition of VALUES LESS THAN for each partition
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (id int, d date) ENGINE=MyISAM PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1,2,3));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`d` date DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY LIST (id)
|
||||
(PARTITION p1 VALUES IN (1,2,3) ENGINE = MyISAM) */
|
||||
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
||||
(
|
||||
PARTITION p2, /* Notice no values */
|
||||
PARTITION p3 VALUES IN (4,5,6)
|
||||
);
|
||||
ERROR HY000: Syntax error: LIST PARTITIONING requires definition of VALUES IN for each partition
|
||||
DROP TABLE t1;
|
||||
|
4
mysql-test/suite/parts/t/partition_alter_innodb.test
Normal file
4
mysql-test/suite/parts/t/partition_alter_innodb.test
Normal file
@ -0,0 +1,4 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_partition.inc
|
||||
--let $engine=InnoDB
|
||||
--source inc/part_alter_values.inc
|
@ -16,3 +16,6 @@ select * from t1;
|
||||
alter table t1 drop partition p20181231;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
--let $engine=Aria
|
||||
--source inc/part_alter_values.inc
|
||||
|
@ -1,17 +1,3 @@
|
||||
#
|
||||
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
||||
#
|
||||
|
||||
--source include/have_partition.inc
|
||||
|
||||
CREATE TABLE t1 (i INT) ENGINE=MYISAM
|
||||
PARTITION BY LIST(i) (
|
||||
PARTITION p0 VALUES IN (1),
|
||||
PARTITION p1 VALUES IN (2)
|
||||
);
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Cleanup
|
||||
DROP TABLE t1;
|
||||
--let $engine=MyISAM
|
||||
--source inc/part_alter_values.inc
|
||||
|
@ -136,18 +136,14 @@ SELECT * FROM t1 WHERE FIND_IN_SET(NULL, NULL) IS UNKNOWN;
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
--echo #
|
||||
--echo # Start of 5.3 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-4512 Valgrind warnings in my_long10_to_str_8bit on INTERVAL and DATE_ADD with incorrect types
|
||||
--echo # MDEV-14596 Crash in INTERVAL(ROW(..),ROW(..))
|
||||
--echo #
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (10),(11);
|
||||
SELECT INTERVAL( 9, 1, DATE_ADD( pk, INTERVAL pk MINUTE_SECOND ), 9, 8, 3, 5, 2, 1 ) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.3 tests
|
||||
--echo #
|
||||
--error ER_OPERAND_COLUMNS
|
||||
SELECT INTERVAL(ROW(1,1),ROW(1,2));
|
||||
--error ER_OPERAND_COLUMNS
|
||||
SELECT INTERVAL(1,ROW(1,2));
|
||||
--error ER_OPERAND_COLUMNS
|
||||
SELECT INTERVAL(ROW(1,2),1);
|
||||
|
@ -1740,6 +1740,32 @@ create table t2 (c1 int, c2 int);
|
||||
select t1.c1 as c1, t2.c2 as c1 from t1, t2 where t1.c1 < 20 and t2.c2 > 5 group by t1.c1, t2.c2 having t1.c1 < 3;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# MDEV-12350: Heap corruption, overrun buffer, ASAN errors, server crash in my_fill_8bit / filesort
|
||||
#
|
||||
|
||||
SET @old_sort_buff_size = @@sort_buffer_size;
|
||||
SET @@sort_buffer_size=256*1024;
|
||||
CREATE TABLE t1 (c INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(2011),(1977),(1982),(2027),(2023),(NULL),(NULL),(2004),(1974),(2032),
|
||||
(1993),(NULL),(1995),(2034),(NULL),(2009),(1900),(NULL),(2025),(1900),
|
||||
(2033),(1900),(2012),(NULL),(2009),(1992),(1974),(1974),(2012),(2028),
|
||||
(2007),(2012),(1900),(1983),(1900),(2010),(1987),(1994),(1981),(2032),
|
||||
(2010),(1989),(2014),(1900),(1900),(1976),(1978),(2007),(2030),(NULL),
|
||||
(2002),(1997),(1900),(NULL),(2000),(2027),(1975),(2026),(1975),(2026),
|
||||
(2029),(1977),(1900),(1900),(2031),(1993),(1986),(2012),(1979),(2013),
|
||||
(1994),(2014),(2025),(2006),(1971),(1974),(2021),(2011),(NULL),(1991),
|
||||
(2001),(1977),(2023),(2012),(1900),(1978),(1998),(NULL),(1988),(1999),
|
||||
(2017),(2008),(1976),(1900),(2005),(2030),(2023),(1900),(1978),(1990),
|
||||
(1978),(1987),(2030),(1900),(2034),(2006),(2015),(2001),(2019),(2024),
|
||||
(2030),(1989),(1997),(2007),(2023),(1994),(1971),(2011),(2011),(2015),
|
||||
(1984),(1978),(1979),(1989),(2008),(2030);
|
||||
|
||||
SELECT ExtractValue('<a></a>','/a') AS f1, SPACE(c) AS f2 FROM t1 GROUP BY f1, f2 WITH ROLLUP;
|
||||
SET @@sort_buffer_size = @old_sort_buff_size;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# End of MariaDB 5.5 tests
|
||||
#
|
||||
|
@ -728,6 +728,23 @@ HAVING UPPER(`column_1`) LIKE '8%';
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # mdev-14368: grouping query with alias for aggregate function in HAVING
|
||||
--echo # when sql_mode = 'ONLY_FULL_GROUP_BY'
|
||||
|
||||
|
||||
set @save_sql_mode= @@sql_mode;
|
||||
set sql_mode = 'ONLY_FULL_GROUP_BY';
|
||||
|
||||
create table t1(a int);
|
||||
insert t1 values (4),(1),(2),(1), (3),(4);
|
||||
|
||||
SELECT a, COUNT(a) as ct FROM t1 GROUP BY a HAVING ct>0;
|
||||
|
||||
set sql_mode=@save_sql_mode;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug mdev-5160: two-way join with HAVING over the second table
|
||||
--echo #
|
||||
|
@ -1881,6 +1881,20 @@ DROP FUNCTION f1;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-10397: Server crashes in key_copy with join_cache_level > 2 and join on BIT fields
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (b1 BIT NOT NULL);
|
||||
INSERT INTO t1 VALUES (0),(1);
|
||||
|
||||
CREATE TABLE t2 (b2 BIT NOT NULL);
|
||||
INSERT INTO t2 VALUES (0),(1);
|
||||
|
||||
SET SESSION JOIN_CACHE_LEVEL = 3;
|
||||
SELECT t1.b1+'0' , t2.b2 + '0' FROM t1 LEFT JOIN t2 ON b1 = b2;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo # end of 5.5 tests
|
||||
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -5579,6 +5579,18 @@ PREPARE stmt FROM 'REPLACE INTO v2 SELECT a FROM t3';
|
||||
drop view v1,v2;
|
||||
drop table t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14619: VIEW and GROUP_CONCAT
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (str text);
|
||||
INSERT INTO t1 VALUES ("My"),("SQL");
|
||||
CREATE VIEW v1 AS SELECT GROUP_CONCAT(str SEPARATOR '\\') FROM t1;
|
||||
SELECT * FROM v1;
|
||||
SHOW CREATE VIEW v1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo # -- End of 5.5 tests.
|
||||
--echo # -----------------------------------------------------------------
|
||||
|
@ -874,8 +874,8 @@ if expr "${-}" : '.*x' > /dev/null
|
||||
then
|
||||
:
|
||||
else
|
||||
exec 1>&-
|
||||
exec 2>&-
|
||||
exec 1>/dev/null
|
||||
exec 2>/dev/null
|
||||
fi
|
||||
|
||||
while true
|
||||
|
@ -987,7 +987,8 @@ static void make_sortkey(register Sort_param *param,
|
||||
if (maybe_null)
|
||||
*to++=1;
|
||||
char *tmp_buffer= param->tmp_buffer ? param->tmp_buffer : (char*)to;
|
||||
String tmp(tmp_buffer, param->sort_length, cs);
|
||||
String tmp(tmp_buffer, param->tmp_buffer ? param->sort_length :
|
||||
sort_field->length, cs);
|
||||
String *res= item->str_result(&tmp);
|
||||
if (!res)
|
||||
{
|
||||
|
@ -96,7 +96,7 @@ uchar **Filesort_buffer::alloc_sort_buffer(uint num_records, uint record_length)
|
||||
|
||||
if (m_idx_array.is_null())
|
||||
{
|
||||
sort_buff_sz= num_records * (record_length + sizeof(uchar*));
|
||||
sort_buff_sz= ((size_t)num_records) * (record_length + sizeof(uchar*));
|
||||
set_if_bigger(sort_buff_sz, record_length * MERGEBUFF2);
|
||||
uchar **sort_keys=
|
||||
(uchar**) my_malloc(sort_buff_sz, MYF(MY_THREAD_SPECIFIC));
|
||||
|
@ -4733,7 +4733,8 @@ resolve_ref_in_select_and_group(THD *thd, Item_ident *ref, SELECT_LEX *select)
|
||||
|
||||
if (thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY &&
|
||||
select->having_fix_field &&
|
||||
select_ref != not_found_item && !group_by_ref)
|
||||
select_ref != not_found_item && !group_by_ref &&
|
||||
!ref->alias_name_used)
|
||||
{
|
||||
/*
|
||||
Report the error if fields was found only in the SELECT item list and
|
||||
|
@ -2065,6 +2065,19 @@ bool Item_func_opt_neg::eq(const Item *item, bool binary_cmp) const
|
||||
}
|
||||
|
||||
|
||||
bool Item_func_interval::fix_fields(THD *thd, Item **ref)
|
||||
{
|
||||
if (Item_int_func::fix_fields(thd, ref))
|
||||
return true;
|
||||
for (uint i= 0 ; i < row->cols(); i++)
|
||||
{
|
||||
if (row->element_index(i)->check_cols(1))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Item_func_interval::fix_length_and_dec()
|
||||
{
|
||||
uint rows= row->cols();
|
||||
|
@ -729,6 +729,7 @@ public:
|
||||
{
|
||||
allowed_arg_cols= 0; // Fetch this value from first argument
|
||||
}
|
||||
bool fix_fields(THD *, Item **);
|
||||
longlong val_int();
|
||||
void fix_length_and_dec();
|
||||
const char *func_name() const { return "interval"; }
|
||||
|
@ -3670,7 +3670,7 @@ void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
||||
}
|
||||
}
|
||||
str->append(STRING_WITH_LEN(" separator \'"));
|
||||
str->append(*separator);
|
||||
str->append_for_single_quote(separator->ptr(), separator->length());
|
||||
str->append(STRING_WITH_LEN("\')"));
|
||||
}
|
||||
|
||||
|
@ -2747,6 +2747,24 @@ end:
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
|
||||
|
||||
bool partition_info::error_if_requires_values() const
|
||||
{
|
||||
switch (part_type) {
|
||||
case NOT_A_PARTITION:
|
||||
case HASH_PARTITION:
|
||||
break;
|
||||
case RANGE_PARTITION:
|
||||
my_error(ER_PARTITION_REQUIRES_VALUES_ERROR, MYF(0), "RANGE", "LESS THAN");
|
||||
return true;
|
||||
case LIST_PARTITION:
|
||||
my_error(ER_PARTITION_REQUIRES_VALUES_ERROR, MYF(0), "LIST", "IN");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Fix partition data from parser.
|
||||
|
||||
@ -2836,6 +2854,8 @@ bool partition_info::fix_parser_data(THD *thd)
|
||||
part_elem= it++;
|
||||
List_iterator<part_elem_value> list_val_it(part_elem->list_val_list);
|
||||
num_elements= part_elem->list_val_list.elements;
|
||||
if (!num_elements && error_if_requires_values())
|
||||
DBUG_RETURN(true);
|
||||
DBUG_ASSERT(part_type == RANGE_PARTITION ?
|
||||
num_elements == 1U : TRUE);
|
||||
for (j= 0; j < num_elements; j++)
|
||||
|
@ -368,6 +368,7 @@ public:
|
||||
bool *prune_needs_default_values,
|
||||
MY_BITMAP *used_partitions);
|
||||
bool has_same_partitioning(partition_info *new_part_info);
|
||||
bool error_if_requires_values() const;
|
||||
private:
|
||||
static int list_part_cmp(const void* a, const void* b);
|
||||
bool set_up_default_partitions(handler *file, HA_CREATE_INFO *info,
|
||||
|
@ -1735,29 +1735,29 @@ ER_WRONG_AUTO_KEY 42000 S1009
|
||||
ER_UNUSED_9
|
||||
eng "You should never see it"
|
||||
ER_NORMAL_SHUTDOWN
|
||||
cze "%s: normální ukončení\n"
|
||||
dan "%s: Normal nedlukning\n"
|
||||
nla "%s: Normaal afgesloten \n"
|
||||
eng "%s: Normal shutdown\n"
|
||||
est "%s: MariaDB lõpetas\n"
|
||||
fre "%s: Arrêt normal du serveur\n"
|
||||
ger "%s: Normal heruntergefahren\n"
|
||||
greek "%s: Φυσιολογική διαδικασία shutdown\n"
|
||||
hun "%s: Normal leallitas\n"
|
||||
ita "%s: Shutdown normale\n"
|
||||
jpn "%s: 通常シャットダウン\n"
|
||||
kor "%s: 정상적인 shutdown\n"
|
||||
nor "%s: Normal avslutning\n"
|
||||
norwegian-ny "%s: Normal nedkopling\n"
|
||||
pol "%s: Standardowe zakończenie działania\n"
|
||||
por "%s: 'Shutdown' normal\n"
|
||||
rum "%s: Terminare normala\n"
|
||||
rus "%s: Корректная остановка\n"
|
||||
serbian "%s: Normalno gašenje\n"
|
||||
slo "%s: normálne ukončenie\n"
|
||||
spa "%s: Apagado normal\n"
|
||||
swe "%s: Normal avslutning\n"
|
||||
ukr "%s: Нормальне завершення\n"
|
||||
cze "%s: norm-Bální ukončení"
|
||||
dan "%s: Normal nedlukning"
|
||||
nla "%s: Normaal afgesloten"
|
||||
eng "%s: Normal shutdown"
|
||||
est "%s: MariaDB lõpetas"
|
||||
fre "%s: Arrêt normal du serveur"
|
||||
ger "%s: Normal heruntergefahren"
|
||||
greek "%s: Φυσιολογική διαδικασία shutdown"
|
||||
hun "%s: Normal leallitas"
|
||||
ita "%s: Shutdown normale"
|
||||
jpn "%s: 通常シャットダウン"
|
||||
kor "%s: 정상적인 shutdown"
|
||||
nor "%s: Normal avslutning"
|
||||
norwegian-ny "%s: Normal nedkopling"
|
||||
pol "%s: Standardowe zakończenie działania"
|
||||
por "%s: 'Shutdown' normal"
|
||||
rum "%s: Terminare normala"
|
||||
rus "%s: Корректная остановка"
|
||||
serbian "%s: Normalno gašenje"
|
||||
slo "%s: normálne ukončenie"
|
||||
spa "%s: Apagado normal"
|
||||
swe "%s: Normal avslutning"
|
||||
ukr "%s: Нормальне завершення"
|
||||
ER_GOT_SIGNAL
|
||||
cze "%s: přijat signal %d, končím\n"
|
||||
dan "%s: Fangede signal %d. Afslutter!!\n"
|
||||
|
@ -4886,16 +4886,11 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info,
|
||||
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_ASSERT(tab_part_info->part_type == RANGE_PARTITION ||
|
||||
tab_part_info->part_type == LIST_PARTITION);
|
||||
(void) tab_part_info->error_if_requires_values();
|
||||
}
|
||||
goto err;
|
||||
}
|
||||
|
@ -5126,18 +5126,8 @@ opt_part_values:
|
||||
partition_info *part_info= lex->part_info;
|
||||
if (! lex->is_partition_management())
|
||||
{
|
||||
if (part_info->part_type == RANGE_PARTITION)
|
||||
{
|
||||
my_error(ER_PARTITION_REQUIRES_VALUES_ERROR, MYF(0),
|
||||
"RANGE", "LESS THAN");
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
if (part_info->part_type == LIST_PARTITION)
|
||||
{
|
||||
my_error(ER_PARTITION_REQUIRES_VALUES_ERROR, MYF(0),
|
||||
"LIST", "IN");
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
if (part_info->error_if_requires_values())
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
else
|
||||
part_info->part_type= HASH_PARTITION;
|
||||
|
@ -6123,6 +6123,14 @@ void TABLE::create_key_part_by_field(KEY_PART_INFO *key_part_info,
|
||||
might be reused.
|
||||
*/
|
||||
key_part_info->store_length= key_part_info->length;
|
||||
/*
|
||||
For BIT fields null_bit is not set to 0 even if the field is defined
|
||||
as NOT NULL, look at Field_bit::Field_bit
|
||||
*/
|
||||
if (!field->real_maybe_null())
|
||||
{
|
||||
key_part_info->null_bit= 0;
|
||||
}
|
||||
|
||||
/*
|
||||
The total store length of the key part is the raw length of the field +
|
||||
|
Loading…
x
Reference in New Issue
Block a user