mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint client/mysql.cc: Auto merged client/mysqltest.c: Auto merged mysql-test/mysql-test-run.pl: Auto merged mysql-test/r/date_formats.result: Auto merged mysql-test/r/union.result: Auto merged mysql-test/t/union.test: Auto merged sql/field.cc: Auto merged sql/item.cc: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/item_subselect.cc: Auto merged sql/item_sum.cc: Auto merged sql/sql_yacc.yy: Auto merged mysql-test/r/func_group.result: Merge manually mysql-test/t/func_group.test: Merge manually
This commit is contained in:
@ -89,6 +89,7 @@ install-data-local:
|
||||
$(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
|
||||
|
27
mysql-test/include/im_check_env.inc
Normal file
27
mysql-test/include/im_check_env.inc
Normal file
@ -0,0 +1,27 @@
|
||||
# This file is intended to be used in each IM-test. It contains stamements,
|
||||
# that ensure that starting conditions (environment) for the IM-test are as
|
||||
# expected.
|
||||
|
||||
# Wait for mysqld1 (guarded instance) to start.
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started
|
||||
|
||||
# Check the running instances.
|
||||
|
||||
--connect (mysql1_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK)
|
||||
|
||||
--connection mysql1_con
|
||||
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
|
||||
--connection default
|
||||
|
||||
# Let IM detect that mysqld1 is online. This delay should be longer than
|
||||
# monitoring interval.
|
||||
|
||||
--sleep 2
|
||||
|
||||
# Check that IM understands that mysqld1 is online, while mysqld2 is
|
||||
# offline.
|
||||
|
||||
SHOW INSTANCES;
|
@ -2912,12 +2912,16 @@ sub im_stop($) {
|
||||
|
||||
while (1)
|
||||
{
|
||||
# Check that IM-main died.
|
||||
|
||||
if (kill (0, $instance_manager->{'pid'}))
|
||||
{
|
||||
mtr_debug("IM-main is still alive.");
|
||||
last;
|
||||
}
|
||||
|
||||
# Check that IM-angel died.
|
||||
|
||||
if (defined $instance_manager->{'angel_pid'} &&
|
||||
kill (0, $instance_manager->{'angel_pid'}))
|
||||
{
|
||||
@ -2925,21 +2929,39 @@ sub im_stop($) {
|
||||
last;
|
||||
}
|
||||
|
||||
# Check that all guarded mysqld-instances died.
|
||||
|
||||
my $guarded_mysqlds_dead= 1;
|
||||
|
||||
foreach my $pid (@mysqld_pids)
|
||||
{
|
||||
if (kill (0, $pid))
|
||||
{
|
||||
mtr_debug("Guarded mysqld ($pid) is still alive.");
|
||||
$guarded_mysqlds_dead= 0;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
last unless $guarded_mysqlds_dead;
|
||||
|
||||
# Ok, all necessary processes are dead.
|
||||
|
||||
$clean_shutdown= 1;
|
||||
last;
|
||||
}
|
||||
|
||||
# Kill leftovers (the order is important).
|
||||
|
||||
if ($clean_shutdown)
|
||||
{
|
||||
mtr_debug("IM-shutdown was clean -- all processed died.");
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_debug("IM failed to shutdown gracefully. We have to clean the mess...");
|
||||
}
|
||||
|
||||
unless ($clean_shutdown)
|
||||
{
|
||||
|
||||
@ -2960,17 +2982,24 @@ sub im_stop($) {
|
||||
mtr_kill_processes(\@mysqld_pids);
|
||||
|
||||
# Complain in error log so that a warning will be shown.
|
||||
#
|
||||
# TODO: unless BUG#20761 is fixed, we will print the warning
|
||||
# to stdout, so that it can be seen on console and does not
|
||||
# produce pushbuild error.
|
||||
|
||||
my $errlog= "$opt_vardir/log/mysql-test-run.pl.err";
|
||||
|
||||
open (ERRLOG, ">>$errlog") ||
|
||||
mtr_error("Can not open error log ($errlog)");
|
||||
# my $errlog= "$opt_vardir/log/mysql-test-run.pl.err";
|
||||
#
|
||||
# open (ERRLOG, ">>$errlog") ||
|
||||
# mtr_error("Can not open error log ($errlog)");
|
||||
#
|
||||
# my $ts= localtime();
|
||||
# print ERRLOG
|
||||
# "Warning: [$ts] Instance Manager did not shutdown gracefully.\n";
|
||||
#
|
||||
# close ERRLOG;
|
||||
|
||||
my $ts= localtime();
|
||||
print ERRLOG
|
||||
"Warning: [$ts] Instance Manager did not shutdown gracefully.\n";
|
||||
|
||||
close ERRLOG;
|
||||
print "Warning: [$ts] Instance Manager did not shutdown gracefully.\n";
|
||||
}
|
||||
|
||||
# That's all.
|
||||
|
@ -452,7 +452,7 @@ t2 CREATE TABLE `t2` (
|
||||
`ifnull(h,h)` decimal(5,4) default NULL,
|
||||
`ifnull(i,i)` year(4) default NULL,
|
||||
`ifnull(j,j)` date default NULL,
|
||||
`ifnull(k,k)` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`ifnull(k,k)` timestamp NOT NULL default '0000-00-00 00:00:00',
|
||||
`ifnull(l,l)` datetime default NULL,
|
||||
`ifnull(m,m)` varchar(1) default NULL,
|
||||
`ifnull(n,n)` varchar(3) default NULL,
|
||||
|
@ -641,3 +641,16 @@ select charset(group_concat(c1 order by c2)) from t1;
|
||||
charset(group_concat(c1 order by c2))
|
||||
latin1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a INT(10), b LONGTEXT, PRIMARY KEY (a));
|
||||
SET GROUP_CONCAT_MAX_LEN = 20000000;
|
||||
INSERT INTO t1 VALUES (1,REPEAT(CONCAT('A',CAST(CHAR(0) AS BINARY),'B'), 40000));
|
||||
INSERT INTO t1 SELECT a + 1, b FROM t1;
|
||||
SELECT a, CHAR_LENGTH(b) FROM t1;
|
||||
a CHAR_LENGTH(b)
|
||||
1 120000
|
||||
2 120000
|
||||
SELECT CHAR_LENGTH( GROUP_CONCAT(b) ) FROM t1;
|
||||
CHAR_LENGTH( GROUP_CONCAT(b) )
|
||||
240001
|
||||
SET GROUP_CONCAT_MAX_LEN = 1024;
|
||||
DROP TABLE t1;
|
||||
|
@ -988,6 +988,17 @@ SUM(a)
|
||||
6
|
||||
DROP TABLE t1;
|
||||
set div_precision_increment= @sav_dpi;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t2 VALUES (1,1), (3,3);
|
||||
SELECT SQL_NO_CACHE
|
||||
(SELECT SUM(c.a) FROM t1 ttt, t2 ccc
|
||||
WHERE ttt.a = ccc.b AND ttt.a = t.a GROUP BY ttt.a) AS minid
|
||||
FROM t1 t, t2 c WHERE t.a = c.b;
|
||||
minid
|
||||
NULL
|
||||
DROP TABLE t1,t2;
|
||||
create table t1 select variance(0);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
@ -1056,6 +1056,34 @@ a c
|
||||
abc abc abc
|
||||
xyz xyz xyz
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (s varchar(10));
|
||||
INSERT INTO t1 VALUES ('yadda'), ('yaddy');
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(s) > 'ab';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s` AS `s` from `test`.`t1` where (trim(`test`.`t1`.`s`) > _latin1'ab')
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM('y' FROM s) > 'ab';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s` AS `s` from `test`.`t1` where (trim(both _latin1'y' from `test`.`t1`.`s`) > _latin1'ab')
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(LEADING 'y' FROM s) > 'ab';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s` AS `s` from `test`.`t1` where (trim(leading _latin1'y' from `test`.`t1`.`s`) > _latin1'ab')
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(TRAILING 'y' FROM s) > 'ab';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s` AS `s` from `test`.`t1` where (trim(trailing _latin1'y' from `test`.`t1`.`s`) > _latin1'ab')
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(BOTH 'y' FROM s) > 'ab';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s` AS `s` from `test`.`t1` where (trim(both _latin1'y' from `test`.`t1`.`s`) > _latin1'ab')
|
||||
DROP TABLE t1;
|
||||
End of 4.1 tests
|
||||
create table t1 (d decimal default null);
|
||||
insert into t1 values (null);
|
||||
|
@ -796,3 +796,28 @@ aaa
|
||||
show warnings;
|
||||
Level Code Message
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (a tinyint(3), b varchar(255), PRIMARY KEY (a));
|
||||
INSERT INTO t1 VALUES (1,'-----'), (6,'Allemagne'), (17,'Autriche'),
|
||||
(25,'Belgique'), (54,'Danemark'), (62,'Espagne'), (68,'France');
|
||||
CREATE TABLE t2 (a tinyint(3), b tinyint(3), PRIMARY KEY (a), KEY b (b));
|
||||
INSERT INTO t2 VALUES (1,1), (2,1), (6,6), (18,17), (15,25), (16,25),
|
||||
(17,25), (10,54), (5,62),(3,68);
|
||||
CREATE VIEW v1 AS select t1.a, concat(t1.b,'') AS b, t1.b as real_b from t1;
|
||||
explain
|
||||
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||
where t2.b=v1.a GROUP BY t2.b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index b b 2 NULL 10 Using index
|
||||
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 1 test.t2.b 1
|
||||
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||
where t2.b=v1.a GROUP BY t2.b;
|
||||
a b real_b
|
||||
1 ----- -----
|
||||
6 Allemagne Allemagne
|
||||
17 Autriche Autriche
|
||||
25 Belgique Belgique
|
||||
54 Danemark Danemark
|
||||
62 Espagne Espagne
|
||||
68 France France
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -2099,3 +2099,46 @@ SOUTH EAST SOUTH EAST
|
||||
SOUTH WEST SOUTH WEST
|
||||
WESTERN WESTERN
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (id1 INT, id2 INT);
|
||||
CREATE TABLE t2 (id2 INT, id3 INT, id5 INT);
|
||||
CREATE TABLE t3 (id3 INT, id4 INT);
|
||||
CREATE TABLE t4 (id4 INT);
|
||||
CREATE TABLE t5 (id5 INT, id6 INT);
|
||||
CREATE TABLE t6 (id6 INT);
|
||||
INSERT INTO t1 VALUES(1,1);
|
||||
INSERT INTO t2 VALUES(1,1,1);
|
||||
INSERT INTO t3 VALUES(1,1);
|
||||
INSERT INTO t4 VALUES(1);
|
||||
INSERT INTO t5 VALUES(1,1);
|
||||
INSERT INTO t6 VALUES(1);
|
||||
SELECT * FROM
|
||||
t1
|
||||
NATURAL JOIN
|
||||
(t2 JOIN (t3 NATURAL JOIN t4, t5 NATURAL JOIN t6)
|
||||
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));
|
||||
id2 id1 id3 id5 id4 id3 id6 id5
|
||||
1 1 1 1 1 1 1 1
|
||||
SELECT * FROM
|
||||
t1
|
||||
NATURAL JOIN
|
||||
(((t3 NATURAL JOIN t4) join (t5 NATURAL JOIN t6) on t3.id4 = t5.id5) JOIN t2
|
||||
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));
|
||||
id2 id1 id4 id3 id6 id5 id3 id5
|
||||
1 1 1 1 1 1 1 1
|
||||
SELECT * FROM t1 NATURAL JOIN ((t3 join (t5 NATURAL JOIN t6)) JOIN t2);
|
||||
id2 id1 id3 id4 id6 id5 id3 id5
|
||||
1 1 1 1 1 1 1 1
|
||||
SELECT * FROM
|
||||
(t2 JOIN (t3 NATURAL JOIN t4, t5 NATURAL JOIN t6)
|
||||
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5))
|
||||
NATURAL JOIN
|
||||
t1;
|
||||
id2 id3 id5 id4 id3 id6 id5 id1
|
||||
1 1 1 1 1 1 1 1
|
||||
SELECT * FROM
|
||||
(t2 JOIN ((t3 NATURAL JOIN t4) join (t5 NATURAL JOIN t6)))
|
||||
NATURAL JOIN
|
||||
t1;
|
||||
id2 id3 id5 id4 id3 id6 id5 id1
|
||||
1 1 1 1 1 1 1 1
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||
|
@ -1,4 +1,7 @@
|
||||
Success: the process has been started.
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name status
|
||||
mysqld1 online
|
||||
|
@ -1,8 +1,7 @@
|
||||
|
||||
--------------------------------------------------------------------
|
||||
-- 1.1.1.
|
||||
--------------------------------------------------------------------
|
||||
Success: the process has been started.
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name status
|
||||
mysqld1 online
|
||||
@ -40,10 +39,6 @@ ERROR HY000: Bad instance name. Check that the instance with such a name exists
|
||||
--------------------------------------------------------------------
|
||||
-- 1.1.6.
|
||||
--------------------------------------------------------------------
|
||||
SHOW INSTANCES;
|
||||
instance_name status
|
||||
mysqld1 online
|
||||
mysqld2 offline
|
||||
Killing the process...
|
||||
Sleeping...
|
||||
Success: the process was restarted.
|
||||
|
@ -1,8 +1,11 @@
|
||||
server_id = 1
|
||||
server_id = 2
|
||||
Success: the process has been started.
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name status
|
||||
mysqld1 online
|
||||
mysqld2 offline
|
||||
SET mysqld1.server_id = 11;
|
||||
server_id =11
|
||||
server_id = 2
|
||||
|
@ -1,8 +1,11 @@
|
||||
server_id = 1
|
||||
server_id = 2
|
||||
Success: the process has been started.
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name status
|
||||
mysqld1 online
|
||||
mysqld2 offline
|
||||
UNSET mysqld1.server_id;
|
||||
server_id = 2
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
|
@ -1,4 +1,7 @@
|
||||
Success: the process has been started.
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name status
|
||||
mysqld1 online
|
||||
|
@ -1170,3 +1170,73 @@ f1()
|
||||
DROP FUNCTION f1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP USER mysql_bug20230@localhost;
|
||||
SELECT t.table_name, c1.column_name
|
||||
FROM information_schema.tables t
|
||||
INNER JOIN
|
||||
information_schema.columns c1
|
||||
ON t.table_schema = c1.table_schema AND
|
||||
t.table_name = c1.table_name
|
||||
WHERE t.table_schema = 'information_schema' AND
|
||||
c1.ordinal_position =
|
||||
( SELECT COALESCE(MIN(c2.ordinal_position),1)
|
||||
FROM information_schema.columns c2
|
||||
WHERE c2.table_schema = t.table_schema AND
|
||||
c2.table_name = t.table_name AND
|
||||
c2.column_name LIKE '%SCHEMA%'
|
||||
);
|
||||
table_name column_name
|
||||
CHARACTER_SETS CHARACTER_SET_NAME
|
||||
COLLATIONS COLLATION_NAME
|
||||
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
|
||||
COLUMNS TABLE_SCHEMA
|
||||
COLUMN_PRIVILEGES TABLE_SCHEMA
|
||||
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
|
||||
ROUTINES ROUTINE_SCHEMA
|
||||
SCHEMATA SCHEMA_NAME
|
||||
SCHEMA_PRIVILEGES TABLE_SCHEMA
|
||||
STATISTICS TABLE_SCHEMA
|
||||
TABLES TABLE_SCHEMA
|
||||
TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
|
||||
TABLE_PRIVILEGES TABLE_SCHEMA
|
||||
TRIGGERS TRIGGER_SCHEMA
|
||||
USER_PRIVILEGES GRANTEE
|
||||
VIEWS TABLE_SCHEMA
|
||||
SELECT t.table_name, c1.column_name
|
||||
FROM information_schema.tables t
|
||||
INNER JOIN
|
||||
information_schema.columns c1
|
||||
ON t.table_schema = c1.table_schema AND
|
||||
t.table_name = c1.table_name
|
||||
WHERE t.table_schema = 'information_schema' AND
|
||||
c1.ordinal_position =
|
||||
( SELECT COALESCE(MIN(c2.ordinal_position),1)
|
||||
FROM information_schema.columns c2
|
||||
WHERE c2.table_schema = 'information_schema' AND
|
||||
c2.table_name = t.table_name AND
|
||||
c2.column_name LIKE '%SCHEMA%'
|
||||
);
|
||||
table_name column_name
|
||||
CHARACTER_SETS CHARACTER_SET_NAME
|
||||
COLLATIONS COLLATION_NAME
|
||||
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
|
||||
COLUMNS TABLE_SCHEMA
|
||||
COLUMN_PRIVILEGES TABLE_SCHEMA
|
||||
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
|
||||
ROUTINES ROUTINE_SCHEMA
|
||||
SCHEMATA SCHEMA_NAME
|
||||
SCHEMA_PRIVILEGES TABLE_SCHEMA
|
||||
STATISTICS TABLE_SCHEMA
|
||||
TABLES TABLE_SCHEMA
|
||||
TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
|
||||
TABLE_PRIVILEGES TABLE_SCHEMA
|
||||
TRIGGERS TRIGGER_SCHEMA
|
||||
USER_PRIVILEGES GRANTEE
|
||||
VIEWS TABLE_SCHEMA
|
||||
SELECT MAX(table_name) FROM information_schema.tables;
|
||||
MAX(table_name)
|
||||
VIEWS
|
||||
SELECT table_name from information_schema.tables
|
||||
WHERE table_name=(SELECT MAX(table_name)
|
||||
FROM information_schema.tables);
|
||||
table_name
|
||||
VIEWS
|
||||
|
@ -1473,8 +1473,8 @@ Error 1146 Table 'test.t4' doesn't exist
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
|
||||
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
|
||||
select name2 from t1 union all select name from t1 union all select id from t1;
|
||||
name2
|
||||
select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
|
||||
trim(name2)
|
||||
fff
|
||||
sss
|
||||
ttt
|
||||
|
@ -2,3 +2,7 @@
|
||||
1
|
||||
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
ERROR at line 1: USE must be followed by a database name
|
||||
\
|
||||
\\
|
||||
';
|
||||
';
|
||||
|
@ -2220,7 +2220,7 @@ RETURN a+b */;;
|
||||
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;;
|
||||
/*!50003 DROP FUNCTION IF EXISTS `bug9056_func2` */;;
|
||||
/*!50003 SET SESSION SQL_MODE=""*/;;
|
||||
/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 FUNCTION `bug9056_func2`(f1 char binary) RETURNS char(1)
|
||||
/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 FUNCTION `bug9056_func2`(f1 char binary) RETURNS char(1) CHARSET latin1
|
||||
begin
|
||||
set f1= concat( 'hello', f1 );
|
||||
return f1;
|
||||
|
@ -516,77 +516,6 @@ SELECT FOUND_ROWS();
|
||||
FOUND_ROWS()
|
||||
2
|
||||
deallocate prepare stmt;
|
||||
create table t1 (a char(3) not null, b char(3) not null,
|
||||
c char(3) not null, primary key (a, b, c));
|
||||
create table t2 like t1;
|
||||
prepare stmt from
|
||||
"select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b)
|
||||
where t1.a=1";
|
||||
execute stmt;
|
||||
a
|
||||
execute stmt;
|
||||
a
|
||||
execute stmt;
|
||||
a
|
||||
prepare stmt from
|
||||
"select t1.a, t1.b, t1.c, t2.a, t2.b, t2.c from
|
||||
(t1 left outer join t2 on t2.a=? and t1.b=t2.b)
|
||||
left outer join t2 t3 on t3.a=? where t1.a=?";
|
||||
set @a:=1, @b:=1, @c:=1;
|
||||
execute stmt using @a, @b, @c;
|
||||
a b c a b c
|
||||
execute stmt using @a, @b, @c;
|
||||
a b c a b c
|
||||
execute stmt using @a, @b, @c;
|
||||
a b c a b c
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2;
|
||||
SET @aux= "SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS A,
|
||||
INFORMATION_SCHEMA.COLUMNS B
|
||||
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
|
||||
AND A.TABLE_NAME = B.TABLE_NAME
|
||||
AND A.COLUMN_NAME = B.COLUMN_NAME AND
|
||||
A.TABLE_NAME = 'user'";
|
||||
prepare my_stmt from @aux;
|
||||
execute my_stmt;
|
||||
COUNT(*)
|
||||
37
|
||||
execute my_stmt;
|
||||
COUNT(*)
|
||||
37
|
||||
execute my_stmt;
|
||||
COUNT(*)
|
||||
37
|
||||
deallocate prepare my_stmt;
|
||||
drop procedure if exists p1|
|
||||
drop table if exists t1|
|
||||
create table t1 (id int)|
|
||||
insert into t1 values(1)|
|
||||
create procedure p1(a int, b int)
|
||||
begin
|
||||
declare c int;
|
||||
select max(id)+1 into c from t1;
|
||||
insert into t1 select a+b;
|
||||
insert into t1 select a-b;
|
||||
insert into t1 select a-c;
|
||||
end|
|
||||
set @a= 3, @b= 4|
|
||||
prepare stmt from "call p1(?, ?)"|
|
||||
execute stmt using @a, @b|
|
||||
execute stmt using @a, @b|
|
||||
select * from t1|
|
||||
id
|
||||
1
|
||||
7
|
||||
-1
|
||||
1
|
||||
7
|
||||
-1
|
||||
-5
|
||||
deallocate prepare stmt|
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
@ -650,47 +579,6 @@ id
|
||||
3
|
||||
deallocate prepare stmt;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
prepare stmt from "select * from t1 limit ?, ?";
|
||||
set @offset=0, @limit=1;
|
||||
execute stmt using @offset, @limit;
|
||||
a
|
||||
1
|
||||
select * from t1 limit 0, 1;
|
||||
a
|
||||
1
|
||||
set @offset=3, @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
a
|
||||
4
|
||||
5
|
||||
select * from t1 limit 3, 2;
|
||||
a
|
||||
4
|
||||
5
|
||||
prepare stmt from "select * from t1 limit ?";
|
||||
execute stmt using @limit;
|
||||
a
|
||||
1
|
||||
2
|
||||
prepare stmt from "select * from t1 where a in (select a from t1 limit ?)";
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
|
||||
prepare stmt from "select * from t1 union all select * from t1 limit ?, ?";
|
||||
set @offset=9;
|
||||
set @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
a
|
||||
10
|
||||
1
|
||||
prepare stmt from "(select * from t1 limit ?, ?) union all
|
||||
(select * from t1 limit ?, ?) order by a limit ?";
|
||||
execute stmt using @offset, @limit, @offset, @limit, @limit;
|
||||
a
|
||||
10
|
||||
10
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
create table t1 (id int);
|
||||
prepare stmt from "insert into t1 (id) select id from t1 union select id from t1";
|
||||
execute stmt;
|
||||
@ -791,15 +679,6 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
||||
select ? from t1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? from t1' at line 1
|
||||
drop table t1;
|
||||
CREATE TABLE b12651_T1(a int) ENGINE=MYISAM;
|
||||
CREATE TABLE b12651_T2(b int) ENGINE=MYISAM;
|
||||
CREATE VIEW b12651_V1 as SELECT b FROM b12651_T2;
|
||||
PREPARE b12651 FROM 'SELECT 1 FROM b12651_T1 WHERE a IN (SELECT b FROM b12651_V1)';
|
||||
EXECUTE b12651;
|
||||
1
|
||||
DROP VIEW b12651_V1;
|
||||
DROP TABLE b12651_T1, b12651_T2;
|
||||
DEALLOCATE PREPARE b12651;
|
||||
prepare stmt from "select @@time_zone";
|
||||
execute stmt;
|
||||
@@time_zone
|
||||
@ -1016,6 +895,147 @@ select @@max_prepared_stmt_count, @@prepared_stmt_count;
|
||||
@@max_prepared_stmt_count @@prepared_stmt_count
|
||||
3 0
|
||||
set global max_prepared_stmt_count= @old_max_prepared_stmt_count;
|
||||
drop table if exists t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
prepare stmt from "delete t1 from t1 where (cast(a1/3 as unsigned) * 3) = a1";
|
||||
drop temporary table t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
deallocate prepare stmt;
|
||||
End of 4.1 tests
|
||||
create table t1 (a varchar(20));
|
||||
insert into t1 values ('foo');
|
||||
prepare stmt FROM 'SELECT char_length (a) FROM t1';
|
||||
ERROR 42000: FUNCTION test.char_length does not exist
|
||||
drop table t1;
|
||||
create table t1 (a char(3) not null, b char(3) not null,
|
||||
c char(3) not null, primary key (a, b, c));
|
||||
create table t2 like t1;
|
||||
prepare stmt from
|
||||
"select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b)
|
||||
where t1.a=1";
|
||||
execute stmt;
|
||||
a
|
||||
execute stmt;
|
||||
a
|
||||
execute stmt;
|
||||
a
|
||||
prepare stmt from
|
||||
"select t1.a, t1.b, t1.c, t2.a, t2.b, t2.c from
|
||||
(t1 left outer join t2 on t2.a=? and t1.b=t2.b)
|
||||
left outer join t2 t3 on t3.a=? where t1.a=?";
|
||||
set @a:=1, @b:=1, @c:=1;
|
||||
execute stmt using @a, @b, @c;
|
||||
a b c a b c
|
||||
execute stmt using @a, @b, @c;
|
||||
a b c a b c
|
||||
execute stmt using @a, @b, @c;
|
||||
a b c a b c
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2;
|
||||
SET @aux= "SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS A,
|
||||
INFORMATION_SCHEMA.COLUMNS B
|
||||
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
|
||||
AND A.TABLE_NAME = B.TABLE_NAME
|
||||
AND A.COLUMN_NAME = B.COLUMN_NAME AND
|
||||
A.TABLE_NAME = 'user'";
|
||||
prepare my_stmt from @aux;
|
||||
execute my_stmt;
|
||||
COUNT(*)
|
||||
37
|
||||
execute my_stmt;
|
||||
COUNT(*)
|
||||
37
|
||||
execute my_stmt;
|
||||
COUNT(*)
|
||||
37
|
||||
deallocate prepare my_stmt;
|
||||
drop procedure if exists p1|
|
||||
drop table if exists t1|
|
||||
create table t1 (id int)|
|
||||
insert into t1 values(1)|
|
||||
create procedure p1(a int, b int)
|
||||
begin
|
||||
declare c int;
|
||||
select max(id)+1 into c from t1;
|
||||
insert into t1 select a+b;
|
||||
insert into t1 select a-b;
|
||||
insert into t1 select a-c;
|
||||
end|
|
||||
set @a= 3, @b= 4|
|
||||
prepare stmt from "call p1(?, ?)"|
|
||||
execute stmt using @a, @b|
|
||||
execute stmt using @a, @b|
|
||||
select * from t1|
|
||||
id
|
||||
1
|
||||
7
|
||||
-1
|
||||
1
|
||||
7
|
||||
-1
|
||||
-5
|
||||
deallocate prepare stmt|
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
prepare stmt from "select * from t1 limit ?, ?";
|
||||
set @offset=0, @limit=1;
|
||||
execute stmt using @offset, @limit;
|
||||
a
|
||||
1
|
||||
select * from t1 limit 0, 1;
|
||||
a
|
||||
1
|
||||
set @offset=3, @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
a
|
||||
4
|
||||
5
|
||||
select * from t1 limit 3, 2;
|
||||
a
|
||||
4
|
||||
5
|
||||
prepare stmt from "select * from t1 limit ?";
|
||||
execute stmt using @limit;
|
||||
a
|
||||
1
|
||||
2
|
||||
prepare stmt from "select * from t1 where a in (select a from t1 limit ?)";
|
||||
ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
|
||||
prepare stmt from "select * from t1 union all select * from t1 limit ?, ?";
|
||||
set @offset=9;
|
||||
set @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
a
|
||||
10
|
||||
1
|
||||
prepare stmt from "(select * from t1 limit ?, ?) union all
|
||||
(select * from t1 limit ?, ?) order by a limit ?";
|
||||
execute stmt using @offset, @limit, @offset, @limit, @limit;
|
||||
a
|
||||
10
|
||||
10
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
CREATE TABLE b12651_T1(a int) ENGINE=MYISAM;
|
||||
CREATE TABLE b12651_T2(b int) ENGINE=MYISAM;
|
||||
CREATE VIEW b12651_V1 as SELECT b FROM b12651_T2;
|
||||
PREPARE b12651 FROM 'SELECT 1 FROM b12651_T1 WHERE a IN (SELECT b FROM b12651_V1)';
|
||||
EXECUTE b12651;
|
||||
1
|
||||
DROP VIEW b12651_V1;
|
||||
DROP TABLE b12651_T1, b12651_T2;
|
||||
DEALLOCATE PREPARE b12651;
|
||||
create table t1 (id int);
|
||||
prepare ins_call from "insert into t1 (id) values (1)";
|
||||
execute ins_call;
|
||||
|
@ -298,7 +298,7 @@ t9 MyISAM 10 Dynamic 2 216 432 # 2048 0 NULL # # # latin1_swedish_ci NULL
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
execute stmt4;
|
||||
Variable_name Value
|
||||
Threads_running 1
|
||||
Threads_running #
|
||||
prepare stmt4 from ' show variables like ''sql_mode'' ';
|
||||
execute stmt4;
|
||||
Variable_name Value
|
||||
|
@ -420,4 +420,48 @@ SELECT * FROM t1;
|
||||
col
|
||||
test
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
---> Test for BUG#20438
|
||||
|
||||
---> Preparing environment...
|
||||
---> connection: master
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
|
||||
---> Synchronizing slave with master...
|
||||
|
||||
---> connection: master
|
||||
|
||||
---> Creating procedure...
|
||||
/*!50003 CREATE PROCEDURE p1() SET @a = 1 */;
|
||||
/*!50003 CREATE FUNCTION f1() RETURNS INT RETURN 0 */;
|
||||
|
||||
---> Checking on master...
|
||||
SHOW CREATE PROCEDURE p1;
|
||||
Procedure sql_mode Create Procedure
|
||||
p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||
SET @a = 1
|
||||
SHOW CREATE FUNCTION f1;
|
||||
Function sql_mode Create Function
|
||||
f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
RETURN 0
|
||||
|
||||
---> Synchronizing slave with master...
|
||||
---> connection: master
|
||||
|
||||
---> Checking on slave...
|
||||
SHOW CREATE PROCEDURE p1;
|
||||
Procedure sql_mode Create Procedure
|
||||
p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||
SET @a = 1
|
||||
SHOW CREATE FUNCTION f1;
|
||||
Function sql_mode Create Function
|
||||
f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
RETURN 0
|
||||
|
||||
---> connection: master
|
||||
|
||||
---> Cleaning up...
|
||||
DROP PROCEDURE p1;
|
||||
DROP FUNCTION f1;
|
||||
drop table t1;
|
||||
|
@ -896,3 +896,50 @@ Tables_in_test (t_)
|
||||
SHOW TRIGGERS;
|
||||
Trigger Event Table Statement Timing Created sql_mode Definer
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
|
||||
---> Test for BUG#20438
|
||||
|
||||
---> Preparing environment...
|
||||
---> connection: master
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
|
||||
---> Synchronizing slave with master...
|
||||
|
||||
---> connection: master
|
||||
|
||||
---> Creating objects...
|
||||
CREATE TABLE t1(c INT);
|
||||
CREATE TABLE t2(c INT);
|
||||
/*!50003 CREATE TRIGGER t1_bi BEFORE INSERT ON t1
|
||||
FOR EACH ROW
|
||||
INSERT INTO t2 VALUES(NEW.c * 10) */;
|
||||
|
||||
---> Inserting value...
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
---> Checking on master...
|
||||
SELECT * FROM t1;
|
||||
c
|
||||
1
|
||||
SELECT * FROM t2;
|
||||
c
|
||||
10
|
||||
|
||||
---> Synchronizing slave with master...
|
||||
---> connection: master
|
||||
|
||||
---> Checking on slave...
|
||||
SELECT * FROM t1;
|
||||
c
|
||||
1
|
||||
SELECT * FROM t2;
|
||||
c
|
||||
10
|
||||
|
||||
---> connection: master
|
||||
|
||||
---> Cleaning up...
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
@ -54,3 +54,40 @@ slave-bin.000001 # Query 1 # use `test`; delete from v1 where a=2
|
||||
slave-bin.000001 # Query 1 # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a as b from t1
|
||||
slave-bin.000001 # Query 1 # use `test`; drop view v1
|
||||
slave-bin.000001 # Query 1 # use `test`; drop table t1
|
||||
|
||||
---> Test for BUG#20438
|
||||
|
||||
---> Preparing environment...
|
||||
---> connection: master
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
|
||||
---> Synchronizing slave with master...
|
||||
|
||||
---> connection: master
|
||||
|
||||
---> Creating objects...
|
||||
CREATE TABLE t1(c INT);
|
||||
/*!50003 CREATE VIEW v1 AS SELECT * FROM t1 */;
|
||||
|
||||
---> Inserting value...
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
---> Checking on master...
|
||||
SELECT * FROM t1;
|
||||
c
|
||||
1
|
||||
|
||||
---> Synchronizing slave with master...
|
||||
---> connection: master
|
||||
|
||||
---> Checking on slave...
|
||||
SELECT * FROM t1;
|
||||
c
|
||||
1
|
||||
|
||||
---> connection: master
|
||||
|
||||
---> Cleaning up...
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
@ -2736,6 +2736,81 @@ SELECT i='1e+01',i=1e+01, i in (1e+01,1e+01), i in ('1e+01','1e+01') FROM t1;
|
||||
i='1e+01' i=1e+01 i in (1e+01,1e+01) i in ('1e+01','1e+01')
|
||||
0 1 1 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (1,1), (2,1), (4,10);
|
||||
CREATE TABLE t2 (a int PRIMARY KEY, b int, KEY b (b));
|
||||
INSERT INTO t2 VALUES (1,NULL), (2,10);
|
||||
ALTER TABLE t1 ENABLE KEYS;
|
||||
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index b b 5 NULL 2 Using index
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
a b a b
|
||||
1 NULL 1 1
|
||||
1 NULL 2 1
|
||||
1 NULL 4 10
|
||||
2 10 4 10
|
||||
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index b b 5 NULL 2 Using index
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
a b a b
|
||||
1 NULL 1 1
|
||||
1 NULL 2 1
|
||||
1 NULL 4 10
|
||||
2 10 4 10
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
CREATE TABLE t1 (key1 float default NULL, UNIQUE KEY key1 (key1));
|
||||
CREATE TABLE t2 (key2 float default NULL, UNIQUE KEY key2 (key2));
|
||||
INSERT INTO t1 VALUES (0.3762),(0.3845),(0.6158),(0.7941);
|
||||
INSERT INTO t2 VALUES (1.3762),(1.3845),(1.6158),(1.7941);
|
||||
explain select max(key1) from t1 where key1 <= 0.6158;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
explain select max(key2) from t2 where key2 <= 1.6158;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
explain select min(key1) from t1 where key1 >= 0.3762;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
explain select min(key2) from t2 where key2 >= 1.3762;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
explain select max(key1), min(key2) from t1, t2
|
||||
where key1 <= 0.6158 and key2 >= 1.3762;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
select max(key1) from t1 where key1 <= 0.6158;
|
||||
max(key1)
|
||||
0.61580002307892
|
||||
select max(key2) from t2 where key2 <= 1.6158;
|
||||
max(key2)
|
||||
1.6158000230789
|
||||
select min(key1) from t1 where key1 >= 0.3762;
|
||||
min(key1)
|
||||
0.37619999051094
|
||||
select min(key2) from t2 where key2 >= 1.3762;
|
||||
min(key2)
|
||||
1.3761999607086
|
||||
select max(key1), min(key2) from t1, t2
|
||||
where key1 <= 0.6158 and key2 >= 1.3762;
|
||||
max(key1) min(key2)
|
||||
0.61580002307892 1.3761999607086
|
||||
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
max(key1)
|
||||
0.61580002307892
|
||||
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
min(key1)
|
||||
0.37619999051094
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000',
|
||||
|
@ -625,3 +625,7 @@ View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_cache 1 AS `1`
|
||||
DROP PROCEDURE p1;
|
||||
DROP VIEW v1;
|
||||
SHOW TABLES FROM no_such_database;
|
||||
ERROR 42000: Unknown database 'no_such_database'
|
||||
SHOW COLUMNS FROM no_such_table;
|
||||
ERROR 42S02: Table 'test.no_such_table' doesn't exist
|
||||
|
@ -155,11 +155,11 @@ Pos Instruction
|
||||
0 stmt 9 "drop temporary table if exists sudoku..."
|
||||
1 stmt 1 "create temporary table sudoku_work ( ..."
|
||||
2 stmt 1 "create temporary table sudoku_schedul..."
|
||||
3 stmt 95 "call sudoku_init("
|
||||
3 stmt 95 "call sudoku_init()"
|
||||
4 jump_if_not 7(8) p_naive@0
|
||||
5 stmt 4 "update sudoku_work set cnt = 0 where ..."
|
||||
6 jump 8
|
||||
7 stmt 95 "call sudoku_count("
|
||||
7 stmt 95 "call sudoku_count()"
|
||||
8 stmt 6 "insert into sudoku_schedule (row,col)..."
|
||||
9 set v_scounter@2 0
|
||||
10 set v_i@3 1
|
||||
@ -199,3 +199,10 @@ Pos Instruction
|
||||
44 jump 14
|
||||
45 stmt 9 "drop temporary table sudoku_work, sud..."
|
||||
drop procedure sudoku_solve;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
CREATE PROCEDURE p1() CREATE INDEX idx ON t1 (c1);
|
||||
SHOW PROCEDURE CODE p1;
|
||||
Pos Instruction
|
||||
0 stmt 2 "CREATE INDEX idx ON t1 (c1)"
|
||||
DROP PROCEDURE p1;
|
||||
End of 5.0 tests.
|
||||
|
@ -1174,3 +1174,16 @@ drop procedure bug15091;
|
||||
drop function if exists bug16896;
|
||||
create aggregate function bug16896() returns int return 1;
|
||||
ERROR 42000: AGGREGATE is not supported for stored functions
|
||||
DROP PROCEDURE IF EXISTS bug14702;
|
||||
CREATE IF NOT EXISTS PROCEDURE bug14702()
|
||||
BEGIN
|
||||
END;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS PROCEDURE bug14702()
|
||||
BEGIN
|
||||
END' at line 1
|
||||
CREATE PROCEDURE IF NOT EXISTS bug14702()
|
||||
BEGIN
|
||||
END;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS bug14702()
|
||||
BEGIN
|
||||
END' at line 1
|
||||
|
@ -451,3 +451,55 @@ SELECT Host,User,Password FROM mysql.user WHERE User='user19857';
|
||||
Host User Password
|
||||
localhost user19857 *82DC221D557298F6CE9961037DB1C90604792F5C
|
||||
DROP USER user19857@localhost;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
DROP FUNCTION IF EXISTS f_suid;
|
||||
DROP PROCEDURE IF EXISTS p_suid;
|
||||
DROP FUNCTION IF EXISTS f_evil;
|
||||
DELETE FROM mysql.user WHERE user LIKE 'mysqltest\_%';
|
||||
DELETE FROM mysql.db WHERE user LIKE 'mysqltest\_%';
|
||||
DELETE FROM mysql.tables_priv WHERE user LIKE 'mysqltest\_%';
|
||||
DELETE FROM mysql.columns_priv WHERE user LIKE 'mysqltest\_%';
|
||||
FLUSH PRIVILEGES;
|
||||
CREATE TABLE t1 (i INT);
|
||||
CREATE FUNCTION f_suid(i INT) RETURNS INT SQL SECURITY DEFINER RETURN 0;
|
||||
CREATE PROCEDURE p_suid(IN i INT) SQL SECURITY DEFINER SET @c:= 0;
|
||||
CREATE USER mysqltest_u1@localhost;
|
||||
GRANT EXECUTE ON test.* TO mysqltest_u1@localhost;
|
||||
CREATE DEFINER=mysqltest_u1@localhost FUNCTION f_evil () RETURNS INT
|
||||
SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SET @a:= CURRENT_USER();
|
||||
SET @b:= (SELECT COUNT(*) FROM t1);
|
||||
RETURN @b;
|
||||
END|
|
||||
CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT f_evil();
|
||||
SELECT COUNT(*) FROM t1;
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
|
||||
SELECT f_evil();
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
mysqltest_u1@localhost NULL
|
||||
SELECT f_suid(f_evil());
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
mysqltest_u1@localhost NULL
|
||||
CALL p_suid(f_evil());
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
mysqltest_u1@localhost NULL
|
||||
SELECT * FROM v1;
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v1'
|
||||
SELECT @a, @b;
|
||||
@a @b
|
||||
mysqltest_u1@localhost NULL
|
||||
DROP VIEW v1;
|
||||
DROP FUNCTION f_evil;
|
||||
DROP USER mysqltest_u1@localhost;
|
||||
DROP PROCEDURE p_suid;
|
||||
DROP FUNCTION f_suid;
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests.
|
||||
|
@ -5057,6 +5057,190 @@ concat('data was: /', var1, '/')
|
||||
data was: /1/
|
||||
drop table t3|
|
||||
drop procedure bug15217|
|
||||
DROP PROCEDURE IF EXISTS bug21013 |
|
||||
CREATE PROCEDURE bug21013(IN lim INT)
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 0;
|
||||
WHILE (i < lim) DO
|
||||
SET @b = LOCATE(_latin1'b', @a, 1);
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END |
|
||||
SET @a = _latin2"aaaaaaaaaa" |
|
||||
CALL bug21013(10) |
|
||||
DROP PROCEDURE bug21013 |
|
||||
DROP DATABASE IF EXISTS mysqltest1|
|
||||
DROP DATABASE IF EXISTS mysqltest2|
|
||||
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8|
|
||||
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8|
|
||||
use mysqltest1|
|
||||
CREATE FUNCTION bug16211_f1() RETURNS CHAR(10)
|
||||
RETURN ""|
|
||||
CREATE FUNCTION bug16211_f2() RETURNS CHAR(10) CHARSET koi8r
|
||||
RETURN ""|
|
||||
CREATE FUNCTION mysqltest2.bug16211_f3() RETURNS CHAR(10)
|
||||
RETURN ""|
|
||||
CREATE FUNCTION mysqltest2.bug16211_f4() RETURNS CHAR(10) CHARSET koi8r
|
||||
RETURN ""|
|
||||
SHOW CREATE FUNCTION bug16211_f1|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f1 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f1`() RETURNS char(10) CHARSET utf8
|
||||
RETURN ""
|
||||
SHOW CREATE FUNCTION bug16211_f2|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f2 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f2`() RETURNS char(10) CHARSET koi8r
|
||||
RETURN ""
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f3|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f3 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f3`() RETURNS char(10) CHARSET utf8
|
||||
RETURN ""
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f4|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f4 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f4`() RETURNS char(10) CHARSET koi8r
|
||||
RETURN ""
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET utf8
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET koi8r
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET utf8
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET koi8r
|
||||
SELECT CHARSET(bug16211_f1())|
|
||||
CHARSET(bug16211_f1())
|
||||
utf8
|
||||
SELECT CHARSET(bug16211_f2())|
|
||||
CHARSET(bug16211_f2())
|
||||
koi8r
|
||||
SELECT CHARSET(mysqltest2.bug16211_f3())|
|
||||
CHARSET(mysqltest2.bug16211_f3())
|
||||
utf8
|
||||
SELECT CHARSET(mysqltest2.bug16211_f4())|
|
||||
CHARSET(mysqltest2.bug16211_f4())
|
||||
koi8r
|
||||
ALTER DATABASE mysqltest1 CHARACTER SET cp1251|
|
||||
ALTER DATABASE mysqltest2 CHARACTER SET cp1251|
|
||||
SHOW CREATE FUNCTION bug16211_f1|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f1 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f1`() RETURNS char(10) CHARSET utf8
|
||||
RETURN ""
|
||||
SHOW CREATE FUNCTION bug16211_f2|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f2 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f2`() RETURNS char(10) CHARSET koi8r
|
||||
RETURN ""
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f3|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f3 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f3`() RETURNS char(10) CHARSET utf8
|
||||
RETURN ""
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f4|
|
||||
Function sql_mode Create Function
|
||||
bug16211_f4 CREATE DEFINER=`root`@`localhost` FUNCTION `bug16211_f4`() RETURNS char(10) CHARSET koi8r
|
||||
RETURN ""
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET utf8
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET koi8r
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET utf8
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
|
||||
dtd_identifier
|
||||
char(10) CHARSET koi8r
|
||||
SELECT CHARSET(bug16211_f1())|
|
||||
CHARSET(bug16211_f1())
|
||||
utf8
|
||||
SELECT CHARSET(bug16211_f2())|
|
||||
CHARSET(bug16211_f2())
|
||||
koi8r
|
||||
SELECT CHARSET(mysqltest2.bug16211_f3())|
|
||||
CHARSET(mysqltest2.bug16211_f3())
|
||||
utf8
|
||||
SELECT CHARSET(mysqltest2.bug16211_f4())|
|
||||
CHARSET(mysqltest2.bug16211_f4())
|
||||
koi8r
|
||||
use test|
|
||||
DROP DATABASE mysqltest1|
|
||||
DROP DATABASE mysqltest2|
|
||||
DROP DATABASE IF EXISTS mysqltest1|
|
||||
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8|
|
||||
use mysqltest1|
|
||||
CREATE PROCEDURE bug16676_p1(
|
||||
IN p1 CHAR(10),
|
||||
INOUT p2 CHAR(10),
|
||||
OUT p3 CHAR(10))
|
||||
BEGIN
|
||||
SELECT CHARSET(p1), COLLATION(p1);
|
||||
SELECT CHARSET(p2), COLLATION(p2);
|
||||
SELECT CHARSET(p3), COLLATION(p3);
|
||||
END|
|
||||
CREATE PROCEDURE bug16676_p2(
|
||||
IN p1 CHAR(10) CHARSET koi8r,
|
||||
INOUT p2 CHAR(10) CHARSET cp1251,
|
||||
OUT p3 CHAR(10) CHARSET greek)
|
||||
BEGIN
|
||||
SELECT CHARSET(p1), COLLATION(p1);
|
||||
SELECT CHARSET(p2), COLLATION(p2);
|
||||
SELECT CHARSET(p3), COLLATION(p3);
|
||||
END|
|
||||
SET @v2 = 'b'|
|
||||
SET @v3 = 'c'|
|
||||
CALL bug16676_p1('a', @v2, @v3)|
|
||||
CHARSET(p1) COLLATION(p1)
|
||||
utf8 utf8_general_ci
|
||||
CHARSET(p2) COLLATION(p2)
|
||||
utf8 utf8_general_ci
|
||||
CHARSET(p3) COLLATION(p3)
|
||||
utf8 utf8_general_ci
|
||||
CALL bug16676_p2('a', @v2, @v3)|
|
||||
CHARSET(p1) COLLATION(p1)
|
||||
koi8r koi8r_general_ci
|
||||
CHARSET(p2) COLLATION(p2)
|
||||
cp1251 cp1251_general_ci
|
||||
CHARSET(p3) COLLATION(p3)
|
||||
greek greek_general_ci
|
||||
use test|
|
||||
DROP DATABASE mysqltest1|
|
||||
drop procedure if exists bug19862|
|
||||
CREATE TABLE t11 (a INT)|
|
||||
CREATE TABLE t12 (a INT)|
|
||||
CREATE FUNCTION bug19862(x INT) RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO t11 VALUES (x);
|
||||
RETURN x+1;
|
||||
END|
|
||||
INSERT INTO t12 VALUES (1), (2)|
|
||||
SELECT bug19862(a) FROM t12 ORDER BY 1|
|
||||
bug19862(a)
|
||||
2
|
||||
3
|
||||
SELECT * FROM t11|
|
||||
a
|
||||
1
|
||||
2
|
||||
DROP TABLE t11, t12|
|
||||
DROP FUNCTION bug19862|
|
||||
drop table if exists t3|
|
||||
drop database if exists mysqltest1|
|
||||
create table t3 (a int)|
|
||||
|
@ -2888,6 +2888,33 @@ select 1 from dual where 1 < any (select 2 from dual);
|
||||
select 1 from dual where 1 < all (select 2 from dual where 1!=1);
|
||||
1
|
||||
1
|
||||
create table t1 (s1 char);
|
||||
insert into t1 values (1),(2);
|
||||
select * from t1 where (s1 < any (select s1 from t1));
|
||||
s1
|
||||
1
|
||||
select * from t1 where not (s1 < any (select s1 from t1));
|
||||
s1
|
||||
2
|
||||
select * from t1 where (s1 < ALL (select s1+1 from t1));
|
||||
s1
|
||||
1
|
||||
select * from t1 where not(s1 < ALL (select s1+1 from t1));
|
||||
s1
|
||||
2
|
||||
select * from t1 where (s1+1 = ANY (select s1 from t1));
|
||||
s1
|
||||
1
|
||||
select * from t1 where NOT(s1+1 = ANY (select s1 from t1));
|
||||
s1
|
||||
2
|
||||
select * from t1 where (s1 = ALL (select s1/s1 from t1));
|
||||
s1
|
||||
1
|
||||
select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
|
||||
s1
|
||||
2
|
||||
drop table t1;
|
||||
create table t1 (df decimal(5,1));
|
||||
insert into t1 values(1.1);
|
||||
insert into t1 values(2.2);
|
||||
|
@ -132,3 +132,15 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
5 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY,FFOLDERID_IDX PRIMARY 34 func 1 Using index; Using where
|
||||
6 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 func 1 Using index; Using where
|
||||
drop table t1, t2, t3, t4;
|
||||
CREATE TABLE t1 (a int(10) , PRIMARY KEY (a)) Engine=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (a int(10), PRIMARY KEY (a)) Engine=InnoDB;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
CREATE TABLE t3 (a int(10), b int(10), c int(10),
|
||||
PRIMARY KEY (a)) Engine=InnoDB;
|
||||
INSERT INTO t3 VALUES (1,2,1);
|
||||
SELECT t1.* FROM t1 WHERE (SELECT COUNT(*) FROM t3,t2 WHERE t3.c=t2.a
|
||||
and t2.a='1' AND t1.a=t3.b) > 0;
|
||||
a
|
||||
2
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
@ -93,6 +93,18 @@ NULL
|
||||
0R
|
||||
FR
|
||||
DROP TABLE bug19904;
|
||||
CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse
|
||||
RETURNS STRING SONAME "should_not_parse.so";
|
||||
ERROR HY000: Incorrect usage of SONAME and DEFINER
|
||||
CREATE DEFINER=someone@somewhere FUNCTION should_not_parse
|
||||
RETURNS STRING SONAME "should_not_parse.so";
|
||||
ERROR HY000: Incorrect usage of SONAME and DEFINER
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2);
|
||||
explain select myfunc_int(f1) from t1 order by 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
DROP FUNCTION metaphon;
|
||||
DROP FUNCTION myfunc_double;
|
||||
|
@ -691,9 +691,9 @@ t1 CREATE TABLE `t1` (
|
||||
`da` datetime default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT dt from t2 UNION select sc from t2;
|
||||
select * from t1;
|
||||
dt
|
||||
create table t1 SELECT dt from t2 UNION select trim(sc) from t2;
|
||||
select trim(dt) from t1;
|
||||
trim(dt)
|
||||
1972-10-22 11:50:00
|
||||
testc
|
||||
show create table t1;
|
||||
@ -732,7 +732,7 @@ tetetetetest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`dt` longblob
|
||||
`dt` blob
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT sv from t2 UNION select b from t2;
|
||||
@ -743,7 +743,7 @@ tetetetetest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`sv` longblob
|
||||
`sv` blob
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT i from t2 UNION select d from t2 UNION select b from t2;
|
||||
@ -755,7 +755,7 @@ tetetetetest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`i` longblob
|
||||
`i` blob
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT sv from t2 UNION select tx from t2;
|
||||
@ -766,7 +766,7 @@ teeeeeeeeeeeest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`sv` longtext
|
||||
`sv` text
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 SELECT b from t2 UNION select tx from t2;
|
||||
@ -777,7 +777,7 @@ teeeeeeeeeeeest
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`b` longblob
|
||||
`b` blob
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1,t2;
|
||||
create table t1 select 1 union select -1;
|
||||
@ -1306,6 +1306,21 @@ id
|
||||
5
|
||||
99
|
||||
drop table t1;
|
||||
create table t1(f1 char(1), f2 char(5), f3 binary(1), f4 binary(5), f5 timestamp, f6 varchar(1) character set utf8 collate utf8_general_ci, f7 text);
|
||||
create table t2 as select *, f6 as f8 from t1 union select *, f7 from t1;
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`f1` char(1) default NULL,
|
||||
`f2` char(5) default NULL,
|
||||
`f3` binary(1) default NULL,
|
||||
`f4` binary(5) default NULL,
|
||||
`f5` timestamp NOT NULL default '0000-00-00 00:00:00',
|
||||
`f6` varchar(1) character set utf8 default NULL,
|
||||
`f7` text,
|
||||
`f8` text character set utf8
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1, t2;
|
||||
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||
|
@ -193,7 +193,7 @@ c d
|
||||
2 5
|
||||
3 10
|
||||
drop view v100;
|
||||
ERROR 42S02: Unknown table 'test.v100'
|
||||
ERROR 42S02: Unknown table 'v100'
|
||||
drop view t1;
|
||||
ERROR HY000: 'test.t1' is not VIEW
|
||||
drop table v1;
|
||||
@ -2774,3 +2774,79 @@ Field Type Null Key Default Extra
|
||||
COALESCE(i,j) int(11) YES NULL
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (s varchar(10));
|
||||
INSERT INTO t1 VALUES ('yadda'), ('yady');
|
||||
SELECT TRIM(BOTH 'y' FROM s) FROM t1;
|
||||
TRIM(BOTH 'y' FROM s)
|
||||
adda
|
||||
ad
|
||||
CREATE VIEW v1 AS SELECT TRIM(BOTH 'y' FROM s) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
TRIM(BOTH 'y' FROM s)
|
||||
adda
|
||||
ad
|
||||
DROP VIEW v1;
|
||||
SELECT TRIM(LEADING 'y' FROM s) FROM t1;
|
||||
TRIM(LEADING 'y' FROM s)
|
||||
adda
|
||||
ady
|
||||
CREATE VIEW v1 AS SELECT TRIM(LEADING 'y' FROM s) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
TRIM(LEADING 'y' FROM s)
|
||||
adda
|
||||
ady
|
||||
DROP VIEW v1;
|
||||
SELECT TRIM(TRAILING 'y' FROM s) FROM t1;
|
||||
TRIM(TRAILING 'y' FROM s)
|
||||
yadda
|
||||
yad
|
||||
CREATE VIEW v1 AS SELECT TRIM(TRAILING 'y' FROM s) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
TRIM(TRAILING 'y' FROM s)
|
||||
yadda
|
||||
yad
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (x INT, y INT);
|
||||
CREATE ALGORITHM=TEMPTABLE SQL SECURITY INVOKER VIEW v1 AS SELECT x FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=TEMPTABLE DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select `t1`.`x` AS `x` from `t1`
|
||||
ALTER VIEW v1 AS SELECT x, y FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=TEMPTABLE DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select `t1`.`x` AS `x`,`t1`.`y` AS `y` from `t1`
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (s1 char);
|
||||
INSERT INTO t1 VALUES ('Z');
|
||||
CREATE VIEW v1 AS SELECT s1 collate latin1_german1_ci AS col FROM t1;
|
||||
CREATE VIEW v2 (col) AS SELECT s1 collate latin1_german1_ci FROM t1;
|
||||
INSERT INTO v1 (col) VALUES ('b');
|
||||
INSERT INTO v2 (col) VALUES ('c');
|
||||
SELECT s1 FROM t1;
|
||||
s1
|
||||
Z
|
||||
b
|
||||
c
|
||||
DROP VIEW v1, v2;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (id INT);
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t1
|
||||
v1
|
||||
DROP VIEW v2,v1;
|
||||
ERROR 42S02: Unknown table 'v2'
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t1
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
DROP VIEW t1,v1;
|
||||
ERROR HY000: 'test.t1' is not VIEW
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t1
|
||||
DROP TABLE t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
|
@ -11,3 +11,4 @@
|
||||
##############################################################################
|
||||
|
||||
ndb_load : Bug#17233
|
||||
lowercase_fs_off : Bug#21419
|
||||
|
@ -433,3 +433,17 @@ create table t1 (c1 varchar(10), c2 int);
|
||||
select charset(group_concat(c1 order by c2)) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #16712: group_concat returns odd string instead of intended result
|
||||
#
|
||||
CREATE TABLE t1 (a INT(10), b LONGTEXT, PRIMARY KEY (a));
|
||||
|
||||
SET GROUP_CONCAT_MAX_LEN = 20000000;
|
||||
|
||||
INSERT INTO t1 VALUES (1,REPEAT(CONCAT('A',CAST(CHAR(0) AS BINARY),'B'), 40000));
|
||||
INSERT INTO t1 SELECT a + 1, b FROM t1;
|
||||
|
||||
SELECT a, CHAR_LENGTH(b) FROM t1;
|
||||
SELECT CHAR_LENGTH( GROUP_CONCAT(b) ) FROM t1;
|
||||
SET GROUP_CONCAT_MAX_LEN = 1024;
|
||||
DROP TABLE t1;
|
||||
|
@ -660,6 +660,22 @@ SELECT SUM(a) FROM t1 GROUP BY b/c;
|
||||
DROP TABLE t1;
|
||||
set div_precision_increment= @sav_dpi;
|
||||
|
||||
#
|
||||
# Bug #20868: Client connection is broken on SQL query error
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t2 VALUES (1,1), (3,3);
|
||||
|
||||
SELECT SQL_NO_CACHE
|
||||
(SELECT SUM(c.a) FROM t1 ttt, t2 ccc
|
||||
WHERE ttt.a = ccc.b AND ttt.a = t.a GROUP BY ttt.a) AS minid
|
||||
FROM t1 t, t2 c WHERE t.a = c.b;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# Bug #10966: Variance functions return wrong data type
|
||||
#
|
||||
@ -670,4 +686,4 @@ drop table t1;
|
||||
create table t1 select stddev(0);
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
|
||||
|
@ -706,6 +706,21 @@ SELECT a, CONCAT(a,' ',a) AS c FROM t1
|
||||
INSTR(REVERSE(CONCAT(a,' ',a))," ")) = a;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#17526: WRONG PRINT for TRIM FUNCTION with two arguments
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (s varchar(10));
|
||||
INSERT INTO t1 VALUES ('yadda'), ('yaddy');
|
||||
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(s) > 'ab';
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM('y' FROM s) > 'ab';
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(LEADING 'y' FROM s) > 'ab';
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(TRAILING 'y' FROM s) > 'ab';
|
||||
EXPLAIN EXTENDED SELECT s FROM t1 WHERE TRIM(BOTH 'y' FROM s) > 'ab';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
|
||||
|
@ -632,3 +632,26 @@ group by t1.c1;
|
||||
show warnings;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug #20466: a view is mixing data when there's a trigger on the table
|
||||
#
|
||||
CREATE TABLE t1 (a tinyint(3), b varchar(255), PRIMARY KEY (a));
|
||||
|
||||
INSERT INTO t1 VALUES (1,'-----'), (6,'Allemagne'), (17,'Autriche'),
|
||||
(25,'Belgique'), (54,'Danemark'), (62,'Espagne'), (68,'France');
|
||||
|
||||
CREATE TABLE t2 (a tinyint(3), b tinyint(3), PRIMARY KEY (a), KEY b (b));
|
||||
|
||||
INSERT INTO t2 VALUES (1,1), (2,1), (6,6), (18,17), (15,25), (16,25),
|
||||
(17,25), (10,54), (5,62),(3,68);
|
||||
|
||||
CREATE VIEW v1 AS select t1.a, concat(t1.b,'') AS b, t1.b as real_b from t1;
|
||||
|
||||
explain
|
||||
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||
where t2.b=v1.a GROUP BY t2.b;
|
||||
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||
where t2.b=v1.a GROUP BY t2.b;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -746,3 +746,51 @@ EXPLAIN SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
||||
SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #21007: NATURAL JOIN (any JOIN (2 x NATURAL JOIN)) crashes the server
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (id1 INT, id2 INT);
|
||||
CREATE TABLE t2 (id2 INT, id3 INT, id5 INT);
|
||||
CREATE TABLE t3 (id3 INT, id4 INT);
|
||||
CREATE TABLE t4 (id4 INT);
|
||||
CREATE TABLE t5 (id5 INT, id6 INT);
|
||||
CREATE TABLE t6 (id6 INT);
|
||||
|
||||
INSERT INTO t1 VALUES(1,1);
|
||||
INSERT INTO t2 VALUES(1,1,1);
|
||||
INSERT INTO t3 VALUES(1,1);
|
||||
INSERT INTO t4 VALUES(1);
|
||||
INSERT INTO t5 VALUES(1,1);
|
||||
INSERT INTO t6 VALUES(1);
|
||||
|
||||
-- original bug query
|
||||
SELECT * FROM
|
||||
t1
|
||||
NATURAL JOIN
|
||||
(t2 JOIN (t3 NATURAL JOIN t4, t5 NATURAL JOIN t6)
|
||||
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));
|
||||
|
||||
-- inner join swapped
|
||||
SELECT * FROM
|
||||
t1
|
||||
NATURAL JOIN
|
||||
(((t3 NATURAL JOIN t4) join (t5 NATURAL JOIN t6) on t3.id4 = t5.id5) JOIN t2
|
||||
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));
|
||||
|
||||
-- one join less, no ON cond
|
||||
SELECT * FROM t1 NATURAL JOIN ((t3 join (t5 NATURAL JOIN t6)) JOIN t2);
|
||||
|
||||
-- wrong error message: 'id2' - ambiguous column
|
||||
SELECT * FROM
|
||||
(t2 JOIN (t3 NATURAL JOIN t4, t5 NATURAL JOIN t6)
|
||||
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5))
|
||||
NATURAL JOIN
|
||||
t1;
|
||||
SELECT * FROM
|
||||
(t2 JOIN ((t3 NATURAL JOIN t4) join (t5 NATURAL JOIN t6)))
|
||||
NATURAL JOIN
|
||||
t1;
|
||||
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||
|
@ -7,21 +7,7 @@
|
||||
###########################################################################
|
||||
|
||||
--source include/im_check_os.inc
|
||||
|
||||
###########################################################################
|
||||
|
||||
# Wait for mysqld1 (guarded instance) to start.
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started
|
||||
|
||||
# Let IM detect that mysqld1 is online. This delay should be longer than
|
||||
# monitoring interval.
|
||||
|
||||
--sleep 3
|
||||
|
||||
# Check that start conditions are as expected.
|
||||
|
||||
SHOW INSTANCES;
|
||||
--source include/im_check_env.inc
|
||||
|
||||
###########################################################################
|
||||
|
||||
|
@ -7,33 +7,7 @@
|
||||
###########################################################################
|
||||
|
||||
--source include/im_check_os.inc
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# 1.1.1. Check that Instance Manager is able:
|
||||
# - to read definitions of two mysqld-instances;
|
||||
# - to start the first instance;
|
||||
# - to understand 'nonguarded' option and keep the second instance down;
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
--echo
|
||||
--echo --------------------------------------------------------------------
|
||||
--echo -- 1.1.1.
|
||||
--echo --------------------------------------------------------------------
|
||||
|
||||
# Wait for mysqld1 (guarded instance) to start.
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started
|
||||
|
||||
# Let IM detect that mysqld1 is online. This delay should be longer than
|
||||
# monitoring interval.
|
||||
|
||||
--sleep 3
|
||||
|
||||
# Check that start conditions are as expected.
|
||||
|
||||
SHOW INSTANCES;
|
||||
--source include/im_check_env.inc
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
@ -54,9 +28,10 @@ START INSTANCE mysqld2;
|
||||
# FIXME: START INSTANCE should be synchronous.
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started
|
||||
|
||||
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
|
||||
# synchronous. Even waiting for mysqld to start by looking at its pid file is
|
||||
# not enough, because IM may not detect that mysqld has started.
|
||||
# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
|
||||
# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
|
||||
# its pid file is not enough, because it is unknown when IM detects that
|
||||
# mysqld has started.
|
||||
# SHOW INSTANCES;
|
||||
|
||||
--connect (mysql_con,localhost,root,,mysql,$IM_MYSQLD2_PORT,$IM_MYSQLD2_SOCK)
|
||||
@ -86,9 +61,10 @@ STOP INSTANCE mysqld2;
|
||||
# FIXME: STOP INSTANCE should be synchronous.
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 stopped
|
||||
|
||||
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
|
||||
# synchronous. Even waiting for mysqld to start by looking at its pid file is
|
||||
# not enough, because IM may not detect that mysqld has started.
|
||||
# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
|
||||
# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
|
||||
# its pid file is not enough, because it is unknown when IM detects that
|
||||
# mysqld has started.
|
||||
# SHOW INSTANCES;
|
||||
|
||||
###########################################################################
|
||||
@ -114,8 +90,8 @@ START INSTANCE mysqld1;
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# 1.1.5. Check that Instance Manager reports correct errors for 'STOP INSTANCE'
|
||||
# command:
|
||||
# 1.1.5. Check that Instance Manager reports correct errors for
|
||||
# 'STOP INSTANCE' command:
|
||||
# - if the client tries to start unregistered instance;
|
||||
# - if the client tries to start already stopped instance;
|
||||
# - if the client submits invalid arguments;
|
||||
@ -146,12 +122,10 @@ STOP INSTANCE mysqld3;
|
||||
--echo -- 1.1.6.
|
||||
--echo --------------------------------------------------------------------
|
||||
|
||||
SHOW INSTANCES;
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD1_PATH_PID restarted 30
|
||||
|
||||
# Give some time to IM to detect that mysqld was restarted. It should be longer
|
||||
# than monitoring interval.
|
||||
# Give some time to IM to detect that mysqld was restarted. It should be
|
||||
# longer than monitoring interval.
|
||||
|
||||
--sleep 3
|
||||
|
||||
@ -172,16 +146,18 @@ START INSTANCE mysqld2;
|
||||
# FIXME: START INSTANCE should be synchronous.
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started
|
||||
|
||||
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
|
||||
# synchronous. Even waiting for mysqld to start by looking at its pid file is
|
||||
# not enough, because IM may not detect that mysqld has started.
|
||||
# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
|
||||
# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
|
||||
# its pid file is not enough, because it is unknown when IM detects that
|
||||
# mysqld has started.
|
||||
# SHOW INSTANCES;
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed 10
|
||||
|
||||
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
|
||||
# synchronous. Even waiting for mysqld to start by looking at its pid file is
|
||||
# not enough, because IM may not detect that mysqld has started.
|
||||
# FIXME: Result of SHOW INSTANCES here is not deterministic unless START
|
||||
# INSTANCE is synchronous. Even waiting for mysqld to start by looking at
|
||||
# its pid file is not enough, because it is unknown when IM detects that
|
||||
# mysqld has started.
|
||||
# SHOW INSTANCES;
|
||||
|
||||
###########################################################################
|
||||
|
@ -39,32 +39,7 @@
|
||||
###########################################################################
|
||||
|
||||
--source include/im_check_os.inc
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# 0. Check starting conditions.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# - check the configuration file;
|
||||
|
||||
--exec grep server_id $MYSQLTEST_VARDIR/im.cnf ;
|
||||
|
||||
# - check the running instances.
|
||||
|
||||
--connect (mysql1_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK)
|
||||
|
||||
--connection mysql1_con
|
||||
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
|
||||
--connection default
|
||||
|
||||
# - check the internal cache.
|
||||
# TODO: we should check only server_id option here.
|
||||
|
||||
# SHOW INSTANCE OPTIONS mysqld1;
|
||||
# SHOW INSTANCE OPTIONS mysqld2;
|
||||
--source include/im_check_env.inc
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
@ -46,32 +46,7 @@
|
||||
###########################################################################
|
||||
|
||||
--source include/im_check_os.inc
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# 0. Check starting conditions.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# - check the configuration file;
|
||||
|
||||
--exec grep server_id $MYSQLTEST_VARDIR/im.cnf ;
|
||||
|
||||
# - check the running instances.
|
||||
|
||||
--connect (mysql1_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK)
|
||||
|
||||
--connection mysql1_con
|
||||
|
||||
SHOW VARIABLES LIKE 'server_id';
|
||||
|
||||
--connection default
|
||||
|
||||
# - check the internal cache.
|
||||
# TODO: we should check only server_id option here.
|
||||
|
||||
# SHOW INSTANCE OPTIONS mysqld1;
|
||||
# SHOW INSTANCE OPTIONS mysqld2;
|
||||
--source include/im_check_env.inc
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
@ -7,36 +7,17 @@
|
||||
###########################################################################
|
||||
|
||||
--source include/im_check_os.inc
|
||||
--source include/im_check_env.inc
|
||||
|
||||
###########################################################################
|
||||
|
||||
#
|
||||
# Check starting conditions. This test case assumes that:
|
||||
# - two mysqld-instances are registered;
|
||||
# - the first instance is online;
|
||||
# - the second instance is offline;
|
||||
# Check 'SHOW INSTANCE OPTIONS' command.
|
||||
#
|
||||
|
||||
# Wait for mysqld1 (guarded instance) to start.
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started
|
||||
|
||||
# Let IM detect that mysqld1 is online. This delay should be longer than
|
||||
# monitoring interval.
|
||||
|
||||
--sleep 3
|
||||
|
||||
# Check that start conditions are as expected.
|
||||
|
||||
SHOW INSTANCES;
|
||||
|
||||
#
|
||||
# Check 'SHOW INSTANCE OPTIONS' command:
|
||||
# - check that options of both offline and online instances are accessible;
|
||||
# - since configuration of an mysqld-instance contains directories, we should
|
||||
# completely ignore the second column (values) in order to make the test
|
||||
# case produce the same results on different installations;
|
||||
# TODO: ignore values of only directory-specific options.
|
||||
# Since configuration of an mysqld-instance contains directories, we should
|
||||
# completely ignore the second column (values) in order to make the test
|
||||
# case produce the same results on different installations;
|
||||
# TODO: ignore values of only directory-specific options.
|
||||
#
|
||||
|
||||
--replace_column 2 VALUE
|
||||
|
@ -887,4 +887,47 @@ DROP FUNCTION f1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP USER mysql_bug20230@localhost;
|
||||
|
||||
#
|
||||
# Bug#18925: subqueries with MIN/MAX functions on INFORMARTION_SCHEMA
|
||||
#
|
||||
|
||||
SELECT t.table_name, c1.column_name
|
||||
FROM information_schema.tables t
|
||||
INNER JOIN
|
||||
information_schema.columns c1
|
||||
ON t.table_schema = c1.table_schema AND
|
||||
t.table_name = c1.table_name
|
||||
WHERE t.table_schema = 'information_schema' AND
|
||||
c1.ordinal_position =
|
||||
( SELECT COALESCE(MIN(c2.ordinal_position),1)
|
||||
FROM information_schema.columns c2
|
||||
WHERE c2.table_schema = t.table_schema AND
|
||||
c2.table_name = t.table_name AND
|
||||
c2.column_name LIKE '%SCHEMA%'
|
||||
);
|
||||
SELECT t.table_name, c1.column_name
|
||||
FROM information_schema.tables t
|
||||
INNER JOIN
|
||||
information_schema.columns c1
|
||||
ON t.table_schema = c1.table_schema AND
|
||||
t.table_name = c1.table_name
|
||||
WHERE t.table_schema = 'information_schema' AND
|
||||
c1.ordinal_position =
|
||||
( SELECT COALESCE(MIN(c2.ordinal_position),1)
|
||||
FROM information_schema.columns c2
|
||||
WHERE c2.table_schema = 'information_schema' AND
|
||||
c2.table_name = t.table_name AND
|
||||
c2.column_name LIKE '%SCHEMA%'
|
||||
);
|
||||
|
||||
#
|
||||
# Bug#21231: query with a simple non-correlated subquery over
|
||||
# INFORMARTION_SCHEMA.TABLES
|
||||
#
|
||||
|
||||
SELECT MAX(table_name) FROM information_schema.tables;
|
||||
SELECT table_name from information_schema.tables
|
||||
WHERE table_name=(SELECT MAX(table_name)
|
||||
FROM information_schema.tables);
|
||||
|
||||
# End of 5.0 tests.
|
||||
|
@ -1079,7 +1079,7 @@ drop table t1,t2,t3;
|
||||
#
|
||||
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
|
||||
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
|
||||
select name2 from t1 union all select name from t1 union all select id from t1;
|
||||
select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
|
@ -27,3 +27,14 @@
|
||||
# client comment recognized, but parameter missing => error
|
||||
--exec echo "use" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
||||
|
||||
#
|
||||
# Bug #20103: Escaping with backslash does not work
|
||||
#
|
||||
--exec echo "SET SQL_MODE = 'NO_BACKSLASH_ESCAPES';" > $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec echo "SELECT '\';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
||||
|
||||
--exec echo "SET SQL_MODE = '';" > $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec echo "SELECT '\';';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
||||
|
@ -490,6 +490,7 @@ execute stmt;
|
||||
deallocate prepare stmt;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
#
|
||||
# Bug#19399 "Stored Procedures 'Lost Connection' when dropping/creating
|
||||
# tables"
|
||||
@ -537,86 +538,6 @@ execute stmt;
|
||||
SELECT FOUND_ROWS();
|
||||
deallocate prepare stmt;
|
||||
|
||||
#
|
||||
# Bug#8115: equality propagation and prepared statements
|
||||
#
|
||||
|
||||
create table t1 (a char(3) not null, b char(3) not null,
|
||||
c char(3) not null, primary key (a, b, c));
|
||||
create table t2 like t1;
|
||||
|
||||
# reduced query
|
||||
prepare stmt from
|
||||
"select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b)
|
||||
where t1.a=1";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
|
||||
# original query
|
||||
prepare stmt from
|
||||
"select t1.a, t1.b, t1.c, t2.a, t2.b, t2.c from
|
||||
(t1 left outer join t2 on t2.a=? and t1.b=t2.b)
|
||||
left outer join t2 t3 on t3.a=? where t1.a=?";
|
||||
|
||||
set @a:=1, @b:=1, @c:=1;
|
||||
|
||||
execute stmt using @a, @b, @c;
|
||||
execute stmt using @a, @b, @c;
|
||||
execute stmt using @a, @b, @c;
|
||||
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
|
||||
#
|
||||
|
||||
eval SET @aux= "SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS A,
|
||||
INFORMATION_SCHEMA.COLUMNS B
|
||||
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
|
||||
AND A.TABLE_NAME = B.TABLE_NAME
|
||||
AND A.COLUMN_NAME = B.COLUMN_NAME AND
|
||||
A.TABLE_NAME = 'user'";
|
||||
|
||||
let $exec_loop_count= 3;
|
||||
eval prepare my_stmt from @aux;
|
||||
while ($exec_loop_count)
|
||||
{
|
||||
eval execute my_stmt;
|
||||
dec $exec_loop_count;
|
||||
}
|
||||
deallocate prepare my_stmt;
|
||||
|
||||
# Test CALL in prepared mode
|
||||
delimiter |;
|
||||
--disable_warnings
|
||||
drop procedure if exists p1|
|
||||
drop table if exists t1|
|
||||
--enable_warnings
|
||||
create table t1 (id int)|
|
||||
insert into t1 values(1)|
|
||||
create procedure p1(a int, b int)
|
||||
begin
|
||||
declare c int;
|
||||
select max(id)+1 into c from t1;
|
||||
insert into t1 select a+b;
|
||||
insert into t1 select a-b;
|
||||
insert into t1 select a-c;
|
||||
end|
|
||||
set @a= 3, @b= 4|
|
||||
prepare stmt from "call p1(?, ?)"|
|
||||
execute stmt using @a, @b|
|
||||
execute stmt using @a, @b|
|
||||
select * from t1|
|
||||
deallocate prepare stmt|
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
delimiter ;|
|
||||
|
||||
#
|
||||
# Bug#9096 "select doesn't return all matched records if prepared statements
|
||||
# is used"
|
||||
@ -691,35 +612,6 @@ select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id);
|
||||
deallocate prepare stmt;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug#7306 LIMIT ?, ? and also WL#1785 " Prepared statements: implement
|
||||
# support for placeholders in LIMIT clause."
|
||||
# Add basic test coverage for the feature.
|
||||
#
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
prepare stmt from "select * from t1 limit ?, ?";
|
||||
set @offset=0, @limit=1;
|
||||
execute stmt using @offset, @limit;
|
||||
select * from t1 limit 0, 1;
|
||||
set @offset=3, @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
select * from t1 limit 3, 2;
|
||||
prepare stmt from "select * from t1 limit ?";
|
||||
execute stmt using @limit;
|
||||
--error 1235
|
||||
prepare stmt from "select * from t1 where a in (select a from t1 limit ?)";
|
||||
prepare stmt from "select * from t1 union all select * from t1 limit ?, ?";
|
||||
set @offset=9;
|
||||
set @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
prepare stmt from "(select * from t1 limit ?, ?) union all
|
||||
(select * from t1 limit ?, ?) order by a limit ?";
|
||||
execute stmt using @offset, @limit, @offset, @limit, @limit;
|
||||
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
|
||||
#
|
||||
# Bug#11060 "Server crashes on calling stored procedure with INSERT SELECT
|
||||
# UNION SELECT" aka "Server crashes on re-execution of prepared INSERT ...
|
||||
@ -837,22 +729,6 @@ select ??;
|
||||
select ? from t1;
|
||||
--enable_ps_protocol
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#12651
|
||||
# (Crash on a PS including a subquery which is a select from a simple view)
|
||||
#
|
||||
CREATE TABLE b12651_T1(a int) ENGINE=MYISAM;
|
||||
CREATE TABLE b12651_T2(b int) ENGINE=MYISAM;
|
||||
CREATE VIEW b12651_V1 as SELECT b FROM b12651_T2;
|
||||
|
||||
PREPARE b12651 FROM 'SELECT 1 FROM b12651_T1 WHERE a IN (SELECT b FROM b12651_V1)';
|
||||
EXECUTE b12651;
|
||||
|
||||
DROP VIEW b12651_V1;
|
||||
DROP TABLE b12651_T1, b12651_T2;
|
||||
DEALLOCATE PREPARE b12651;
|
||||
|
||||
#
|
||||
# Bug#9359 "Prepared statements take snapshot of system vars at PREPARE
|
||||
# time"
|
||||
@ -1087,7 +963,172 @@ select @@max_prepared_stmt_count, @@prepared_stmt_count;
|
||||
set global max_prepared_stmt_count= @old_max_prepared_stmt_count;
|
||||
--enable_ps_protocol
|
||||
|
||||
# End of 4.1 tests
|
||||
#
|
||||
# Bug#19399 "Stored Procedures 'Lost Connection' when dropping/creating
|
||||
# tables"
|
||||
# Check that multi-delete tables are also cleaned up before re-execution.
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
--enable_warnings
|
||||
# exact delete syntax is essential
|
||||
prepare stmt from "delete t1 from t1 where (cast(a1/3 as unsigned) * 3) = a1";
|
||||
drop temporary table t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
# the server crashed on the next statement without the fix
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
# the problem was in memory corruption: repeat the test just in case
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
create temporary table if not exists t1 (a1 int);
|
||||
execute stmt;
|
||||
drop temporary table t1;
|
||||
deallocate prepare stmt;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
############################# 5.0 tests start ################################
|
||||
#
|
||||
#
|
||||
# Bug#6102 "Server crash with prepared statement and blank after
|
||||
# function name"
|
||||
# ensure that stored functions are cached when preparing a statement
|
||||
# before we open tables
|
||||
#
|
||||
create table t1 (a varchar(20));
|
||||
insert into t1 values ('foo');
|
||||
--error 1305
|
||||
prepare stmt FROM 'SELECT char_length (a) FROM t1';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#8115: equality propagation and prepared statements
|
||||
#
|
||||
|
||||
create table t1 (a char(3) not null, b char(3) not null,
|
||||
c char(3) not null, primary key (a, b, c));
|
||||
create table t2 like t1;
|
||||
|
||||
# reduced query
|
||||
prepare stmt from
|
||||
"select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b)
|
||||
where t1.a=1";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
|
||||
# original query
|
||||
prepare stmt from
|
||||
"select t1.a, t1.b, t1.c, t2.a, t2.b, t2.c from
|
||||
(t1 left outer join t2 on t2.a=? and t1.b=t2.b)
|
||||
left outer join t2 t3 on t3.a=? where t1.a=?";
|
||||
|
||||
set @a:=1, @b:=1, @c:=1;
|
||||
|
||||
execute stmt using @a, @b, @c;
|
||||
execute stmt using @a, @b, @c;
|
||||
execute stmt using @a, @b, @c;
|
||||
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
|
||||
#
|
||||
|
||||
eval SET @aux= "SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS A,
|
||||
INFORMATION_SCHEMA.COLUMNS B
|
||||
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
|
||||
AND A.TABLE_NAME = B.TABLE_NAME
|
||||
AND A.COLUMN_NAME = B.COLUMN_NAME AND
|
||||
A.TABLE_NAME = 'user'";
|
||||
|
||||
let $exec_loop_count= 3;
|
||||
eval prepare my_stmt from @aux;
|
||||
while ($exec_loop_count)
|
||||
{
|
||||
eval execute my_stmt;
|
||||
dec $exec_loop_count;
|
||||
}
|
||||
deallocate prepare my_stmt;
|
||||
|
||||
# Test CALL in prepared mode
|
||||
delimiter |;
|
||||
--disable_warnings
|
||||
drop procedure if exists p1|
|
||||
drop table if exists t1|
|
||||
--enable_warnings
|
||||
create table t1 (id int)|
|
||||
insert into t1 values(1)|
|
||||
create procedure p1(a int, b int)
|
||||
begin
|
||||
declare c int;
|
||||
select max(id)+1 into c from t1;
|
||||
insert into t1 select a+b;
|
||||
insert into t1 select a-b;
|
||||
insert into t1 select a-c;
|
||||
end|
|
||||
set @a= 3, @b= 4|
|
||||
prepare stmt from "call p1(?, ?)"|
|
||||
execute stmt using @a, @b|
|
||||
execute stmt using @a, @b|
|
||||
select * from t1|
|
||||
deallocate prepare stmt|
|
||||
drop procedure p1|
|
||||
drop table t1|
|
||||
delimiter ;|
|
||||
|
||||
|
||||
#
|
||||
# Bug#7306 LIMIT ?, ? and also WL#1785 " Prepared statements: implement
|
||||
# support for placeholders in LIMIT clause."
|
||||
# Add basic test coverage for the feature.
|
||||
#
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||
prepare stmt from "select * from t1 limit ?, ?";
|
||||
set @offset=0, @limit=1;
|
||||
execute stmt using @offset, @limit;
|
||||
select * from t1 limit 0, 1;
|
||||
set @offset=3, @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
select * from t1 limit 3, 2;
|
||||
prepare stmt from "select * from t1 limit ?";
|
||||
execute stmt using @limit;
|
||||
--error 1235
|
||||
prepare stmt from "select * from t1 where a in (select a from t1 limit ?)";
|
||||
prepare stmt from "select * from t1 union all select * from t1 limit ?, ?";
|
||||
set @offset=9;
|
||||
set @limit=2;
|
||||
execute stmt using @offset, @limit;
|
||||
prepare stmt from "(select * from t1 limit ?, ?) union all
|
||||
(select * from t1 limit ?, ?) order by a limit ?";
|
||||
execute stmt using @offset, @limit, @offset, @limit, @limit;
|
||||
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
|
||||
#
|
||||
# Bug#12651
|
||||
# (Crash on a PS including a subquery which is a select from a simple view)
|
||||
#
|
||||
CREATE TABLE b12651_T1(a int) ENGINE=MYISAM;
|
||||
CREATE TABLE b12651_T2(b int) ENGINE=MYISAM;
|
||||
CREATE VIEW b12651_V1 as SELECT b FROM b12651_T2;
|
||||
|
||||
PREPARE b12651 FROM 'SELECT 1 FROM b12651_T1 WHERE a IN (SELECT b FROM b12651_V1)';
|
||||
EXECUTE b12651;
|
||||
|
||||
DROP VIEW b12651_V1;
|
||||
DROP TABLE b12651_T1, b12651_T2;
|
||||
DEALLOCATE PREPARE b12651;
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Bug #14956: ROW_COUNT() returns incorrect result after EXECUTE of prepared
|
||||
|
@ -316,6 +316,7 @@ prepare stmt4 from ' show table status from test like ''t9%'' ';
|
||||
--replace_column 8 # 12 # 13 # 14 #
|
||||
# Bug#4288
|
||||
execute stmt4;
|
||||
--replace_column 2 #
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show variables like ''sql_mode'' ';
|
||||
|
@ -435,6 +435,86 @@ connection master;
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
|
||||
#
|
||||
# BUG#20438: CREATE statements for views, stored routines and triggers can be
|
||||
# not replicable.
|
||||
#
|
||||
|
||||
--echo
|
||||
--echo ---> Test for BUG#20438
|
||||
|
||||
# Prepare environment.
|
||||
|
||||
--echo
|
||||
--echo ---> Preparing environment...
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
--echo ---> Synchronizing slave with master...
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
|
||||
--echo
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
# Test.
|
||||
|
||||
--echo
|
||||
--echo ---> Creating procedure...
|
||||
|
||||
/*!50003 CREATE PROCEDURE p1() SET @a = 1 */;
|
||||
|
||||
/*!50003 CREATE FUNCTION f1() RETURNS INT RETURN 0 */;
|
||||
|
||||
--echo
|
||||
--echo ---> Checking on master...
|
||||
|
||||
SHOW CREATE PROCEDURE p1;
|
||||
SHOW CREATE FUNCTION f1;
|
||||
|
||||
--echo
|
||||
--echo ---> Synchronizing slave with master...
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
|
||||
--echo ---> connection: master
|
||||
|
||||
--echo
|
||||
--echo ---> Checking on slave...
|
||||
|
||||
SHOW CREATE PROCEDURE p1;
|
||||
SHOW CREATE FUNCTION f1;
|
||||
|
||||
# Cleanup.
|
||||
|
||||
--echo
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
--echo
|
||||
--echo ---> Cleaning up...
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP FUNCTION f1;
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
--connection master
|
||||
|
||||
|
||||
# cleanup
|
||||
connection master;
|
||||
drop table t1;
|
||||
|
@ -331,6 +331,98 @@ SHOW TRIGGERS;
|
||||
|
||||
RESET MASTER;
|
||||
|
||||
# Restart slave.
|
||||
|
||||
connection slave;
|
||||
START SLAVE;
|
||||
|
||||
|
||||
#
|
||||
# BUG#20438: CREATE statements for views, stored routines and triggers can be
|
||||
# not replicable.
|
||||
#
|
||||
|
||||
--echo
|
||||
--echo ---> Test for BUG#20438
|
||||
|
||||
# Prepare environment.
|
||||
|
||||
--echo
|
||||
--echo ---> Preparing environment...
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
--echo ---> Synchronizing slave with master...
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
|
||||
--echo
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
# Test.
|
||||
|
||||
--echo
|
||||
--echo ---> Creating objects...
|
||||
|
||||
CREATE TABLE t1(c INT);
|
||||
CREATE TABLE t2(c INT);
|
||||
|
||||
/*!50003 CREATE TRIGGER t1_bi BEFORE INSERT ON t1
|
||||
FOR EACH ROW
|
||||
INSERT INTO t2 VALUES(NEW.c * 10) */;
|
||||
|
||||
--echo
|
||||
--echo ---> Inserting value...
|
||||
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
--echo
|
||||
--echo ---> Checking on master...
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
--echo
|
||||
--echo ---> Synchronizing slave with master...
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
|
||||
--echo ---> connection: master
|
||||
|
||||
--echo
|
||||
--echo ---> Checking on slave...
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
# Cleanup.
|
||||
|
||||
--echo
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
--echo
|
||||
--echo ---> Cleaning up...
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
--connection master
|
||||
|
||||
|
||||
#
|
||||
# End of tests
|
||||
|
@ -45,3 +45,87 @@ drop table t1;
|
||||
sync_slave_with_master;
|
||||
--replace_column 2 # 5 #
|
||||
show binlog events limit 1,100;
|
||||
|
||||
|
||||
|
||||
#
|
||||
# BUG#20438: CREATE statements for views, stored routines and triggers can be
|
||||
# not replicable.
|
||||
#
|
||||
|
||||
--echo
|
||||
--echo ---> Test for BUG#20438
|
||||
|
||||
# Prepare environment.
|
||||
|
||||
--echo
|
||||
--echo ---> Preparing environment...
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
--echo ---> Synchronizing slave with master...
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
|
||||
--echo
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
# Test.
|
||||
|
||||
--echo
|
||||
--echo ---> Creating objects...
|
||||
|
||||
CREATE TABLE t1(c INT);
|
||||
|
||||
/*!50003 CREATE VIEW v1 AS SELECT * FROM t1 */;
|
||||
|
||||
--echo
|
||||
--echo ---> Inserting value...
|
||||
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
--echo
|
||||
--echo ---> Checking on master...
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
--echo
|
||||
--echo ---> Synchronizing slave with master...
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
|
||||
--echo ---> connection: master
|
||||
|
||||
--echo
|
||||
--echo ---> Checking on slave...
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Cleanup.
|
||||
|
||||
--echo
|
||||
--echo ---> connection: master
|
||||
--connection master
|
||||
|
||||
--echo
|
||||
--echo ---> Cleaning up...
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master
|
||||
--connection master
|
||||
|
||||
|
@ -2304,6 +2304,51 @@ INSERT INTO t1 VALUES (10);
|
||||
SELECT i='1e+01',i=1e+01, i in (1e+01,1e+01), i in ('1e+01','1e+01') FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (1,1), (2,1), (4,10);
|
||||
|
||||
CREATE TABLE t2 (a int PRIMARY KEY, b int, KEY b (b));
|
||||
INSERT INTO t2 VALUES (1,NULL), (2,10);
|
||||
ALTER TABLE t1 ENABLE KEYS;
|
||||
|
||||
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
#
|
||||
# Bug #20954 "avg(keyval) retuns 0.38 but max(keyval) returns an empty set"
|
||||
#
|
||||
--disable_ps_protocol
|
||||
CREATE TABLE t1 (key1 float default NULL, UNIQUE KEY key1 (key1));
|
||||
CREATE TABLE t2 (key2 float default NULL, UNIQUE KEY key2 (key2));
|
||||
INSERT INTO t1 VALUES (0.3762),(0.3845),(0.6158),(0.7941);
|
||||
INSERT INTO t2 VALUES (1.3762),(1.3845),(1.6158),(1.7941);
|
||||
|
||||
explain select max(key1) from t1 where key1 <= 0.6158;
|
||||
explain select max(key2) from t2 where key2 <= 1.6158;
|
||||
explain select min(key1) from t1 where key1 >= 0.3762;
|
||||
explain select min(key2) from t2 where key2 >= 1.3762;
|
||||
explain select max(key1), min(key2) from t1, t2
|
||||
where key1 <= 0.6158 and key2 >= 1.3762;
|
||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
|
||||
select max(key1) from t1 where key1 <= 0.6158;
|
||||
select max(key2) from t2 where key2 <= 1.6158;
|
||||
select min(key1) from t1 where key1 >= 0.3762;
|
||||
select min(key2) from t2 where key2 >= 1.3762;
|
||||
select max(key1), min(key2) from t1, t2
|
||||
where key1 <= 0.6158 and key2 >= 1.3762;
|
||||
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
--enable_ps_protocol
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
@ -495,4 +495,15 @@ SHOW CREATE VIEW v1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP VIEW v1;
|
||||
|
||||
|
||||
#
|
||||
# Check that SHOW TABLES and SHOW COLUMNS give a error if there is no
|
||||
# referenced database and table respectively.
|
||||
#
|
||||
--error ER_BAD_DB_ERROR
|
||||
SHOW TABLES FROM no_such_database;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
SHOW COLUMNS FROM no_such_table;
|
||||
|
||||
|
||||
# End of 5.0 tests.
|
||||
|
@ -190,3 +190,25 @@ delimiter ;//
|
||||
show procedure code sudoku_solve;
|
||||
|
||||
drop procedure sudoku_solve;
|
||||
|
||||
|
||||
#
|
||||
# Bug#19207: Final parenthesis omitted for CREATE INDEX in Stored
|
||||
# Procedure
|
||||
#
|
||||
# Wrong criteria was used to distinguish the case when there was no
|
||||
# lookahead performed in the parser. Bug affected only statements
|
||||
# ending in one-character token without any optional tail, like CREATE
|
||||
# INDEX and CALL.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE PROCEDURE p1() CREATE INDEX idx ON t1 (c1);
|
||||
SHOW PROCEDURE CODE p1;
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
@ -1706,6 +1706,28 @@ drop function if exists bug16896;
|
||||
create aggregate function bug16896() returns int return 1;
|
||||
|
||||
|
||||
#
|
||||
# BUG#14702: misleading error message when syntax error in CREATE
|
||||
# PROCEDURE
|
||||
#
|
||||
# Misleading error message was given when IF NOT EXISTS was used in
|
||||
# CREATE PROCEDURE.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS bug14702;
|
||||
--enable_warnings
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE IF NOT EXISTS PROCEDURE bug14702()
|
||||
BEGIN
|
||||
END;
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE PROCEDURE IF NOT EXISTS bug14702()
|
||||
BEGIN
|
||||
END;
|
||||
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
@ -790,4 +790,80 @@ SELECT Host,User,Password FROM mysql.user WHERE User='user19857';
|
||||
|
||||
DROP USER user19857@localhost;
|
||||
|
||||
# End of 5.0 bugs.
|
||||
--disconnect con1root
|
||||
--connection default
|
||||
|
||||
|
||||
#
|
||||
# BUG#18630: Arguments of suid routine calculated in wrong security
|
||||
# context
|
||||
#
|
||||
# Arguments of suid routines were calculated in definer's security
|
||||
# context instead of caller's context thus creating security hole.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
DROP FUNCTION IF EXISTS f_suid;
|
||||
DROP PROCEDURE IF EXISTS p_suid;
|
||||
DROP FUNCTION IF EXISTS f_evil;
|
||||
--enable_warnings
|
||||
DELETE FROM mysql.user WHERE user LIKE 'mysqltest\_%';
|
||||
DELETE FROM mysql.db WHERE user LIKE 'mysqltest\_%';
|
||||
DELETE FROM mysql.tables_priv WHERE user LIKE 'mysqltest\_%';
|
||||
DELETE FROM mysql.columns_priv WHERE user LIKE 'mysqltest\_%';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
CREATE TABLE t1 (i INT);
|
||||
CREATE FUNCTION f_suid(i INT) RETURNS INT SQL SECURITY DEFINER RETURN 0;
|
||||
CREATE PROCEDURE p_suid(IN i INT) SQL SECURITY DEFINER SET @c:= 0;
|
||||
|
||||
CREATE USER mysqltest_u1@localhost;
|
||||
# Thanks to this grant statement privileges of anonymous users on
|
||||
# 'test' database are not applicable for mysqltest_u1@localhost.
|
||||
GRANT EXECUTE ON test.* TO mysqltest_u1@localhost;
|
||||
|
||||
delimiter |;
|
||||
CREATE DEFINER=mysqltest_u1@localhost FUNCTION f_evil () RETURNS INT
|
||||
SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
SET @a:= CURRENT_USER();
|
||||
SET @b:= (SELECT COUNT(*) FROM t1);
|
||||
RETURN @b;
|
||||
END|
|
||||
delimiter ;|
|
||||
|
||||
CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT f_evil();
|
||||
|
||||
connect (conn1, localhost, mysqltest_u1,,);
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT f_evil();
|
||||
SELECT @a, @b;
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT f_suid(f_evil());
|
||||
SELECT @a, @b;
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
CALL p_suid(f_evil());
|
||||
SELECT @a, @b;
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM v1;
|
||||
SELECT @a, @b;
|
||||
|
||||
disconnect conn1;
|
||||
connection default;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP FUNCTION f_evil;
|
||||
DROP USER mysqltest_u1@localhost;
|
||||
DROP PROCEDURE p_suid;
|
||||
DROP FUNCTION f_suid;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
@ -5962,7 +5962,208 @@ call bug15217()|
|
||||
drop table t3|
|
||||
drop procedure bug15217|
|
||||
|
||||
|
||||
#
|
||||
# BUG#21013: Performance Degrades when importing data that uses
|
||||
# Trigger and Stored Procedure
|
||||
#
|
||||
# This is a performance and memory leak test. Run with large number
|
||||
# passed to bug21013() procedure.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS bug21013 |
|
||||
--enable_warnings
|
||||
|
||||
CREATE PROCEDURE bug21013(IN lim INT)
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 0;
|
||||
WHILE (i < lim) DO
|
||||
SET @b = LOCATE(_latin1'b', @a, 1);
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END |
|
||||
|
||||
SET @a = _latin2"aaaaaaaaaa" |
|
||||
CALL bug21013(10) |
|
||||
|
||||
DROP PROCEDURE bug21013 |
|
||||
|
||||
|
||||
#
|
||||
# BUG#16211: Stored function return type for strings is ignored
|
||||
#
|
||||
|
||||
# Prepare: create database with fixed, pre-defined character set.
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest1|
|
||||
DROP DATABASE IF EXISTS mysqltest2|
|
||||
--enable_warnings
|
||||
|
||||
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8|
|
||||
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8|
|
||||
|
||||
# Test case:
|
||||
|
||||
use mysqltest1|
|
||||
|
||||
# - Create two stored functions -- with and without explicit CHARSET-clause
|
||||
# for return value;
|
||||
|
||||
CREATE FUNCTION bug16211_f1() RETURNS CHAR(10)
|
||||
RETURN ""|
|
||||
|
||||
CREATE FUNCTION bug16211_f2() RETURNS CHAR(10) CHARSET koi8r
|
||||
RETURN ""|
|
||||
|
||||
CREATE FUNCTION mysqltest2.bug16211_f3() RETURNS CHAR(10)
|
||||
RETURN ""|
|
||||
|
||||
CREATE FUNCTION mysqltest2.bug16211_f4() RETURNS CHAR(10) CHARSET koi8r
|
||||
RETURN ""|
|
||||
|
||||
# - Check that CHARSET-clause is specified for the second function;
|
||||
|
||||
SHOW CREATE FUNCTION bug16211_f1|
|
||||
SHOW CREATE FUNCTION bug16211_f2|
|
||||
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f3|
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f4|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
|
||||
|
||||
SELECT CHARSET(bug16211_f1())|
|
||||
SELECT CHARSET(bug16211_f2())|
|
||||
|
||||
SELECT CHARSET(mysqltest2.bug16211_f3())|
|
||||
SELECT CHARSET(mysqltest2.bug16211_f4())|
|
||||
|
||||
# - Alter database character set.
|
||||
|
||||
ALTER DATABASE mysqltest1 CHARACTER SET cp1251|
|
||||
ALTER DATABASE mysqltest2 CHARACTER SET cp1251|
|
||||
|
||||
# - Check that CHARSET-clause has not changed.
|
||||
|
||||
SHOW CREATE FUNCTION bug16211_f1|
|
||||
SHOW CREATE FUNCTION bug16211_f2|
|
||||
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f3|
|
||||
SHOW CREATE FUNCTION mysqltest2.bug16211_f4|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f1"|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest1" AND ROUTINE_NAME = "bug16211_f2"|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f3"|
|
||||
|
||||
SELECT dtd_identifier
|
||||
FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_SCHEMA = "mysqltest2" AND ROUTINE_NAME = "bug16211_f4"|
|
||||
|
||||
SELECT CHARSET(bug16211_f1())|
|
||||
SELECT CHARSET(bug16211_f2())|
|
||||
|
||||
SELECT CHARSET(mysqltest2.bug16211_f3())|
|
||||
SELECT CHARSET(mysqltest2.bug16211_f4())|
|
||||
|
||||
# Cleanup.
|
||||
|
||||
use test|
|
||||
|
||||
DROP DATABASE mysqltest1|
|
||||
DROP DATABASE mysqltest2|
|
||||
|
||||
|
||||
#
|
||||
# BUG#16676: Database CHARSET not used for stored procedures
|
||||
#
|
||||
|
||||
# Prepare: create database with fixed, pre-defined character set.
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest1|
|
||||
--enable_warnings
|
||||
|
||||
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8|
|
||||
|
||||
# Test case:
|
||||
|
||||
use mysqltest1|
|
||||
|
||||
# - Create two stored procedures -- with and without explicit CHARSET-clause;
|
||||
|
||||
CREATE PROCEDURE bug16676_p1(
|
||||
IN p1 CHAR(10),
|
||||
INOUT p2 CHAR(10),
|
||||
OUT p3 CHAR(10))
|
||||
BEGIN
|
||||
SELECT CHARSET(p1), COLLATION(p1);
|
||||
SELECT CHARSET(p2), COLLATION(p2);
|
||||
SELECT CHARSET(p3), COLLATION(p3);
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE bug16676_p2(
|
||||
IN p1 CHAR(10) CHARSET koi8r,
|
||||
INOUT p2 CHAR(10) CHARSET cp1251,
|
||||
OUT p3 CHAR(10) CHARSET greek)
|
||||
BEGIN
|
||||
SELECT CHARSET(p1), COLLATION(p1);
|
||||
SELECT CHARSET(p2), COLLATION(p2);
|
||||
SELECT CHARSET(p3), COLLATION(p3);
|
||||
END|
|
||||
|
||||
# - Call procedures.
|
||||
|
||||
SET @v2 = 'b'|
|
||||
SET @v3 = 'c'|
|
||||
|
||||
CALL bug16676_p1('a', @v2, @v3)|
|
||||
CALL bug16676_p2('a', @v2, @v3)|
|
||||
|
||||
# Cleanup.
|
||||
|
||||
use test|
|
||||
|
||||
DROP DATABASE mysqltest1|
|
||||
#
|
||||
# BUG#19862: Sort with filesort by function evaluates function twice
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug19862|
|
||||
--enable_warnings
|
||||
CREATE TABLE t11 (a INT)|
|
||||
CREATE TABLE t12 (a INT)|
|
||||
CREATE FUNCTION bug19862(x INT) RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO t11 VALUES (x);
|
||||
RETURN x+1;
|
||||
END|
|
||||
INSERT INTO t12 VALUES (1), (2)|
|
||||
SELECT bug19862(a) FROM t12 ORDER BY 1|
|
||||
SELECT * FROM t11|
|
||||
DROP TABLE t11, t12|
|
||||
DROP FUNCTION bug19862|
|
||||
# Bug#21002 "Derived table not selecting from a "real" table fails in JOINs"
|
||||
#
|
||||
# A regression caused by the fix for Bug#18444: for derived tables we should
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1851,6 +1851,24 @@ select 1 from dual where 2 > any (select 1);
|
||||
select 1 from dual where 2 > all (select 1);
|
||||
select 1 from dual where 1 < any (select 2 from dual);
|
||||
select 1 from dual where 1 < all (select 2 from dual where 1!=1);
|
||||
|
||||
# BUG#20975 Wrong query results for subqueries within NOT
|
||||
create table t1 (s1 char);
|
||||
insert into t1 values (1),(2);
|
||||
|
||||
select * from t1 where (s1 < any (select s1 from t1));
|
||||
select * from t1 where not (s1 < any (select s1 from t1));
|
||||
|
||||
select * from t1 where (s1 < ALL (select s1+1 from t1));
|
||||
select * from t1 where not(s1 < ALL (select s1+1 from t1));
|
||||
|
||||
select * from t1 where (s1+1 = ANY (select s1 from t1));
|
||||
select * from t1 where NOT(s1+1 = ANY (select s1 from t1));
|
||||
|
||||
select * from t1 where (s1 = ALL (select s1/s1 from t1));
|
||||
select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
|
||||
drop table t1;
|
||||
# End of 4.1 tests
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
@ -150,3 +150,21 @@ EXPLAIN SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JO
|
||||
|
||||
drop table t1, t2, t3, t4;
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug #20792: Incorrect results from aggregate subquery
|
||||
#
|
||||
CREATE TABLE t1 (a int(10) , PRIMARY KEY (a)) Engine=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
|
||||
CREATE TABLE t2 (a int(10), PRIMARY KEY (a)) Engine=InnoDB;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
|
||||
CREATE TABLE t3 (a int(10), b int(10), c int(10),
|
||||
PRIMARY KEY (a)) Engine=InnoDB;
|
||||
INSERT INTO t3 VALUES (1,2,1);
|
||||
|
||||
SELECT t1.* FROM t1 WHERE (SELECT COUNT(*) FROM t3,t2 WHERE t3.c=t2.a
|
||||
and t2.a='1' AND t1.a=t3.b) > 0;
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
@ -109,6 +109,24 @@ SELECT myfunc_double(n) AS f FROM bug19904;
|
||||
SELECT metaphon(v) AS f FROM bug19904;
|
||||
DROP TABLE bug19904;
|
||||
|
||||
#
|
||||
# Bug#21269: DEFINER-clause is allowed for UDF-functions
|
||||
#
|
||||
|
||||
--error ER_WRONG_USAGE
|
||||
CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse
|
||||
RETURNS STRING SONAME "should_not_parse.so";
|
||||
|
||||
--error ER_WRONG_USAGE
|
||||
CREATE DEFINER=someone@somewhere FUNCTION should_not_parse
|
||||
RETURNS STRING SONAME "should_not_parse.so";
|
||||
#
|
||||
# Bug#19862: Sort with filesort by function evaluates function twice
|
||||
#
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2);
|
||||
explain select myfunc_int(f1) from t1 order by 1;
|
||||
drop table t1;
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
#
|
||||
|
@ -390,8 +390,8 @@ create table t1 SELECT da from t2 UNION select dt from t2;
|
||||
select * from t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
create table t1 SELECT dt from t2 UNION select sc from t2;
|
||||
select * from t1;
|
||||
create table t1 SELECT dt from t2 UNION select trim(sc) from t2;
|
||||
select trim(dt) from t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
create table t1 SELECT dt from t2 UNION select sv from t2;
|
||||
@ -794,6 +794,14 @@ drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#12185: Data type aggregation may produce wrong result
|
||||
#
|
||||
create table t1(f1 char(1), f2 char(5), f3 binary(1), f4 binary(5), f5 timestamp, f6 varchar(1) character set utf8 collate utf8_general_ci, f7 text);
|
||||
create table t2 as select *, f6 as f8 from t1 union select *, f7 from t1;
|
||||
show create table t2;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug#18175: Union select over 129 tables with a sum function fails.
|
||||
#
|
||||
|
@ -2643,3 +2643,78 @@ DESCRIBE t2;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# Bug #17526: views with TRIM functions
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (s varchar(10));
|
||||
INSERT INTO t1 VALUES ('yadda'), ('yady');
|
||||
|
||||
SELECT TRIM(BOTH 'y' FROM s) FROM t1;
|
||||
CREATE VIEW v1 AS SELECT TRIM(BOTH 'y' FROM s) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
||||
|
||||
SELECT TRIM(LEADING 'y' FROM s) FROM t1;
|
||||
CREATE VIEW v1 AS SELECT TRIM(LEADING 'y' FROM s) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
||||
|
||||
SELECT TRIM(TRAILING 'y' FROM s) FROM t1;
|
||||
CREATE VIEW v1 AS SELECT TRIM(TRAILING 'y' FROM s) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
#Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
|
||||
#
|
||||
CREATE TABLE t1 (x INT, y INT);
|
||||
CREATE ALGORITHM=TEMPTABLE SQL SECURITY INVOKER VIEW v1 AS SELECT x FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
|
||||
ALTER VIEW v1 AS SELECT x, y FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
# Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE
|
||||
# clause is called
|
||||
#
|
||||
CREATE TABLE t1 (s1 char);
|
||||
INSERT INTO t1 VALUES ('Z');
|
||||
|
||||
CREATE VIEW v1 AS SELECT s1 collate latin1_german1_ci AS col FROM t1;
|
||||
|
||||
CREATE VIEW v2 (col) AS SELECT s1 collate latin1_german1_ci FROM t1;
|
||||
|
||||
# either of these statements will cause crash
|
||||
INSERT INTO v1 (col) VALUES ('b');
|
||||
INSERT INTO v2 (col) VALUES ('c');
|
||||
|
||||
SELECT s1 FROM t1;
|
||||
DROP VIEW v1, v2;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
|
||||
#
|
||||
CREATE TABLE t1 (id INT);
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
SHOW TABLES;
|
||||
|
||||
--error 1051
|
||||
DROP VIEW v2,v1;
|
||||
SHOW TABLES;
|
||||
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
--error 1347
|
||||
DROP VIEW t1,v1;
|
||||
SHOW TABLES;
|
||||
|
||||
DROP TABLE t1;
|
||||
--disable_warnings
|
||||
DROP VIEW IF EXISTS v1;
|
||||
--enable_warnings
|
||||
|
Reference in New Issue
Block a user