mirror of
https://github.com/MariaDB/server.git
synced 2025-11-05 01:43:31 +03:00
Manual merge of mysql-5.1-bugteam into mysql-trunk-merge.
Conflicts: Text conflict in .bzr-mysql/default.conf Text conflict in mysql-test/suite/rpl/r/rpl_slow_query_log.result Text conflict in mysql-test/suite/rpl/t/rpl_slow_query_log.test Conflict adding files to server-tools. Created directory. Conflict because server-tools is not versioned, but has versioned children. Versioned directory. Conflict adding files to server-tools/instance-manager. Created directory. Conflict because server-tools/instance-manager is not versioned, but has versioned children. Versioned directory. Contents conflict in server-tools/instance-manager/options.cc Text conflict in sql/mysqld.cc
This commit is contained in:
32
mysql-test/r/bug39022.result
Normal file
32
mysql-test/r/bug39022.result
Normal file
@@ -0,0 +1,32 @@
|
||||
#
|
||||
# Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees
|
||||
#
|
||||
CREATE TABLE t1(a TINYINT NOT NULL,b TINYINT,PRIMARY KEY(b)) ENGINE=innodb;
|
||||
CREATE TABLE t2(d TINYINT NOT NULL,UNIQUE KEY(d)) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (13,0),(8,1),(9,2),(6,3),
|
||||
(11,5),(11,6),(7,7),(7,8),(4,9),(6,10),(3,11),(11,12),
|
||||
(12,13),(7,14);
|
||||
INSERT INTO t2 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
|
||||
(11),(12),(13),(14);
|
||||
# in thread1
|
||||
START TRANSACTION;
|
||||
# in thread2
|
||||
REPLACE INTO t2 VALUES (-17);
|
||||
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
|
||||
d
|
||||
# in thread1
|
||||
REPLACE INTO t1(a,b) VALUES (67,20);
|
||||
# in thread2
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
REPLACE INTO t1(a,b) VALUES (65,-50);
|
||||
REPLACE INTO t2 VALUES (-91);
|
||||
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
|
||||
# in thread1
|
||||
# should not crash
|
||||
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
# in thread2
|
||||
d
|
||||
# in default
|
||||
DROP TABLE t1,t2;
|
||||
@@ -1703,3 +1703,91 @@ COUNT(i)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
SET @@sql_mode = @old_sql_mode;
|
||||
#
|
||||
# Bug #45640: optimizer bug produces wrong results
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (4, 40), (1, 10), (2, 20), (2, 20), (3, 30);
|
||||
# should return 4 ordered records:
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa;
|
||||
aa COUNT(DISTINCT b)
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
SELECT (SELECT (SELECT t1.a)) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa;
|
||||
aa COUNT(DISTINCT b)
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa+0;
|
||||
aa COUNT(DISTINCT b)
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
# should return the same result in a reverse order:
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY -aa;
|
||||
aa COUNT(DISTINCT b)
|
||||
4 1
|
||||
3 1
|
||||
2 1
|
||||
1 1
|
||||
# execution plan should not use temporary table:
|
||||
EXPLAIN EXTENDED
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa+0;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 100.00 Using filesort
|
||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select (select `test`.`t1`.`a` AS `a`) AS `aa`,count(distinct `test`.`t1`.`b`) AS `COUNT(DISTINCT b)` from `test`.`t1` group by ((select `test`.`t1`.`a` AS `a`) + 0)
|
||||
EXPLAIN EXTENDED
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY -aa;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 100.00 Using filesort
|
||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select (select `test`.`t1`.`a` AS `a`) AS `aa`,count(distinct `test`.`t1`.`b`) AS `COUNT(DISTINCT b)` from `test`.`t1` group by -((select `test`.`t1`.`a` AS `a`))
|
||||
# should return only one record
|
||||
SELECT (SELECT tt.a FROM t1 tt LIMIT 1) aa, COUNT(DISTINCT b) FROM t1
|
||||
GROUP BY aa;
|
||||
aa COUNT(DISTINCT b)
|
||||
4 4
|
||||
CREATE TABLE t2 SELECT DISTINCT a FROM t1;
|
||||
# originally reported queries (1st two columns of next two query
|
||||
# results should be same):
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT(DISTINCT b)
|
||||
FROM t1 GROUP BY aa, b;
|
||||
aa b COUNT(DISTINCT b)
|
||||
1 10 1
|
||||
2 20 1
|
||||
3 30 1
|
||||
4 40 1
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT( b)
|
||||
FROM t1 GROUP BY aa, b;
|
||||
aa b COUNT( b)
|
||||
1 10 1
|
||||
2 20 2
|
||||
3 30 1
|
||||
4 40 1
|
||||
# ORDER BY for sure:
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT(DISTINCT b)
|
||||
FROM t1 GROUP BY aa, b ORDER BY -aa, -b;
|
||||
aa b COUNT(DISTINCT b)
|
||||
4 40 1
|
||||
3 30 1
|
||||
2 20 1
|
||||
1 10 1
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT( b)
|
||||
FROM t1 GROUP BY aa, b ORDER BY -aa, -b;
|
||||
aa b COUNT( b)
|
||||
4 40 1
|
||||
3 30 1
|
||||
2 20 2
|
||||
1 10 1
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# End of 5.1 tests
|
||||
|
||||
@@ -2273,6 +2273,14 @@ END|
|
||||
DROP PROCEDURE p1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug #49324: more valgrind errors in test_if_skip_sort_order
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ;
|
||||
#should not cause valgrind warnings
|
||||
SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a;
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Test for bug #39932 "create table fails if column for FK is in different
|
||||
|
||||
2
mysql-test/r/no_binlog.result
Normal file
2
mysql-test/r/no_binlog.result
Normal file
@@ -0,0 +1,2 @@
|
||||
SHOW BINARY LOGS;
|
||||
ERROR HY000: You are not using binary logging
|
||||
@@ -270,6 +270,17 @@ SELECT RELEASE_LOCK('Bug44521');
|
||||
RELEASE_LOCK('Bug44521')
|
||||
1
|
||||
DROP PROCEDURE p;
|
||||
CREATE TABLE t1(a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE FUNCTION f1 (inp TEXT) RETURNS INT NO SQL RETURN sleep(60);
|
||||
CREATE VIEW v1 AS SELECT f1('a') FROM t1;
|
||||
SELECT * FROM v1;;
|
||||
SELECT * FROM v1;
|
||||
ERROR 70100: Query execution was interrupted
|
||||
ERROR 70100: Query execution was interrupted
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
DROP FUNCTION f1;
|
||||
# ------------------------------------------------------------------
|
||||
# -- End of 5.1 tests
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
@@ -4615,4 +4615,16 @@ FROM t1,t1 a
|
||||
);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #45989 take 2 : memory leak after explain encounters an
|
||||
# error in the query
|
||||
#
|
||||
CREATE TABLE t1(a LONGTEXT);
|
||||
INSERT INTO t1 VALUES (repeat('a',@@global.max_allowed_packet));
|
||||
INSERT INTO t1 VALUES (repeat('b',@@global.max_allowed_packet));
|
||||
EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
||||
(SELECT DISTINCTROW a AS away FROM t1 GROUP BY a WITH ROLLUP) AS d1
|
||||
WHERE t1.a = d1.a;
|
||||
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests.
|
||||
|
||||
@@ -4,6 +4,7 @@ reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
|
||||
include/stop_slave.inc
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
@@ -45,3 +46,46 @@ include/stop_slave.inc
|
||||
SET GLOBAL long_query_time= @old_long_query_time;
|
||||
SET GLOBAL log_output= @old_log_output;
|
||||
include/start_slave.inc
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET GLOBAL long_query_time= 2;
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET SESSION long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
include/stop_slave.inc
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET GLOBAL long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
include/start_slave.inc
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
********************************************************************
|
||||
**** INSERT one row that exceeds long_query_time
|
||||
**** Outcome: query ends up in both master and slave slow log
|
||||
********************************************************************
|
||||
INSERT INTO t1 values(1, sleep(3));
|
||||
### Assertion is good. Both Master and Slave exhibit the
|
||||
### same number of queries in slow log: 1
|
||||
TRUNCATE mysql.slow_log;
|
||||
TRUNCATE mysql.slow_log;
|
||||
********************************************************************
|
||||
**** Now do inserts again, but first add an index to the table.
|
||||
**** Outcome: Note that the slave contains the same one entry (as
|
||||
**** the master does) whereas before the patch it did not.
|
||||
********************************************************************
|
||||
ALTER TABLE t1 ADD INDEX id1(a);
|
||||
INSERT INTO t1 values(1, sleep(3));
|
||||
### Assertion is good. Both Master and Slave exhibit the
|
||||
### same number of queries in slow log: 1
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
||||
DROP TABLE t1;
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# if the path of the load data file is a symbolic link.
|
||||
#
|
||||
--source include/master-slave.inc
|
||||
--source include/not_windows.inc
|
||||
--source include/have_binlog_format_statement.inc
|
||||
|
||||
create table t1(a int not null auto_increment, b int, primary key(a) );
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
source include/master-slave.inc;
|
||||
source include/have_binlog_format_statement.inc;
|
||||
|
||||
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
|
||||
|
||||
|
||||
# Prepare slave for different long_query_time we need to stop the slave
|
||||
# and restart it as long_query_time variable is dynamic and, after
|
||||
@@ -189,3 +191,119 @@ source include/start_slave.inc;
|
||||
|
||||
disconnect extra;
|
||||
disconnect extra2;
|
||||
|
||||
#
|
||||
# BUG#50620: Adding an index to a table prevents slave from logging into slow log
|
||||
#
|
||||
|
||||
-- source include/master-slave-reset.inc
|
||||
|
||||
-- connection master
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET GLOBAL long_query_time= 2;
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET SESSION long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
-- connection slave
|
||||
|
||||
-- source include/stop_slave.inc
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET GLOBAL long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
-- source include/start_slave.inc
|
||||
|
||||
let $slow_query= INSERT INTO t1 values(1, sleep(3));
|
||||
|
||||
-- connection master
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
|
||||
-- echo ********************************************************************
|
||||
-- echo **** INSERT one row that exceeds long_query_time
|
||||
-- echo **** Outcome: query ends up in both master and slave slow log
|
||||
-- echo ********************************************************************
|
||||
|
||||
-- disable_warnings
|
||||
-- eval $slow_query
|
||||
-- enable_warnings
|
||||
|
||||
let $master_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
-- sync_slave_with_master
|
||||
let $slave_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if (`SELECT $master_slow_query != $slave_slow_query`)
|
||||
{
|
||||
-- connection master
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING MASTER SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- connection slave
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING SLAVE SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- die "Assertion failed! Master and slave slow log contents differ. Bailing out!"
|
||||
}
|
||||
|
||||
if (`SELECT $master_slow_query = $slave_slow_query`)
|
||||
{
|
||||
-- echo ### Assertion is good. Both Master and Slave exhibit the
|
||||
-- echo ### same number of queries in slow log: $master_slow_query
|
||||
}
|
||||
|
||||
TRUNCATE mysql.slow_log;
|
||||
-- connection master
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
-- echo ********************************************************************
|
||||
-- echo **** Now do inserts again, but first add an index to the table.
|
||||
-- echo **** Outcome: Note that the slave contains the same one entry (as
|
||||
-- echo **** the master does) whereas before the patch it did not.
|
||||
-- echo ********************************************************************
|
||||
|
||||
ALTER TABLE t1 ADD INDEX id1(a);
|
||||
|
||||
-- disable_warnings
|
||||
-- eval $slow_query
|
||||
-- enable_warnings
|
||||
|
||||
let $master_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
-- sync_slave_with_master
|
||||
let $slave_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if (`SELECT $master_slow_query != $slave_slow_query`)
|
||||
{
|
||||
-- connection master
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING MASTER SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- connection slave
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING SLAVE SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- die "Assertion failed! Master and slave slow log contents differ. Bailing out!"
|
||||
}
|
||||
|
||||
if (`SELECT $master_slow_query = $slave_slow_query`)
|
||||
{
|
||||
-- echo ### Assertion is good. Both Master and Slave exhibit the
|
||||
-- echo ### same number of queries in slow log: $master_slow_query
|
||||
}
|
||||
|
||||
-- connection master
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- sync_slave_with_master
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
||||
|
||||
58
mysql-test/t/bug39022.test
Normal file
58
mysql-test/t/bug39022.test
Normal file
@@ -0,0 +1,58 @@
|
||||
-- source include/have_log_bin.inc
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a TINYINT NOT NULL,b TINYINT,PRIMARY KEY(b)) ENGINE=innodb;
|
||||
CREATE TABLE t2(d TINYINT NOT NULL,UNIQUE KEY(d)) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (13,0),(8,1),(9,2),(6,3),
|
||||
(11,5),(11,6),(7,7),(7,8),(4,9),(6,10),(3,11),(11,12),
|
||||
(12,13),(7,14);
|
||||
INSERT INTO t2 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
|
||||
(11),(12),(13),(14);
|
||||
|
||||
connect (thread1, localhost, root,,);
|
||||
connect (thread2, localhost, root,,);
|
||||
|
||||
connection thread1;
|
||||
--echo # in thread1
|
||||
START TRANSACTION;
|
||||
|
||||
connection thread2;
|
||||
--echo # in thread2
|
||||
REPLACE INTO t2 VALUES (-17);
|
||||
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
|
||||
|
||||
connection thread1;
|
||||
--echo # in thread1
|
||||
REPLACE INTO t1(a,b) VALUES (67,20);
|
||||
|
||||
connection thread2;
|
||||
--echo # in thread2
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
REPLACE INTO t1(a,b) VALUES (65,-50);
|
||||
REPLACE INTO t2 VALUES (-91);
|
||||
send;
|
||||
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); #waits
|
||||
|
||||
connection thread1;
|
||||
--echo # in thread1
|
||||
|
||||
--echo # should not crash
|
||||
--error ER_LOCK_DEADLOCK
|
||||
SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); #crashes
|
||||
|
||||
connection thread2;
|
||||
--echo # in thread2
|
||||
REAP;
|
||||
|
||||
connection default;
|
||||
--echo # in default
|
||||
|
||||
disconnect thread1;
|
||||
disconnect thread2;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
@@ -1158,3 +1158,53 @@ SELECT COUNT(i) FROM t1 WHERE i > 1;
|
||||
DROP TABLE t1;
|
||||
SET @@sql_mode = @old_sql_mode;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #45640: optimizer bug produces wrong results
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (4, 40), (1, 10), (2, 20), (2, 20), (3, 30);
|
||||
|
||||
--echo # should return 4 ordered records:
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa;
|
||||
|
||||
SELECT (SELECT (SELECT t1.a)) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa;
|
||||
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa+0;
|
||||
|
||||
--echo # should return the same result in a reverse order:
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY -aa;
|
||||
|
||||
--echo # execution plan should not use temporary table:
|
||||
EXPLAIN EXTENDED
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY aa+0;
|
||||
|
||||
EXPLAIN EXTENDED
|
||||
SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) FROM t1 GROUP BY -aa;
|
||||
|
||||
--echo # should return only one record
|
||||
SELECT (SELECT tt.a FROM t1 tt LIMIT 1) aa, COUNT(DISTINCT b) FROM t1
|
||||
GROUP BY aa;
|
||||
|
||||
CREATE TABLE t2 SELECT DISTINCT a FROM t1;
|
||||
|
||||
--echo # originally reported queries (1st two columns of next two query
|
||||
--echo # results should be same):
|
||||
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT(DISTINCT b)
|
||||
FROM t1 GROUP BY aa, b;
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT( b)
|
||||
FROM t1 GROUP BY aa, b;
|
||||
|
||||
--echo # ORDER BY for sure:
|
||||
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT(DISTINCT b)
|
||||
FROM t1 GROUP BY aa, b ORDER BY -aa, -b;
|
||||
SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT( b)
|
||||
FROM t1 GROUP BY aa, b ORDER BY -aa, -b;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
|
||||
--echo # End of 5.1 tests
|
||||
|
||||
@@ -536,6 +536,16 @@ DROP PROCEDURE p1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #49324: more valgrind errors in test_if_skip_sort_order
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ;
|
||||
--echo #should not cause valgrind warnings
|
||||
SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
|
||||
6
mysql-test/t/no_binlog.test
Normal file
6
mysql-test/t/no_binlog.test
Normal file
@@ -0,0 +1,6 @@
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# BUG#50780: 'show binary logs' debug assertion when binary logging is disabled
|
||||
|
||||
-- error ER_NO_BINARY_LOGGING
|
||||
SHOW BINARY LOGS;
|
||||
@@ -413,6 +413,43 @@ let $wait_condition=
|
||||
--source include/wait_condition.inc
|
||||
DROP PROCEDURE p;
|
||||
|
||||
#
|
||||
# Bug#47736 killing a select from a view when the view is processing a function, asserts
|
||||
#
|
||||
CREATE TABLE t1(a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE FUNCTION f1 (inp TEXT) RETURNS INT NO SQL RETURN sleep(60);
|
||||
CREATE VIEW v1 AS SELECT f1('a') FROM t1;
|
||||
|
||||
--connect (con1, localhost, root,,)
|
||||
--let $ID_1= `SELECT connection_id()`
|
||||
--send SELECT * FROM v1;
|
||||
|
||||
--connect (con2, localhost, root,,)
|
||||
--let $ID_2= `SELECT connection_id()`
|
||||
--send SELECT * FROM v1
|
||||
|
||||
--connection default
|
||||
--disable_query_log
|
||||
--eval KILL QUERY $ID_2
|
||||
--eval KILL QUERY $ID_1
|
||||
--enable_query_log
|
||||
|
||||
--connection con1
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
--reap
|
||||
--connection con2
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
--reap
|
||||
|
||||
--connection default
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
DROP FUNCTION f1;
|
||||
--disconnect con1
|
||||
--disconnect con2
|
||||
|
||||
|
||||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 5.1 tests
|
||||
--echo # ------------------------------------------------------------------
|
||||
|
||||
@@ -3600,4 +3600,21 @@ SELECT 1 FROM t1 WHERE a <> SOME
|
||||
);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #45989 take 2 : memory leak after explain encounters an
|
||||
--echo # error in the query
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a LONGTEXT);
|
||||
INSERT INTO t1 VALUES (repeat('a',@@global.max_allowed_packet));
|
||||
INSERT INTO t1 VALUES (repeat('b',@@global.max_allowed_packet));
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
||||
(SELECT DISTINCTROW a AS away FROM t1 GROUP BY a WITH ROLLUP) AS d1
|
||||
WHERE t1.a = d1.a;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
||||
Reference in New Issue
Block a user