mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge chunk from trunk.
This commit is contained in:
@ -37,3 +37,28 @@ show status like "binlog_cache_disk_use";
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #30604: different flagging of time_zone_used in normal and ps-protocol
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
|
||||
DELIMITER |;
|
||||
# the function does not deal with time objects
|
||||
CREATE FUNCTION bug23333()
|
||||
RETURNS int(11)
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
INSERT INTO t1 VALUES (NULL);
|
||||
SELECT COUNT(*) FROM t1 INTO @a;
|
||||
RETURN @a;
|
||||
END|
|
||||
|
||||
DELIMITER ;|
|
||||
|
||||
INSERT INTO t2 VALUES (2),(10+bug23333());
|
||||
--replace_column 1 #
|
||||
SHOW MASTER STATUS;
|
||||
DROP FUNCTION bug23333;
|
||||
DROP TABLE t1, t2;
|
||||
|
@ -46,3 +46,34 @@ insert into t1 values (0x01,0x01);
|
||||
select * from t1 where a=b;
|
||||
select * from t1 where a=b and b=0x01;
|
||||
drop table if exists t1;
|
||||
|
||||
#
|
||||
# Bug #31887: DML Select statement not returning same results when executed
|
||||
# in version 5
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (b int(2) zerofill, c int(2) zerofill);
|
||||
INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2);
|
||||
|
||||
SELECT CONCAT(b,c), CONCAT(b,c) = '0101' FROM t1;
|
||||
|
||||
EXPLAIN EXTENDED SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
||||
SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
||||
|
||||
CREATE TABLE t2 (a int);
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
|
||||
SELECT a,
|
||||
(SELECT COUNT(*) FROM t1
|
||||
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
||||
FROM t2 ORDER BY a;
|
||||
|
||||
EXPLAIN EXTENDED
|
||||
SELECT a,
|
||||
(SELECT COUNT(*) FROM t1
|
||||
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
||||
FROM t2 ORDER BY a;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1148,4 +1148,28 @@ create table t2 select sql_big_result f1,count(f2) from t1 group by f1;
|
||||
show status like 'handler_read%';
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug #25162: Backing up DB from 5.1 adds 'USING BTREE' to KEYs on table creates
|
||||
#
|
||||
|
||||
# Show that the old syntax for index type is supported
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
||||
DROP TABLE t1;
|
||||
|
||||
# Show that the new syntax for index type is supported
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY (c1) USING BTREE);
|
||||
DROP TABLE t1;
|
||||
|
||||
# Show that in case of multiple index type definitions, the last one takes
|
||||
# precedence
|
||||
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1) USING HASH) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -16,10 +16,12 @@ SET collation_connection='big5_chinese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='big5_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bugs#9357: TEXT columns break string with special word in BIG5 charset.
|
||||
|
@ -6,6 +6,16 @@ DROP TABLE IF EXISTS t1;
|
||||
|
||||
SHOW COLLATION LIKE 'cp1250_czech_cs';
|
||||
|
||||
SET @test_character_set= 'cp1250';
|
||||
SET @test_collation= 'cp1250_general_ci';
|
||||
-- source include/ctype_common.inc
|
||||
|
||||
SET @test_character_set= 'cp1250';
|
||||
SET @test_collation= 'cp1250_czech_cs';
|
||||
-- source include/ctype_common.inc
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Bugs: #8840: Empty string comparison and character set 'cp1250'
|
||||
#
|
||||
|
@ -404,8 +404,10 @@ DROP TABLE t4;
|
||||
|
||||
SET collation_connection='cp932_japanese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='cp932_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bug#29333 myisam corruption with
|
||||
|
@ -361,9 +361,10 @@ DROP TABLE t1;
|
||||
|
||||
SET collation_connection='eucjpms_japanese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='eucjpms_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bugs#15375: Unassigned multibyte codes are broken
|
||||
|
@ -16,10 +16,12 @@ SET collation_connection='euckr_korean_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='euckr_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bug#15377 Valid multibyte sequences are truncated on INSERT
|
||||
|
@ -16,10 +16,12 @@ SET collation_connection='gb2312_chinese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='gb2312_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bug#15377 Valid multibyte sequences are truncated on INSERT
|
||||
|
@ -16,10 +16,12 @@ SET collation_connection='gbk_chinese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='gbk_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bug#11987 mysql will truncate the text when
|
||||
|
@ -68,10 +68,12 @@ SET collation_connection='sjis_japanese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='sjis_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
# Check parsing of string literals in SJIS with multibyte characters that
|
||||
# have an embedded \ in them. (Bug #8303)
|
||||
|
@ -539,7 +539,8 @@ select * from t1 where a like 'c%';
|
||||
drop table t1;
|
||||
|
||||
set collation_connection=ucs2_unicode_ci;
|
||||
--source include/ctype_regex.inc
|
||||
-- source include/ctype_regex.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
set names utf8;
|
||||
|
||||
-- echo End for 5.0 tests
|
||||
|
@ -4,6 +4,10 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
SET @test_character_set= 'ucs2';
|
||||
SET @test_collation= 'ucs2_general_ci';
|
||||
-- source include/ctype_common.inc
|
||||
|
||||
SET NAMES latin1;
|
||||
SET character_set_connection=ucs2;
|
||||
-- source include/endspace.inc
|
||||
@ -373,10 +377,12 @@ drop table t1;
|
||||
SET collation_connection='ucs2_general_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET NAMES latin1;
|
||||
SET collation_connection='ucs2_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bug#10344 Some string functions fail for UCS2
|
||||
|
@ -39,4 +39,17 @@ INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
|
||||
INSERT INTO t1 VALUES('A ', 'A ');
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#32705 - myisam corruption: Key in wrong position
|
||||
# at page 1024 with ucs2_bin
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(255) CHARACTER SET UCS2 COLLATE UCS2_BIN NOT NULL,
|
||||
KEY(c1)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('marshall\'s');
|
||||
INSERT INTO t1 VALUES ('marsh');
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1147,10 +1147,12 @@ SET collation_connection='ujis_japanese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
SET collation_connection='ujis_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
-- source include/ctype_innodb_like.inc
|
||||
-- source include/ctype_like_escape.inc
|
||||
-- source include/ctype_like_range_f1f2.inc
|
||||
|
||||
#
|
||||
# Bugs#15375: Unassigned multibyte codes are broken
|
||||
|
@ -1716,5 +1716,38 @@ connection slave;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
||||
#
|
||||
# BUG#33946 - Join on Federated tables with Unique index gives error 1430
|
||||
# from storage engine
|
||||
#
|
||||
connection slave;
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a,b));
|
||||
INSERT INTO t1 VALUES(NULL,1),(1,NULL),(NULL,NULL),(1,1),(2,2);
|
||||
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval CREATE TABLE t1 (a INT, b INT, KEY(a,b)) ENGINE=federated
|
||||
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
|
||||
SELECT * FROM t1 WHERE a IS NULL;
|
||||
SELECT * FROM t1 WHERE a IS NOT NULL;
|
||||
SELECT * FROM t1 WHERE a=1 AND b=1;
|
||||
SELECT * FROM t1 WHERE a IS NULL AND b=1;
|
||||
SELECT * FROM t1 WHERE a IS NOT NULL AND b=1;
|
||||
DROP TABLE t1;
|
||||
|
||||
connection slave;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# BUG#34788 - malformed federated connection url is not handled correctly -
|
||||
# crashes server !
|
||||
#
|
||||
# also tests
|
||||
#
|
||||
# BUG#35509 - Federated leaks memory when connecting to localhost/default
|
||||
# port
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
|
||||
DROP TABLE t1;
|
||||
|
||||
source include/federated_cleanup.inc;
|
||||
|
@ -640,4 +640,21 @@ SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY b) FROM t1;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
#
|
||||
# Bug #34747: crash in debug assertion check after derived table
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (),();
|
||||
SELECT s1.d1 FROM
|
||||
(
|
||||
SELECT
|
||||
t1.a as d1,
|
||||
GROUP_CONCAT(DISTINCT t1.a) AS d2
|
||||
FROM
|
||||
t1 AS t1,
|
||||
t1 AS t2
|
||||
GROUP BY 1
|
||||
) AS s1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -204,6 +204,24 @@ SELECT NAME_CONST('test', 1.0);
|
||||
SELECT NAME_CONST('test', -1.0);
|
||||
SELECT NAME_CONST('test', 'test');
|
||||
|
||||
#
|
||||
# Bug #34749: Server crash when using NAME_CONST() with an aggregate function
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
# NAME_CONST() + aggregate.
|
||||
SELECT NAME_CONST('flag',1) * MAX(a) FROM t1;
|
||||
SELECT NAME_CONST('flag',1.5) * MAX(a) FROM t1;
|
||||
# Now, wrap the INT_ITEM in Item_func_neg and watch the pretty explosions
|
||||
SELECT NAME_CONST('flag',-1) * MAX(a) FROM t1;
|
||||
SELECT NAME_CONST('flag',-1.5) * MAX(a) FROM t1;
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
SELECT NAME_CONST('flag', SQRT(4)) * MAX(a) FROM t1;
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
SELECT NAME_CONST('flag',-SQRT(4)) * MAX(a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #27545: erroneous usage of NAME_CONST with a name as the first parameter
|
||||
# resolved against a column name of a derived table hangs the client
|
||||
@ -237,5 +255,11 @@ insert into t1 values (-1), (-2);
|
||||
select min(a) from t1 group by inet_ntoa(a);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#34289 - Incorrect NAME_CONST substitution in stored procedures breaks
|
||||
# replication
|
||||
#
|
||||
SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
@ -336,7 +336,7 @@ select date_add(date,INTERVAL "1" QUARTER) from t1;
|
||||
select timestampadd(MINUTE, 1, date) from t1;
|
||||
select timestampadd(WEEK, 1, date) from t1;
|
||||
select timestampadd(SQL_TSI_SECOND, 1, date) from t1;
|
||||
# Prepared statements doesn't support FRAC_SECOND yet
|
||||
# mysqltest.c discards an expected 'deprecated' warning on prepare stage
|
||||
--disable_ps_protocol
|
||||
select timestampadd(SQL_TSI_FRAC_SECOND, 1, date) from t1;
|
||||
--enable_ps_protocol
|
||||
@ -351,7 +351,10 @@ select timestampdiff(SQL_TSI_HOUR, '2001-02-01', '2001-05-01') as a;
|
||||
select timestampdiff(SQL_TSI_DAY, '2001-02-01', '2001-05-01') as a;
|
||||
select timestampdiff(SQL_TSI_MINUTE, '2001-02-01 12:59:59', '2001-05-01 12:58:59') as a;
|
||||
select timestampdiff(SQL_TSI_SECOND, '2001-02-01 12:59:59', '2001-05-01 12:58:58') as a;
|
||||
# mysqltest.c discards an expected 'deprecated' warning on prepare stage
|
||||
--disable_ps_protocol
|
||||
select timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a;
|
||||
--enable_ps_protocol
|
||||
|
||||
select timestampdiff(SQL_TSI_DAY, '1986-02-01', '1986-03-01') as a1,
|
||||
timestampdiff(SQL_TSI_DAY, '1900-02-01', '1900-03-01') as a2,
|
||||
@ -804,4 +807,26 @@ select DATE_ADD(20071108, INTERVAL 1 DAY);
|
||||
|
||||
select LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND;
|
||||
|
||||
#
|
||||
# Bug#33834: FRAC_SECOND: Applicability not clear in documentation
|
||||
#
|
||||
# Show that he use of FRAC_SECOND, for anything other than
|
||||
# TIMESTAMPADD / TIMESTAMPDIFF, is a server error.
|
||||
|
||||
# mysqltest.c discards an expected 'deprecated' warning on prepare stage
|
||||
--disable_ps_protocol
|
||||
SELECT TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18');
|
||||
SELECT TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18');
|
||||
--enable_ps_protocol
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT DATE_ADD('2008-02-18', INTERVAL 1 FRAC_SECOND);
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT DATE_SUB('2008-02-18', INTERVAL 1 FRAC_SECOND);
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT '2008-02-18' + INTERVAL 1 FRAC_SECOND;
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -134,3 +134,29 @@ SELECT user, host, db, select_priv FROM mysql.db where user = 'CUser2' order by
|
||||
|
||||
DROP USER CUser2@localhost;
|
||||
DROP USER CUser2@LOCALHOST;
|
||||
|
||||
|
||||
#
|
||||
# Bug#31194: Privilege ordering does not order properly for wildcard values
|
||||
#
|
||||
|
||||
CREATE DATABASE mysqltest_1;
|
||||
CREATE TABLE mysqltest_1.t1 (a INT);
|
||||
CREATE USER 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%';
|
||||
REVOKE SELECT ON `mysqltest_1`.* FROM 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
connect (conn1,localhost,mysqltest1,,);
|
||||
connection conn1;
|
||||
SHOW GRANTS;
|
||||
SELECT * FROM mysqltest_1.t1;
|
||||
disconnect conn1;
|
||||
|
||||
connection default;
|
||||
DROP USER 'mysqltest1'@'%';
|
||||
DROP DATABASE mysqltest_1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -982,4 +982,18 @@ desc t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #34223: Assertion failed: (optp->var_type & 127) == 8,
|
||||
# file .\my_getopt.c, line 830
|
||||
#
|
||||
|
||||
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
|
||||
set global innodb_autoextend_increment=8;
|
||||
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
|
||||
|
||||
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
|
||||
set global innodb_commit_concurrency=0;
|
||||
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -76,15 +76,22 @@ drop table t1;
|
||||
# Bug #28464: a string argument to 'limit ?' PS
|
||||
#
|
||||
|
||||
prepare s from "select 1 limit ?";
|
||||
set @a='qwe';
|
||||
--error 1210
|
||||
prepare s from "select 1 limit ?";
|
||||
set @a='qwe';
|
||||
execute s using @a;
|
||||
set @a=-1;
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
execute s using @a;
|
||||
prepare s from "select 1 limit 1, ?";
|
||||
--error 1210
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
execute s using @a;
|
||||
prepare s from "select 1 limit ?, ?";
|
||||
--error 1210
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
execute s using @a, @a;
|
||||
set @a=14632475938453979136;
|
||||
execute s using @a, @a;
|
||||
set @a=-14632475938453979136;
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
execute s using @a, @a;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -542,5 +542,18 @@ SELECT * FROM t3;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
#
|
||||
# BUG#28248 - mysqldump results with MERGE ... UNION=() cannot be executed
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE m1(a INT) ENGINE=MERGE;
|
||||
SHOW CREATE TABLE m1;
|
||||
DROP TABLE m1;
|
||||
CREATE TABLE m1(a INT) ENGINE=MERGE UNION=();
|
||||
SHOW CREATE TABLE m1;
|
||||
ALTER TABLE m1 UNION=(t1);
|
||||
ALTER TABLE m1 UNION=();
|
||||
SHOW CREATE TABLE m1;
|
||||
DROP TABLE t1, m1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -8,8 +8,8 @@
|
||||
# server or run mysql-test-run --debug mysql_client_test and check
|
||||
# var/log/mysql_client_test.trace
|
||||
|
||||
--exec echo "$MYSQL_CLIENT_TEST" > $MYSQLTEST_VARDIR/log/mysql_client_test.log 2>&1
|
||||
--exec $MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.log 2>&1
|
||||
--exec echo "$MYSQL_CLIENT_TEST" > $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1
|
||||
--exec $MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1
|
||||
|
||||
# End of 4.1 tests
|
||||
echo ok;
|
||||
|
1
mysql-test/t/mysqldump-no-binlog-master.opt
Normal file
1
mysql-test/t/mysqldump-no-binlog-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--skip-log-bin
|
6
mysql-test/t/mysqldump-no-binlog.test
Normal file
6
mysql-test/t/mysqldump-no-binlog.test
Normal file
@ -0,0 +1,6 @@
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--replace_regex /MASTER_LOG_POS=[0-9]+/XX/
|
||||
--error 2
|
||||
--exec $MYSQL_DUMP --compact --master-data=2 test 2>&1
|
@ -1348,6 +1348,7 @@ grant RELOAD on *.* to mysqltest_1@localhost;
|
||||
grant REPLICATION CLIENT on *.* to mysqltest_1@localhost;
|
||||
|
||||
# Execute mysqldump, should now succeed
|
||||
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=#/
|
||||
--exec $MYSQL_DUMP --compact --master-data -u mysqltest_1 test 2>&1
|
||||
|
||||
# Clean up
|
||||
|
@ -240,3 +240,26 @@ SHOW STATUS LIKE "handler_read%";
|
||||
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# BUG#34945 "ref_or_null queries that are null_rejecting and have a null value crash mysql"
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a int(11) default NULL,
|
||||
b int(11) default NULL,
|
||||
KEY a (a,b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (0,10),(0,11),(0,12);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a int(11) default NULL,
|
||||
b int(11) default NULL,
|
||||
KEY a (a)
|
||||
);
|
||||
INSERT INTO t2 VALUES (3,NULL),(3,11),(3,12);
|
||||
|
||||
SELECT * FROM t2 inner join t1 WHERE ( t1.a = 0 OR t1.a IS NULL) AND t2.a = 3 AND t2.b = t1.b;
|
||||
|
||||
drop table t1, t2;
|
||||
-- echo End of 5.0 tests
|
||||
|
||||
|
@ -726,3 +726,15 @@ SELECT a, b FROM t1 ORDER BY b DESC;
|
||||
SELECT a, b FROM t1 ORDER BY SEC_TO_TIME(a) DESC;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#31590: Wrong error message on sort buffer being too small.
|
||||
--echo #
|
||||
create table t1(a int, b tinytext);
|
||||
insert into t1 values (1,2),(3,2);
|
||||
set session sort_buffer_size= 30000;
|
||||
set session max_sort_length= 2180;
|
||||
--error 1038
|
||||
select * from t1 order by b;
|
||||
drop table t1;
|
||||
|
||||
|
@ -1824,4 +1824,146 @@ select * from t1 where a = @a and b = @b;
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#32890 Crash after repeated create and drop of tables and views
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop view if exists v1;
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 values (1,1), (2,2), (3,3);
|
||||
insert into t1 values (3,1), (1,2), (2,3);
|
||||
|
||||
prepare stmt from "create view v1 as select * from t1";
|
||||
execute stmt;
|
||||
drop table t1;
|
||||
create table t1 (a int, b int);
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 (c,d) as select a,b from t1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 (c) as select b+1 from t1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 (c,d,e,f) as select a,b,a in (select a+2 from t1), a = all (select a from t1) from t1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create or replace view v1 as select 1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 as select 1, 1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 (x) as select a from t1 where a > 1";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 as select * from `t1` `b`";
|
||||
execute stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
prepare stmt from "create view v1 (a,b,c) as select * from t1";
|
||||
--error ER_VIEW_WRONG_LIST
|
||||
execute stmt;
|
||||
--error ER_VIEW_WRONG_LIST
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop table t1;
|
||||
create temporary table t1 (a int, b int);
|
||||
|
||||
prepare stmt from "create view v1 as select * from t1";
|
||||
--error ER_VIEW_SELECT_TMPTABLE
|
||||
execute stmt;
|
||||
--error ER_VIEW_SELECT_TMPTABLE
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--error ER_NO_SUCH_TABLE
|
||||
prepare stmt from "create view v1 as select * from t1";
|
||||
--error ER_NO_SUCH_TABLE
|
||||
prepare stmt from "create view v1 as select * from `t1` `b`";
|
||||
|
||||
#
|
||||
# Bug#33851: Passing UNSIGNED param to EXECUTE returns ERROR 1210
|
||||
#
|
||||
|
||||
prepare stmt from "select ?";
|
||||
set @arg= 123456789.987654321;
|
||||
select @arg;
|
||||
execute stmt using @arg;
|
||||
set @arg= "string";
|
||||
select @arg;
|
||||
execute stmt using @arg;
|
||||
set @arg= 123456;
|
||||
select @arg;
|
||||
execute stmt using @arg;
|
||||
set @arg= cast(-12345.54321 as decimal(20, 10));
|
||||
select @arg;
|
||||
execute stmt using @arg;
|
||||
deallocate prepare stmt;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
@ -1255,5 +1255,25 @@ set GLOBAL query_cache_type=default;
|
||||
set GLOBAL query_cache_limit=default;
|
||||
set GLOBAL query_cache_min_res_unit=default;
|
||||
set GLOBAL query_cache_size=default;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug#33756 - query cache with concurrent_insert=0 appears broken
|
||||
#
|
||||
FLUSH STATUS;
|
||||
SET GLOBAL query_cache_size=10*1024*1024;
|
||||
SET @save_concurrent_insert= @@concurrent_insert;
|
||||
SET GLOBAL concurrent_insert= 0;
|
||||
CREATE TABLE t1 (c1 INT NOT NULL) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (c1) VALUES (1), (2);
|
||||
#
|
||||
SHOW GLOBAL VARIABLES LIKE 'concurrent_insert';
|
||||
SHOW STATUS LIKE 'Qcache_hits';
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t1;
|
||||
SHOW STATUS LIKE 'Qcache_hits';
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL concurrent_insert= @save_concurrent_insert;
|
||||
SET GLOBAL query_cache_size= default;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
@ -955,4 +955,21 @@ explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #33833: different or-ed predicates were erroneously merged into one that
|
||||
# resulted in ref access instead of range access and a wrong result set
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a varchar(32), index (a)
|
||||
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
|
||||
|
||||
SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
@ -224,3 +224,16 @@ SET @x:= (SELECT h FROM t1 WHERE (a,b,c,d,e,f,g)=(1,2,3,4,5,6,7));
|
||||
SELECT @x;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #34620: item_row.cc:50: Item_row::illegal_method_call(const char*):
|
||||
# Assertion `0' failed
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
|
||||
SELECT ROW(a, 1) IN (SELECT SUM(b), 1) FROM t1 GROUP BY a;
|
||||
SELECT ROW(a, 1) IN (SELECT SUM(b), 3) FROM t1 GROUP BY a;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
1
mysql-test/t/rpl_bug33931-slave.opt
Normal file
1
mysql-test/t/rpl_bug33931-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
--loose-debug=d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init
|
37
mysql-test/t/rpl_bug33931.test
Normal file
37
mysql-test/t/rpl_bug33931.test
Normal file
@ -0,0 +1,37 @@
|
||||
# Test for
|
||||
# Bug #33931 assertion at write_ignored_events_info_to_relay_log if init_slave_thread() fails
|
||||
# Bug #33932 assertion at handle_slave_sql if init_slave_thread() fails
|
||||
|
||||
source include/have_debug.inc;
|
||||
source include/have_log_bin.inc;
|
||||
|
||||
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
|
||||
|
||||
|
||||
connection master;
|
||||
reset master;
|
||||
|
||||
connection slave;
|
||||
--disable_warnings
|
||||
stop slave;
|
||||
--enable_warnings
|
||||
reset slave;
|
||||
start slave;
|
||||
|
||||
connection master;
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
|
||||
#
|
||||
# slave is going to stop because of emulated failures
|
||||
# but there won't be any crashes nor asserts hit.
|
||||
#
|
||||
source include/wait_for_slave_to_stop.inc;
|
||||
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
query_vertical show slave status;
|
||||
|
||||
# no clean-up is needed
|
||||
|
1
mysql-test/t/rpl_dual_pos_advance-slave.opt
Normal file
1
mysql-test/t/rpl_dual_pos_advance-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
--innodb
|
@ -7,6 +7,7 @@
|
||||
# It also will test BUG#13861.
|
||||
|
||||
source include/master-slave.inc;
|
||||
source include/have_innodb.inc;
|
||||
|
||||
|
||||
# set up "dual head"
|
||||
@ -30,45 +31,58 @@ save_master_pos;
|
||||
connection master;
|
||||
sync_with_master;
|
||||
|
||||
# Now test BUG#13861. This will be enabled when Guilhem fixes this
|
||||
# bug.
|
||||
#
|
||||
# BUG#13861 - START SLAVE UNTIL may stop 1 evnt too late if
|
||||
# log-slave-updates and circul repl
|
||||
#
|
||||
stop slave;
|
||||
|
||||
# stop slave
|
||||
create table t2 (n int); # create one ignored event
|
||||
|
||||
# create table t2 (n int); # create one ignored event
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
|
||||
# save_master_pos;
|
||||
# connection slave;
|
||||
# sync_with_master;
|
||||
connection slave;
|
||||
|
||||
# connection slave;
|
||||
show tables;
|
||||
|
||||
# show tables;
|
||||
save_master_pos;
|
||||
|
||||
# save_master_pos;
|
||||
create table t3 (n int) engine=innodb;
|
||||
set @a=1;
|
||||
insert into t3 values(@a);
|
||||
begin;
|
||||
insert into t3 values(2);
|
||||
insert into t3 values(3);
|
||||
commit;
|
||||
insert into t3 values(4);
|
||||
|
||||
# create table t3 (n int);
|
||||
|
||||
# connection master;
|
||||
connection master;
|
||||
|
||||
# bug is that START SLAVE UNTIL may stop too late, we test that by
|
||||
# asking it to stop before creation of t3.
|
||||
|
||||
# start slave until master_log_file="slave-bin.000001",master_log_pos=195;
|
||||
|
||||
# wait until it's started (the position below is the start of "CREATE
|
||||
# TABLE t2") (otherwise wait_for_slave_to_stop may return at once)
|
||||
|
||||
# select master_pos_wait("slave-bin.000001",137);
|
||||
|
||||
# wait_for_slave_to_stop;
|
||||
start slave until master_log_file="slave-bin.000001",master_log_pos=195;
|
||||
wait_for_slave_to_stop;
|
||||
|
||||
# then BUG#13861 causes t3 to show up below (because stopped too
|
||||
# late).
|
||||
|
||||
# show tables;
|
||||
show tables;
|
||||
|
||||
# start slave;
|
||||
# ensure that we do not break set @a=1; insert into t3 values(@a);
|
||||
start slave until master_log_file="slave-bin.000001",master_log_pos=438;
|
||||
wait_for_slave_to_stop;
|
||||
select * from t3;
|
||||
|
||||
# ensure that we do not break transaction
|
||||
start slave until master_log_file="slave-bin.000001",master_log_pos=663;
|
||||
wait_for_slave_to_stop;
|
||||
select * from t3;
|
||||
|
||||
start slave;
|
||||
|
||||
# BUG#13023 is that Exec_master_log_pos may stay too low "forever":
|
||||
|
||||
@ -99,7 +113,7 @@ show tables;
|
||||
|
||||
stop slave;
|
||||
reset slave;
|
||||
drop table t1,t4,t5,t6; # add t2 and t3 later
|
||||
drop table t1,t2,t3,t4,t5,t6;
|
||||
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
|
@ -147,12 +147,20 @@ terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
||||
'\n##\n' starting by '>' ignore 1 lines;
|
||||
connection slave;
|
||||
wait_for_slave_to_stop;
|
||||
drop table t2;
|
||||
|
||||
# cleanup:
|
||||
|
||||
set @@global.sql_slave_skip_counter=1;
|
||||
start slave;
|
||||
|
||||
connection master;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
# BUG#17233 LOAD DATA INFILE: failure causes mysqld dbug_assert, binlog not flushed
|
||||
connection master;
|
||||
CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
|
||||
|
||||
--error 1062
|
||||
@ -160,5 +168,6 @@ LOAD DATA INFILE "../std_data_ln/words.dat" INTO TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
sync_with_master;
|
||||
sync_slave_with_master;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -15,4 +15,15 @@ stop slave sql_thread;
|
||||
connection slave;
|
||||
reap;
|
||||
|
||||
#
|
||||
# bug#26622 MASTER_POS_WAIT does not work as documented
|
||||
#
|
||||
|
||||
connection master;
|
||||
echo "*** must be empty ***";
|
||||
query_vertical show slave status;
|
||||
|
||||
echo "*** must be NULL ***";
|
||||
select master_pos_wait('foo', 98);
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -15,12 +15,13 @@ select * from t1;
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_with_master;
|
||||
sync_slave_with_master;
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# #28839 Errors in strict mode silently stop SQL thread if --slave-skip-errors exists
|
||||
#
|
||||
connection master;
|
||||
create table t1(a int primary key);
|
||||
insert into t1 values (1),(2);
|
||||
delete from t1 where @@server_id=1;
|
||||
@ -36,5 +37,5 @@ select * from t1;
|
||||
show slave status;
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_with_master;
|
||||
sync_slave_with_master;
|
||||
# End of 5.0 tests
|
||||
|
@ -29,8 +29,12 @@ start slave;
|
||||
--vertical_results
|
||||
show slave status;
|
||||
|
||||
# cleanup: slave io thread has been stopped "irrecoverably"
|
||||
# so we clean up mess manually
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_with_master;
|
||||
connection slave;
|
||||
drop table t1;
|
||||
|
||||
# end of 4.1 tests
|
||||
|
@ -130,7 +130,7 @@ drop table t1,t2;
|
||||
# don't get any memory leaks for this
|
||||
|
||||
create temporary table t3 (f int);
|
||||
sync_with_master;
|
||||
sync_slave_with_master;
|
||||
|
||||
# The server will now close done
|
||||
|
||||
@ -141,7 +141,8 @@ sync_with_master;
|
||||
connection master;
|
||||
create temporary table t4 (f int);
|
||||
create table t5 (f int);
|
||||
sync_with_master;
|
||||
sync_slave_with_master;
|
||||
connection master;
|
||||
# find dumper's $id
|
||||
source include/get_binlog_dump_thread_id.inc;
|
||||
insert into t4 values (1);
|
||||
|
@ -39,7 +39,7 @@ COMMIT;
|
||||
BEGIN;
|
||||
INSERT INTO tmyisam VALUES (5);
|
||||
INSERT INTO tmyisam VALUES (6);
|
||||
--warning 1196
|
||||
#--warning 1196
|
||||
ROLLBACK;
|
||||
|
||||
SELECT * FROM tmyisam ORDER BY a;
|
||||
|
@ -337,6 +337,23 @@ select * from t1;
|
||||
connection master;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#33851: Passing UNSIGNED param to EXECUTE returns ERROR 1210
|
||||
#
|
||||
|
||||
connection master;
|
||||
create table t1(a int);
|
||||
insert into t1 values (1),(2);
|
||||
prepare s1 from 'insert into t1 select a from t1 limit ?';
|
||||
set @x='1.1';
|
||||
execute s1 using @x;
|
||||
select * from t1;
|
||||
sync_slave_with_master;
|
||||
connection slave;
|
||||
select * from t1;
|
||||
connection master;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
# This test uses a stored function that uses user-defined variables to return data
|
||||
|
@ -1,5 +1,7 @@
|
||||
source include/master-slave.inc;
|
||||
|
||||
connection master;
|
||||
|
||||
# Init for rstore of variable values
|
||||
set @my_slave_net_timeout =@@global.slave_net_timeout;
|
||||
|
||||
@ -18,3 +20,8 @@ show variables like 'slave_skip_errors';
|
||||
|
||||
# Restore touched values
|
||||
set global slave_net_timeout =@my_slave_net_timeout;
|
||||
|
||||
# bug#34427 slave misses rendezvous
|
||||
# don't let the master be shut down until the slave has connected
|
||||
sync_slave_with_master;
|
||||
|
||||
|
@ -3672,4 +3672,33 @@ DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
|
||||
###########################################################################
|
||||
|
||||
#
|
||||
# Bug #33764: Wrong result with IN(), CONCAT() and implicit type conversion
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY);
|
||||
INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0');
|
||||
SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar');
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #32942 now() - interval '7200' second is NOT pre-calculated, causing "full table scan"
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
CREATE TABLE t2 (a INT, c INT, KEY(a));
|
||||
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2);
|
||||
INSERT INTO t2 VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5),
|
||||
(2, 1), (2, 2), (2, 3), (2, 4), (2, 5),
|
||||
(3, 1), (3, 2), (3, 3), (3, 4), (3, 5),
|
||||
(4, 1), (4, 2), (4, 3), (4, 4), (4, 5);
|
||||
|
||||
FLUSH STATUS;
|
||||
SELECT DISTINCT b FROM t1 LEFT JOIN t2 USING(a) WHERE c <= 3;
|
||||
SHOW STATUS LIKE 'Handler_read%';
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -7774,6 +7774,25 @@ call proc_33618(20);
|
||||
|
||||
drop table t_33618;
|
||||
drop procedure proc_33618;
|
||||
--echo #
|
||||
--echo # Bug#30787: Stored function ignores user defined alias.
|
||||
--echo #
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop function if exists func30787;
|
||||
--enable_warnings
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2);
|
||||
delimiter |;
|
||||
create function func30787(p1 int) returns int
|
||||
begin
|
||||
return p1;
|
||||
end |
|
||||
delimiter ;|
|
||||
select (select func30787(f1)) as ttt from t1;
|
||||
drop function func30787;
|
||||
drop table t1;
|
||||
|
||||
|
||||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 5.0 tests
|
||||
|
@ -3006,92 +3006,44 @@ DROP TABLE t1,t2;
|
||||
create table t1(a int,b int,key(a),key(b));
|
||||
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
|
||||
(6,7),(7,4),(5,3);
|
||||
# test for the stack overflow bug
|
||||
select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
--replace_regex /overrun.*$/overrun detected/
|
||||
--error 1436
|
||||
select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
# test for the memory consumption & subquery slowness bug
|
||||
explain select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
--replace_regex /overrun.*$/overrun detected/
|
||||
--error 1436
|
||||
explain select sum(a),a from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
||||
select sum(a) from t1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
||||
group by a;
|
||||
|
||||
let $nesting= 26;
|
||||
let $should_work_nesting= 5;
|
||||
let $start= select sum(a),a from t1 where a> ( select sum(a) from t1 ;
|
||||
let $end= )group by a ;
|
||||
let $start_app= where a> ( select sum(a) from t1 ;
|
||||
let $end_pre= )group by b limit 1 ;
|
||||
|
||||
--disable_result_log
|
||||
--disable_query_log
|
||||
# At least 4 level nesting should work without errors
|
||||
while ($should_work_nesting)
|
||||
{
|
||||
--echo $should_work_nesting
|
||||
eval $start $end;
|
||||
eval explain $start $end;
|
||||
let $start= $start
|
||||
$start_app;
|
||||
let $end= $end_pre
|
||||
$end;
|
||||
dec $should_work_nesting;
|
||||
}
|
||||
# Other may fail with the 'stack overrun error'
|
||||
while ($nesting)
|
||||
{
|
||||
--echo $nesting
|
||||
--error 0,1436
|
||||
eval $start $end;
|
||||
--error 0,1436
|
||||
eval explain $start $end;
|
||||
let $start= $start
|
||||
$start_app;
|
||||
let $end= $end_pre
|
||||
$end;
|
||||
dec $nesting;
|
||||
}
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
|
@ -127,29 +127,22 @@ drop table t1;
|
||||
#
|
||||
# BUG#32111 - Security Breach via DATA/INDEX DIRECORY and RENAME TABLE
|
||||
#
|
||||
--replace_result $MYSQLTEST_VARDIR TEST_DIR
|
||||
eval CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql'
|
||||
INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql';
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/t1.MYI
|
||||
EOF
|
||||
--replace_result $MYSQLTEST_VARDIR TEST_DIR
|
||||
--error 1
|
||||
RENAME TABLE t1 TO user;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Test specifying DATA DIRECTORY that is the same as what would normally
|
||||
# have been chosen. (Bug #8707)
|
||||
#
|
||||
disable_query_log;
|
||||
eval create table t1 (i int) data directory = "$MYSQLTEST_VARDIR/master-data/test/";
|
||||
enable_query_log;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
disable_query_log;
|
||||
eval create table t1 (i int) index directory = "$MYSQLTEST_VARDIR/master-data/test/";
|
||||
enable_query_log;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
eval CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp'
|
||||
INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp';
|
||||
--replace_result $MYSQLTEST_VARDIR TEST_DIR
|
||||
eval CREATE TABLE t2(a INT)
|
||||
DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp'
|
||||
INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp';
|
||||
--replace_result $MYSQLTEST_VARDIR TEST_DIR
|
||||
--error 1
|
||||
RENAME TABLE t2 TO t1;
|
||||
DROP TABLE t2;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/t1.MYI
|
||||
|
||||
#
|
||||
# Bug#8706 - temporary table with data directory option fails
|
||||
@ -188,44 +181,61 @@ connection default;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# CREATE TABLE with DATA DIRECTORY option
|
||||
#
|
||||
# Protect ourselves from data left in tmp/ by a previos possibly failed
|
||||
# test
|
||||
--system rm -f $MYSQLTEST_VARDIR/tmp/t1.*
|
||||
--disable_query_log
|
||||
eval prepare stmt from "create table t1 (c char(10)) data directory='$MYSQLTEST_VARDIR/tmp'";
|
||||
--enable_query_log
|
||||
execute stmt;
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
execute stmt;
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
|
||||
#
|
||||
# Bug#32167 another privilege bypass with DATA/INDEX DIRECORY
|
||||
#
|
||||
--replace_result $MYSQL_TEST_DIR TEST_DIR
|
||||
--error 1,1210
|
||||
eval CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='$MYSQL_TEST_DIR/var/master-data/test';
|
||||
--replace_result $MYSQL_TEST_DIR TEST_DIR
|
||||
--error 1,1210
|
||||
eval CREATE TABLE t1(a INT)
|
||||
DATA DIRECTORY='$MYSQL_TEST_DIR/var/master-data/';
|
||||
--replace_result $MYSQL_TEST_DIR TEST_DIR
|
||||
--error 1,1210
|
||||
eval CREATE TABLE t1(a INT)
|
||||
INDEX DIRECTORY='$MYSQL_TEST_DIR/var/master-data';
|
||||
--replace_result $MYSQL_TEST_DIR TEST_DIR
|
||||
--error 1,1210
|
||||
eval CREATE TABLE t1(a INT)
|
||||
INDEX DIRECTORY='$MYSQL_TEST_DIR/var/master-data_var';
|
||||
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug #29325: create table overwrites .MYD file of other table (datadir)
|
||||
#
|
||||
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
|
||||
USE db2;
|
||||
--disable_query_log
|
||||
eval CREATE TABLE t1 (b INT) ENGINE MYISAM
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/';
|
||||
--enable_query_log
|
||||
|
||||
INSERT INTO db2.t1 VALUES (1);
|
||||
SELECT * FROM db2.t1;
|
||||
RESET QUERY CACHE;
|
||||
|
||||
USE db1;
|
||||
|
||||
#no warning from create table
|
||||
SET SESSION keep_files_on_create = TRUE;
|
||||
--write_file $MYSQLTEST_VARDIR/master-data/test/t1.MYD
|
||||
EOF
|
||||
--disable_abort_on_error
|
||||
--error 1
|
||||
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||
--error 0,1
|
||||
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.MYD;
|
||||
--enable_abort_on_error
|
||||
|
||||
CREATE TABLE t3 (a INT) Engine=MyISAM;
|
||||
INSERT INTO t3 VALUES (1),(2),(3);
|
||||
TRUNCATE TABLE t3;
|
||||
SELECT * from t3;
|
||||
|
||||
SET SESSION keep_files_on_create = DEFAULT;
|
||||
|
||||
DROP TABLE db2.t1, db1.t3;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
USE test;
|
||||
|
||||
SET SESSION keep_files_on_create = FALSE;
|
||||
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -49,3 +49,16 @@ drop table t2,t1;
|
||||
unlock tables;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#23588 SHOW COLUMNS on a temporary table causes locking issues
|
||||
#
|
||||
create temporary table t1(f1 int);
|
||||
lock tables t1 write;
|
||||
insert into t1 values (1);
|
||||
show columns from t1;
|
||||
insert into t1 values(2);
|
||||
drop table t1;
|
||||
unlock tables;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
@ -128,5 +128,37 @@ drop table t1, t2, t3;
|
||||
disconnect connection_update;
|
||||
disconnect connection_aux;
|
||||
|
||||
#
|
||||
# Bug#34643: TRUNCATE crash if trigger and foreign key.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=innodb;
|
||||
CREATE TABLE t2(b INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=innodb;
|
||||
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
CREATE TRIGGER t1_bd BEFORE DELETE ON t1 FOR EACH ROW SET @a = 1;
|
||||
CREATE TRIGGER t1_ad AFTER DELETE ON t1 FOR EACH ROW SET @b = 1;
|
||||
|
||||
SET @a = 0;
|
||||
SET @b = 0;
|
||||
|
||||
TRUNCATE t1;
|
||||
|
||||
SELECT @a, @b;
|
||||
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
DELETE FROM t1;
|
||||
|
||||
SELECT @a, @b;
|
||||
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -56,3 +56,23 @@ set('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17',
|
||||
'50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','1'));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#15409: Columns with SET datatype with 64-element sets
|
||||
# may not be updated with integers
|
||||
#
|
||||
|
||||
let $i=64;
|
||||
let $s='$i';
|
||||
dec $i;
|
||||
while ($i) {
|
||||
let $s='$i',$s;
|
||||
dec $i;
|
||||
}
|
||||
--eval CREATE TABLE t1(c set($s))
|
||||
INSERT INTO t1 VALUES(7);
|
||||
INSERT INTO t1 VALUES(9223372036854775808);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -3470,5 +3470,73 @@ insert into v1 values(1);
|
||||
set @@sql_mode=@old_mode;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
#
|
||||
# Bug #33389: Selecting from a view into a table from within SP or trigger
|
||||
# crashes server
|
||||
#
|
||||
|
||||
create table t1 (a int, key(a));
|
||||
create table t2 (c int);
|
||||
|
||||
create view v1 as select a b from t1;
|
||||
create view v2 as select 1 a from t2, v1 where c in
|
||||
(select 1 from t1 where b = a);
|
||||
|
||||
insert into t1 values (1), (1);
|
||||
insert into t2 values (1), (1);
|
||||
|
||||
prepare stmt from "select * from v2 where a = 1";
|
||||
execute stmt;
|
||||
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug #33049: Assert while running test-as3ap test(mysql-bench suite)
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE VIEW v1 AS SELECT p.a AS a FROM t1 p, t1 q;
|
||||
|
||||
INSERT INTO t1 VALUES (1), (1);
|
||||
SELECT MAX(a), COUNT(DISTINCT a) FROM v1 GROUP BY a;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
###########################################################################
|
||||
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo # -- Bug#34337: Server crash when Altering a view using a table name.
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
|
||||
CREATE TABLE t1(c1 INT);
|
||||
|
||||
--echo
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
--error ER_WRONG_OBJECT
|
||||
ALTER ALGORITHM=TEMPTABLE SQL SECURITY INVOKER VIEW t1 (c2) AS SELECT (1);
|
||||
|
||||
--echo
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
--echo # -- End of test case for Bug#34337.
|
||||
--echo
|
||||
|
||||
###########################################################################
|
||||
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo # -- End of 5.0 tests.
|
||||
--echo # -----------------------------------------------------------------
|
||||
|
@ -608,6 +608,7 @@ drop database mysqltest;
|
||||
#
|
||||
--disable_warnings
|
||||
drop view if exists v1;
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
# Backup anonymous users and remove them. (They get in the way of
|
||||
|
@ -212,4 +212,37 @@ DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
DROP PROCEDURE sp3;
|
||||
|
||||
|
||||
#
|
||||
# Bug#30059: End-space truncation warnings are inconsistent or incorrect
|
||||
#
|
||||
|
||||
create table t1 (c_char char(255), c_varchar varchar(255), c_tinytext tinytext);
|
||||
create table t2 (c_tinyblob tinyblob); # not affected by bug, for regression testing
|
||||
set @c = repeat(' ', 256);
|
||||
set @q = repeat('q', 256);
|
||||
|
||||
set sql_mode = '';
|
||||
|
||||
insert into t1 values(@c, @c, @c);
|
||||
insert into t2 values(@c);
|
||||
insert into t1 values(@q, @q, @q);
|
||||
insert into t2 values(@q);
|
||||
|
||||
set sql_mode = 'traditional';
|
||||
|
||||
insert into t1 values(@c, @c, @c);
|
||||
--error 1406
|
||||
insert into t2 values(@c);
|
||||
--error 1406
|
||||
insert into t1 values(@q, NULL, NULL);
|
||||
--error 1406
|
||||
insert into t1 values(NULL, @q, NULL);
|
||||
--error 1406
|
||||
insert into t1 values(NULL, NULL, @q);
|
||||
--error 1406
|
||||
insert into t2 values(@q);
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
Reference in New Issue
Block a user