mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	into mockturtle.local:/home/dlenev/src/mysql-5.0-bg24491 sql/item.h: Auto merged mysql-test/r/ps.result: Manual merge. mysql-test/t/ps.test: Manual merge.
		
			
				
	
	
		
			1665 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1665 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
drop table if exists t1,t2;
 | 
						||
drop database if exists client_test_db;
 | 
						||
create table t1
 | 
						||
(
 | 
						||
a int primary key,
 | 
						||
b char(10)
 | 
						||
);
 | 
						||
insert into t1 values (1,'one');
 | 
						||
insert into t1 values (2,'two');
 | 
						||
insert into t1 values (3,'three');
 | 
						||
insert into t1 values (4,'four');
 | 
						||
set @a=2;
 | 
						||
prepare stmt1 from 'select * from t1 where a <= ?';
 | 
						||
execute stmt1 using @a;
 | 
						||
a	b
 | 
						||
1	one
 | 
						||
2	two
 | 
						||
set @a=3;
 | 
						||
execute stmt1 using @a;
 | 
						||
a	b
 | 
						||
1	one
 | 
						||
2	two
 | 
						||
3	three
 | 
						||
deallocate prepare no_such_statement;
 | 
						||
ERROR HY000: Unknown prepared statement handler (no_such_statement) given to DEALLOCATE PREPARE
 | 
						||
execute stmt1;
 | 
						||
ERROR HY000: Incorrect arguments to EXECUTE
 | 
						||
prepare stmt2 from 'prepare nested_stmt from "select 1"';
 | 
						||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"select 1"' at line 1
 | 
						||
prepare stmt2 from 'execute stmt1';
 | 
						||
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 'stmt1' at line 1
 | 
						||
prepare stmt2 from 'deallocate prepare z';
 | 
						||
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 'z' at line 1
 | 
						||
prepare stmt3 from 'insert into t1 values (?,?)';
 | 
						||
set @arg1=5, @arg2='five';
 | 
						||
execute stmt3 using @arg1, @arg2;
 | 
						||
select * from t1 where a>3;
 | 
						||
a	b
 | 
						||
4	four
 | 
						||
5	five
 | 
						||
prepare stmt4 from 'update t1 set a=? where b=?';
 | 
						||
set @arg1=55, @arg2='five';
 | 
						||
execute stmt4 using @arg1, @arg2;
 | 
						||
select * from t1 where a>3;
 | 
						||
a	b
 | 
						||
4	four
 | 
						||
55	five
 | 
						||
prepare stmt4 from 'create table t2 (a int)';
 | 
						||
execute stmt4;
 | 
						||
prepare stmt4 from 'drop table t2';
 | 
						||
execute stmt4;
 | 
						||
execute stmt4;
 | 
						||
ERROR 42S02: Unknown table 't2'
 | 
						||
prepare stmt5 from 'select ? + a from t1';
 | 
						||
set @a=1;
 | 
						||
execute stmt5 using @a;
 | 
						||
? + a
 | 
						||
2
 | 
						||
3
 | 
						||
4
 | 
						||
5
 | 
						||
56
 | 
						||
execute stmt5 using @no_such_var;
 | 
						||
? + a
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
set @nullvar=1;
 | 
						||
set @nullvar=NULL;
 | 
						||
execute stmt5 using @nullvar;
 | 
						||
? + a
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
set @nullvar2=NULL;
 | 
						||
execute stmt5 using @nullvar2;
 | 
						||
? + a
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
NULL
 | 
						||
prepare stmt6 from 'select 1; select2';
 | 
						||
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 '; select2' at line 1
 | 
						||
prepare stmt6 from 'insert into t1 values (5,"five"); select2';
 | 
						||
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 '; select2' at line 1
 | 
						||
explain prepare stmt6 from 'insert into t1 values (5,"five"); select2';
 | 
						||
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 'insert into t1 values (5,"five"); select2'' at line 1
 | 
						||
create table t2
 | 
						||
(
 | 
						||
a int
 | 
						||
);
 | 
						||
insert into t2 values (0);
 | 
						||
set @arg00=NULL ;
 | 
						||
prepare stmt1 from 'select 1 FROM t2 where a=?' ;
 | 
						||
execute stmt1 using @arg00 ;
 | 
						||
1
 | 
						||
prepare stmt1 from @nosuchvar;
 | 
						||
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 'NULL' at line 1
 | 
						||
set @ivar= 1234;
 | 
						||
prepare stmt1 from @ivar;
 | 
						||
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 '1234' at line 1
 | 
						||
set @fvar= 123.4567;
 | 
						||
prepare stmt1 from @fvar;
 | 
						||
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 '123.4567' at line 1
 | 
						||
drop table t1,t2;
 | 
						||
deallocate prepare stmt3;
 | 
						||
deallocate prepare stmt4;
 | 
						||
deallocate prepare stmt5;
 | 
						||
PREPARE stmt1 FROM "select _utf8 'A' collate utf8_bin = ?";
 | 
						||
set @var='A';
 | 
						||
EXECUTE stmt1 USING @var;
 | 
						||
_utf8 'A' collate utf8_bin = ?
 | 
						||
1
 | 
						||
DEALLOCATE PREPARE stmt1;
 | 
						||
create table t1 (id int);
 | 
						||
prepare stmt1 from "select FOUND_ROWS()";
 | 
						||
select SQL_CALC_FOUND_ROWS * from t1;
 | 
						||
id
 | 
						||
execute stmt1;
 | 
						||
FOUND_ROWS()
 | 
						||
0
 | 
						||
insert into t1 values (1);
 | 
						||
select SQL_CALC_FOUND_ROWS * from t1;
 | 
						||
id
 | 
						||
1
 | 
						||
execute stmt1;
 | 
						||
FOUND_ROWS()
 | 
						||
1
 | 
						||
execute stmt1;
 | 
						||
FOUND_ROWS()
 | 
						||
1
 | 
						||
deallocate prepare stmt1;
 | 
						||
drop table t1;
 | 
						||
create table t1 
 | 
						||
(
 | 
						||
c1  tinyint, c2  smallint, c3  mediumint, c4  int,
 | 
						||
c5  integer, c6  bigint, c7  float, c8  double,
 | 
						||
c9  double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
 | 
						||
c13 date, c14 datetime, c15 timestamp, c16 time,
 | 
						||
c17 year, c18 bit, c19 bool, c20 char,
 | 
						||
c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
 | 
						||
c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
 | 
						||
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
 | 
						||
c32 set('monday', 'tuesday', 'wednesday')
 | 
						||
) engine = MYISAM ;
 | 
						||
create table t2 like t1;
 | 
						||
set @stmt= ' explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25 ' ;
 | 
						||
prepare stmt1 from @stmt ;
 | 
						||
execute stmt1 ;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
6	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	no matching row in const table
 | 
						||
5	DEPENDENT SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
 | 
						||
4	DEPENDENT SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
 | 
						||
3	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
execute stmt1 ;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
6	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	no matching row in const table
 | 
						||
5	DEPENDENT SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
 | 
						||
4	DEPENDENT SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
 | 
						||
3	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
6	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	no matching row in const table
 | 
						||
5	DEPENDENT SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
 | 
						||
4	DEPENDENT SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
 | 
						||
3	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | 
						||
deallocate prepare stmt1;
 | 
						||
drop tables t1,t2;
 | 
						||
set @arg00=1;
 | 
						||
prepare stmt1 from ' create table t1 (m int) as select 1 as m ' ;
 | 
						||
execute stmt1 ;
 | 
						||
select m from t1;
 | 
						||
m
 | 
						||
1
 | 
						||
drop table t1;
 | 
						||
prepare stmt1 from ' create table t1 (m int) as select ? as m ' ;
 | 
						||
execute stmt1 using @arg00;
 | 
						||
select m from t1;
 | 
						||
m
 | 
						||
1
 | 
						||
deallocate prepare stmt1;
 | 
						||
drop table t1;
 | 
						||
create table t1 (id int(10) unsigned NOT NULL default '0',
 | 
						||
name varchar(64) NOT NULL default '',
 | 
						||
PRIMARY KEY  (id), UNIQUE KEY `name` (`name`));
 | 
						||
insert into t1 values (1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5'),(6,'6'),(7,'7');
 | 
						||
prepare stmt1 from 'select name from t1 where id=? or id=?';
 | 
						||
set @id1=1,@id2=6;
 | 
						||
execute stmt1 using @id1, @id2;
 | 
						||
name
 | 
						||
1
 | 
						||
6
 | 
						||
select name from t1 where id=1 or id=6;
 | 
						||
name
 | 
						||
1
 | 
						||
6
 | 
						||
deallocate prepare stmt1;
 | 
						||
drop table t1;
 | 
						||
create table t1 ( a int primary key, b varchar(30)) engine = MYISAM ;
 | 
						||
prepare stmt1 from ' show table status from test like ''t1%'' ';
 | 
						||
execute stmt1;
 | 
						||
Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
 | 
						||
t1	MyISAM	10	Dynamic	0	0	0	4294967295	1024	0	NULL	#	#	#	latin1_swedish_ci	NULL		
 | 
						||
show table status from test like 't1%' ;
 | 
						||
Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
 | 
						||
t1	MyISAM	10	Dynamic	0	0	0	4294967295	1024	0	NULL	#	#	#	latin1_swedish_ci	NULL		
 | 
						||
deallocate prepare stmt1 ;
 | 
						||
drop table t1;
 | 
						||
create table t1(a varchar(2), b varchar(3));
 | 
						||
prepare stmt1 from "select a, b from t1 where (not (a='aa' and b < 'zzz'))";
 | 
						||
execute stmt1;
 | 
						||
a	b
 | 
						||
execute stmt1;
 | 
						||
a	b
 | 
						||
deallocate prepare stmt1;
 | 
						||
drop table t1;
 | 
						||
prepare stmt1 from "select 1 into @var";
 | 
						||
execute stmt1;
 | 
						||
execute stmt1;
 | 
						||
prepare stmt1 from "create table t1 select 1 as i";
 | 
						||
execute stmt1;
 | 
						||
drop table t1;
 | 
						||
execute stmt1;
 | 
						||
prepare stmt1 from "insert into t1 select i from t1";
 | 
						||
execute stmt1;
 | 
						||
execute stmt1;
 | 
						||
prepare stmt1 from "select * from t1 into outfile 'f1.txt'";
 | 
						||
execute stmt1;
 | 
						||
deallocate prepare stmt1;
 | 
						||
drop table t1;
 | 
						||
prepare stmt1 from 'select 1';
 | 
						||
prepare STMT1 from 'select 2';
 | 
						||
execute sTmT1;
 | 
						||
2
 | 
						||
2
 | 
						||
deallocate prepare StMt1;
 | 
						||
deallocate prepare Stmt1;
 | 
						||
ERROR HY000: Unknown prepared statement handler (Stmt1) given to DEALLOCATE PREPARE
 | 
						||
set names utf8;
 | 
						||
prepare `ü` from 'select 1234';
 | 
						||
execute `ü` ;
 | 
						||
1234
 | 
						||
1234
 | 
						||
set names latin1;
 | 
						||
execute `<60>`;
 | 
						||
1234
 | 
						||
1234
 | 
						||
deallocate prepare `<60>`;
 | 
						||
set names default;
 | 
						||
create table t1 (a varchar(10)) charset=utf8;
 | 
						||
insert into t1 (a) values ('yahoo');
 | 
						||
set character_set_connection=latin1;
 | 
						||
prepare stmt from 'select a from t1 where a like ?';
 | 
						||
set @var='google';
 | 
						||
execute stmt using @var;
 | 
						||
a
 | 
						||
execute stmt using @var;
 | 
						||
a
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
create table t1 (a bigint(20) not null primary key auto_increment);
 | 
						||
insert into t1 (a) values (null);
 | 
						||
select * from t1;
 | 
						||
a
 | 
						||
1
 | 
						||
prepare stmt from "insert into t1 (a) values (?)";
 | 
						||
set @var=null;
 | 
						||
execute stmt using @var;
 | 
						||
select * from t1;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
drop table t1;
 | 
						||
create table t1 (a timestamp not null);
 | 
						||
prepare stmt from "insert into t1 (a) values (?)";
 | 
						||
execute stmt using @var;
 | 
						||
select * from t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
prepare stmt from "select 'abc' like convert('abc' using utf8)";
 | 
						||
execute stmt;
 | 
						||
'abc' like convert('abc' using utf8)
 | 
						||
1
 | 
						||
execute stmt;
 | 
						||
'abc' like convert('abc' using utf8)
 | 
						||
1
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 ( a bigint );
 | 
						||
prepare stmt from 'select a from t1 where a between ? and ?';
 | 
						||
set @a=1;
 | 
						||
execute stmt using @a, @a;
 | 
						||
a
 | 
						||
execute stmt using @a, @a;
 | 
						||
a
 | 
						||
execute stmt using @a, @a;
 | 
						||
a
 | 
						||
drop table t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (a int);
 | 
						||
prepare stmt from "select * from t1 where 1 > (1 in (SELECT * FROM t1))";
 | 
						||
execute stmt;
 | 
						||
a
 | 
						||
execute stmt;
 | 
						||
a
 | 
						||
execute stmt;
 | 
						||
a
 | 
						||
drop table t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (a int, b int);
 | 
						||
insert into t1 (a, b) values (1,1), (1,2), (2,1), (2,2);
 | 
						||
prepare stmt from
 | 
						||
"explain select * from t1 where t1.a=2 and t1.a=t1.b and t1.b > 1 + ?";
 | 
						||
set @v=5;
 | 
						||
execute stmt using @v;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
-	-	-	-	-	-	-	-	NULL	Impossible WHERE
 | 
						||
set @v=0;
 | 
						||
execute stmt using @v;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
-	-	-	-	-	-	-	-	4	Using where
 | 
						||
set @v=5;
 | 
						||
execute stmt using @v;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
-	-	-	-	-	-	-	-	NULL	Impossible WHERE
 | 
						||
drop table t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (a int);
 | 
						||
insert into t1 (a) values (1), (2), (3), (4);
 | 
						||
set @precision=10000000000;
 | 
						||
select rand(), 
 | 
						||
cast(rand(10)*@precision as unsigned integer) from t1;
 | 
						||
rand()	cast(rand(10)*@precision as unsigned integer)
 | 
						||
-	6570515220
 | 
						||
-	1282061302
 | 
						||
-	6698761160
 | 
						||
-	9647622201
 | 
						||
prepare stmt from
 | 
						||
"select rand(), 
 | 
						||
        cast(rand(10)*@precision as unsigned integer),
 | 
						||
        cast(rand(?)*@precision as unsigned integer) from t1";
 | 
						||
set @var=1;
 | 
						||
execute stmt using @var;
 | 
						||
rand()	cast(rand(10)*@precision as unsigned integer)	cast(rand(?)*@precision as unsigned integer)
 | 
						||
-	6570515220	-
 | 
						||
-	1282061302	-
 | 
						||
-	6698761160	-
 | 
						||
-	9647622201	-
 | 
						||
set @var=2;
 | 
						||
execute stmt using @var;
 | 
						||
rand()	cast(rand(10)*@precision as unsigned integer)	cast(rand(?)*@precision as unsigned integer)
 | 
						||
-	6570515220	6555866465
 | 
						||
-	1282061302	1223466193
 | 
						||
-	6698761160	6449731874
 | 
						||
-	9647622201	8578261098
 | 
						||
set @var=3;
 | 
						||
execute stmt using @var;
 | 
						||
rand()	cast(rand(10)*@precision as unsigned integer)	cast(rand(?)*@precision as unsigned integer)
 | 
						||
-	6570515220	9057697560
 | 
						||
-	1282061302	3730790581
 | 
						||
-	6698761160	1480860535
 | 
						||
-	9647622201	6211931236
 | 
						||
drop table t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
create database mysqltest1;
 | 
						||
create table t1 (a int);
 | 
						||
create table mysqltest1.t1 (a int);
 | 
						||
select * from t1, mysqltest1.t1;
 | 
						||
a	a
 | 
						||
prepare stmt from "select * from t1, mysqltest1.t1";
 | 
						||
execute stmt;
 | 
						||
a	a
 | 
						||
execute stmt;
 | 
						||
a	a
 | 
						||
execute stmt;
 | 
						||
a	a
 | 
						||
drop table t1;
 | 
						||
drop table mysqltest1.t1;
 | 
						||
drop database mysqltest1;
 | 
						||
deallocate prepare stmt;
 | 
						||
select '1.1' as a, '1.2' as a UNION SELECT '2.1', '2.2';
 | 
						||
a	a
 | 
						||
1.1	1.2
 | 
						||
2.1	2.2
 | 
						||
prepare stmt from
 | 
						||
"select '1.1' as a, '1.2' as a UNION SELECT '2.1', '2.2'";
 | 
						||
execute stmt;
 | 
						||
a	a
 | 
						||
1.1	1.2
 | 
						||
2.1	2.2
 | 
						||
execute stmt;
 | 
						||
a	a
 | 
						||
1.1	1.2
 | 
						||
2.1	2.2
 | 
						||
execute stmt;
 | 
						||
a	a
 | 
						||
1.1	1.2
 | 
						||
2.1	2.2
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (a int);
 | 
						||
insert into t1 values (1),(2),(3);
 | 
						||
create table t2 select * from t1;
 | 
						||
prepare stmt FROM 'create table t2 select * from t1';
 | 
						||
drop table t2;
 | 
						||
execute stmt;
 | 
						||
drop table t2;
 | 
						||
execute stmt;
 | 
						||
execute stmt;
 | 
						||
ERROR 42S01: Table 't2' already exists
 | 
						||
drop table t2;
 | 
						||
execute stmt;
 | 
						||
drop table t1,t2;
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (a int);
 | 
						||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
 | 
						||
prepare stmt from "select sql_calc_found_rows * from t1 limit 2";
 | 
						||
execute stmt;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
select found_rows();
 | 
						||
found_rows()
 | 
						||
10
 | 
						||
execute stmt;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
select found_rows();
 | 
						||
found_rows()
 | 
						||
10
 | 
						||
execute stmt;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
select found_rows();
 | 
						||
found_rows()
 | 
						||
10
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
CREATE TABLE t1 (N int, M tinyint);
 | 
						||
INSERT INTO t1 VALUES (1,0),(1,0),(2,0),(2,0),(3,0);
 | 
						||
PREPARE stmt FROM 'UPDATE t1 AS P1 INNER JOIN (SELECT N FROM t1 GROUP BY N HAVING COUNT(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2';
 | 
						||
EXECUTE stmt;
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
DROP TABLE t1;
 | 
						||
prepare stmt from "select ? is null, ? is not null, ?";
 | 
						||
select @no_such_var is null, @no_such_var is not null, @no_such_var;
 | 
						||
@no_such_var is null	@no_such_var is not null	@no_such_var
 | 
						||
1	0	NULL
 | 
						||
execute stmt using @no_such_var, @no_such_var, @no_such_var;
 | 
						||
? is null	? is not null	?
 | 
						||
1	0	NULL
 | 
						||
set @var='abc';
 | 
						||
select @var is null, @var is not null, @var;
 | 
						||
@var is null	@var is not null	@var
 | 
						||
0	1	abc
 | 
						||
execute stmt using @var, @var, @var;
 | 
						||
? is null	? is not null	?
 | 
						||
0	1	abc
 | 
						||
set @var=null;
 | 
						||
select @var is null, @var is not null, @var;
 | 
						||
@var is null	@var is not null	@var
 | 
						||
1	0	NULL
 | 
						||
execute stmt using @var, @var, @var;
 | 
						||
? is null	? is not null	?
 | 
						||
1	0	NULL
 | 
						||
create table t1 (pnum char(3));
 | 
						||
create table t2 (pnum char(3));
 | 
						||
prepare stmt from "select pnum from t2 having pnum in (select 'p1' from t1)";
 | 
						||
execute stmt;
 | 
						||
pnum
 | 
						||
execute stmt;
 | 
						||
pnum
 | 
						||
execute stmt;
 | 
						||
pnum
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1, t2;
 | 
						||
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;
 | 
						||
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;
 | 
						||
prepare stmt from "SELECT SQL_CALC_FOUND_ROWS 'foo' UNION SELECT 'bar' LIMIT 0";
 | 
						||
execute stmt;
 | 
						||
foo
 | 
						||
SELECT FOUND_ROWS();
 | 
						||
FOUND_ROWS()
 | 
						||
2
 | 
						||
execute stmt;
 | 
						||
foo
 | 
						||
SELECT FOUND_ROWS();
 | 
						||
FOUND_ROWS()
 | 
						||
2
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table if exists t1;
 | 
						||
Warnings:
 | 
						||
Note	1051	Unknown table 't1'
 | 
						||
create table t1 (c1 int(11) not null, c2 int(11) not null,
 | 
						||
primary key  (c1,c2), key c2 (c2), key c1 (c1));
 | 
						||
insert into t1 values (200887, 860);
 | 
						||
insert into t1 values (200887, 200887);
 | 
						||
select * from t1 where (c1=200887 and c2=200887) or c2=860;
 | 
						||
c1	c2
 | 
						||
200887	860
 | 
						||
200887	200887
 | 
						||
prepare stmt from
 | 
						||
"select * from t1 where (c1=200887 and c2=200887) or c2=860";
 | 
						||
execute stmt;
 | 
						||
c1	c2
 | 
						||
200887	860
 | 
						||
200887	200887
 | 
						||
prepare stmt from
 | 
						||
"select * from t1 where (c1=200887 and c2=?) or c2=?";
 | 
						||
set @a=200887, @b=860;
 | 
						||
execute stmt using @a, @b;
 | 
						||
c1	c2
 | 
						||
200887	860
 | 
						||
200887	200887
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
create table t1 (
 | 
						||
id bigint(20) not null auto_increment,
 | 
						||
code varchar(20) character set utf8 collate utf8_bin not null default '',
 | 
						||
company_name varchar(250) character set utf8 collate utf8_bin default null,
 | 
						||
setup_mode tinyint(4) default null,
 | 
						||
start_date datetime default null,
 | 
						||
primary key  (id), unique key code (code)
 | 
						||
);
 | 
						||
create table t2 (
 | 
						||
id bigint(20) not null auto_increment,
 | 
						||
email varchar(250) character set utf8 collate utf8_bin default null,
 | 
						||
name varchar(250) character set utf8 collate utf8_bin default null,
 | 
						||
t1_id bigint(20) default null,
 | 
						||
password varchar(250) character set utf8 collate utf8_bin default null,
 | 
						||
primary_contact tinyint(4) not null default '0',
 | 
						||
email_opt_in tinyint(4) not null default '1',
 | 
						||
primary key  (id), unique key email (email), key t1_id (t1_id),
 | 
						||
constraint t2_fk1 foreign key (t1_id) references t1 (id)
 | 
						||
);
 | 
						||
insert into t1 values
 | 
						||
(1, 'demo', 'demo s', 0, current_date()),
 | 
						||
(2, 'code2', 'name 2', 0, current_date()),
 | 
						||
(3, 'code3', 'name 3', 0, current_date());
 | 
						||
insert into t2 values
 | 
						||
(2, 'email1', 'name1', 3, 'password1', 0, 0),
 | 
						||
(3, 'email2', 'name1', 1, 'password2', 1, 0),
 | 
						||
(5, 'email3', 'name3', 2, 'password3', 0, 0);
 | 
						||
prepare stmt from 'select t2.id from t2, t1 where (t1.id=? and t2.t1_id=t1.id)';
 | 
						||
set @a=1;
 | 
						||
execute stmt using @a;
 | 
						||
id
 | 
						||
3
 | 
						||
select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id);
 | 
						||
id
 | 
						||
3
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1, t2;
 | 
						||
create table t1 (id int);
 | 
						||
prepare stmt from "insert into t1 (id) select id from t1 union select id from t1";
 | 
						||
execute stmt;
 | 
						||
execute stmt;
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
create table t1 (
 | 
						||
id int(11) unsigned not null primary key auto_increment,
 | 
						||
partner_id varchar(35) not null,
 | 
						||
t1_status_id int(10) unsigned
 | 
						||
);
 | 
						||
insert into t1 values ("1", "partner1", "10"), ("2", "partner2", "10"),
 | 
						||
("3", "partner3", "10"), ("4", "partner4", "10");
 | 
						||
create table t2 (
 | 
						||
id int(11) unsigned not null default '0',
 | 
						||
t1_line_id int(11) unsigned not null default '0',
 | 
						||
article_id varchar(20),
 | 
						||
sequence int(11) not null default '0',
 | 
						||
primary key  (id,t1_line_id)
 | 
						||
);
 | 
						||
insert into t2 values ("1", "1", "sup", "0"), ("2", "1", "sup", "1"),
 | 
						||
("2", "2", "sup", "2"), ("2", "3", "sup", "3"),
 | 
						||
("2", "4", "imp", "4"), ("3", "1", "sup", "0"),
 | 
						||
("4", "1", "sup", "0");
 | 
						||
create table t3 (
 | 
						||
id int(11) not null default '0',
 | 
						||
preceeding_id int(11) not null default '0',
 | 
						||
primary key  (id,preceeding_id)
 | 
						||
);
 | 
						||
create table t4 (
 | 
						||
user_id varchar(50) not null,
 | 
						||
article_id varchar(20) not null,
 | 
						||
primary key  (user_id,article_id)
 | 
						||
);
 | 
						||
insert into t4 values("nicke", "imp");
 | 
						||
prepare stmt from
 | 
						||
'select distinct t1.partner_id
 | 
						||
from t1 left join t3 on t1.id = t3.id
 | 
						||
     left join t1 pp on pp.id = t3.preceeding_id
 | 
						||
where
 | 
						||
  exists (
 | 
						||
    select *
 | 
						||
    from t2 as pl_inner
 | 
						||
    where pl_inner.id = t1.id
 | 
						||
    and pl_inner.sequence <= (
 | 
						||
      select min(sequence) from t2 pl_seqnr
 | 
						||
      where pl_seqnr.id = t1.id
 | 
						||
    )
 | 
						||
    and exists (
 | 
						||
      select * from t4
 | 
						||
      where t4.article_id = pl_inner.article_id
 | 
						||
      and t4.user_id = ?
 | 
						||
    )
 | 
						||
  )
 | 
						||
  and t1.id = ?
 | 
						||
group by t1.id
 | 
						||
having count(pp.id) = 0';
 | 
						||
set @user_id = 'nicke';
 | 
						||
set @id = '2';
 | 
						||
execute stmt using @user_id, @id;
 | 
						||
partner_id
 | 
						||
execute stmt using @user_id, @id;
 | 
						||
partner_id
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1, t2, t3, t4;
 | 
						||
prepare stmt from 'select ?=?';
 | 
						||
set @a='CHRISTINE           ';
 | 
						||
set @b='CHRISTINE';
 | 
						||
execute stmt using @a, @b;
 | 
						||
?=?
 | 
						||
1
 | 
						||
execute stmt using @a, @b;
 | 
						||
?=?
 | 
						||
1
 | 
						||
set @a=1, @b=2;
 | 
						||
execute stmt using @a, @b;
 | 
						||
?=?
 | 
						||
0
 | 
						||
set @a='CHRISTINE           ';
 | 
						||
set @b='CHRISTINE';
 | 
						||
execute stmt using @a, @b;
 | 
						||
?=?
 | 
						||
1
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (a int);
 | 
						||
prepare stmt from "select ??";
 | 
						||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
 | 
						||
prepare stmt from "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
 | 
						||
prepare stmt from "select FROM t1 WHERE?=1";
 | 
						||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM t1 WHERE?=1' at line 1
 | 
						||
prepare stmt from "update t1 set a=a+?WHERE 1";
 | 
						||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?WHERE 1' at line 1
 | 
						||
select ?;
 | 
						||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
 | 
						||
select ??;
 | 
						||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??' at line 1
 | 
						||
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;
 | 
						||
prepare stmt from "select @@time_zone";
 | 
						||
execute stmt;
 | 
						||
@@time_zone
 | 
						||
SYSTEM
 | 
						||
set @@time_zone:='Japan';
 | 
						||
execute stmt;
 | 
						||
@@time_zone
 | 
						||
Japan
 | 
						||
prepare stmt from "select @@tx_isolation";
 | 
						||
execute stmt;
 | 
						||
@@tx_isolation
 | 
						||
REPEATABLE-READ
 | 
						||
set transaction isolation level read committed;
 | 
						||
execute stmt;
 | 
						||
@@tx_isolation
 | 
						||
READ-COMMITTED
 | 
						||
set transaction isolation level serializable;
 | 
						||
execute stmt;
 | 
						||
@@tx_isolation
 | 
						||
SERIALIZABLE
 | 
						||
set @@tx_isolation=default;
 | 
						||
execute stmt;
 | 
						||
@@tx_isolation
 | 
						||
REPEATABLE-READ
 | 
						||
deallocate prepare stmt;
 | 
						||
prepare stmt from "create temporary table t1 (letter enum('','a','b','c')
 | 
						||
not null)";
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
set names latin1;
 | 
						||
prepare stmt from "create table t1 (a enum('test') default 'test')
 | 
						||
 character set utf8";
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
set names default;
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (
 | 
						||
word_id mediumint(8) unsigned not null default '0',
 | 
						||
formatted varchar(20) not null default ''
 | 
						||
);
 | 
						||
insert into t1 values
 | 
						||
(80,'pendant'), (475,'pretendants'), (989,'tendances'),
 | 
						||
(1019,'cependant'),(1022,'abondance'),(1205,'independants'),
 | 
						||
(13,'lessiver'),(25,'lambiner'),(46,'situer'),(71,'terminer'),
 | 
						||
(82,'decrocher');
 | 
						||
select count(*) from t1 where formatted like '%NDAN%';
 | 
						||
count(*)
 | 
						||
6
 | 
						||
select count(*) from t1 where formatted like '%ER';
 | 
						||
count(*)
 | 
						||
5
 | 
						||
prepare stmt from "select count(*) from t1 where formatted like ?";
 | 
						||
set @like="%NDAN%";
 | 
						||
execute stmt using @like;
 | 
						||
count(*)
 | 
						||
6
 | 
						||
set @like="%ER";
 | 
						||
execute stmt using @like;
 | 
						||
count(*)
 | 
						||
5
 | 
						||
set @like="%NDAN%";
 | 
						||
execute stmt using @like;
 | 
						||
count(*)
 | 
						||
6
 | 
						||
set @like="%ER";
 | 
						||
execute stmt using @like;
 | 
						||
count(*)
 | 
						||
5
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
prepare stmt from 'create table t1 (a varchar(10) character set utf8)';
 | 
						||
execute stmt;
 | 
						||
insert into t1 (a) values (repeat('a', 20));
 | 
						||
select length(a) from t1;
 | 
						||
length(a)
 | 
						||
10
 | 
						||
drop table t1;
 | 
						||
execute stmt;
 | 
						||
insert into t1 (a) values (repeat('a', 20));
 | 
						||
select length(a) from t1;
 | 
						||
length(a)
 | 
						||
10
 | 
						||
drop table t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
create table t1 (col1 integer, col2 integer);
 | 
						||
insert into t1 values(100,100),(101,101),(102,102),(103,103);
 | 
						||
prepare stmt from 'select col1, col2 from t1 where (col1, col2) in ((?,?))';
 | 
						||
set @a=100, @b=100;
 | 
						||
execute stmt using @a,@b;
 | 
						||
col1	col2
 | 
						||
100	100
 | 
						||
set @a=101, @b=101;
 | 
						||
execute stmt using @a,@b;
 | 
						||
col1	col2
 | 
						||
101	101
 | 
						||
set @a=102, @b=102;
 | 
						||
execute stmt using @a,@b;
 | 
						||
col1	col2
 | 
						||
102	102
 | 
						||
set @a=102, @b=103;
 | 
						||
execute stmt using @a,@b;
 | 
						||
col1	col2
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1;
 | 
						||
set @old_max_prepared_stmt_count= @@max_prepared_stmt_count;
 | 
						||
show variables like 'max_prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
max_prepared_stmt_count	16382
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
16382
 | 
						||
set global max_prepared_stmt_count=-1;
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
0
 | 
						||
set global max_prepared_stmt_count=10000000000000000;
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
1048576
 | 
						||
set global max_prepared_stmt_count=default;
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
16382
 | 
						||
set @@max_prepared_stmt_count=1;
 | 
						||
ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL
 | 
						||
set max_prepared_stmt_count=1;
 | 
						||
ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL
 | 
						||
set local max_prepared_stmt_count=1;
 | 
						||
ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL
 | 
						||
set global max_prepared_stmt_count=1;
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
1
 | 
						||
set global max_prepared_stmt_count=0;
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
0
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
prepare stmt from "select 1";
 | 
						||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0)
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
set global max_prepared_stmt_count=1;
 | 
						||
prepare stmt from "select 1";
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	1
 | 
						||
prepare stmt1 from "select 1";
 | 
						||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 1)
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	1
 | 
						||
deallocate prepare stmt;
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
prepare stmt from "select 1";
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	1
 | 
						||
prepare stmt from "select 2";
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	1
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	1
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
1
 | 
						||
set global max_prepared_stmt_count=0;
 | 
						||
prepare stmt from "select 1";
 | 
						||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0)
 | 
						||
execute stmt;
 | 
						||
ERROR HY000: Unknown prepared statement handler (stmt) given to EXECUTE
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
prepare stmt from "select 1";
 | 
						||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0)
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
set global max_prepared_stmt_count=3;
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
3
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	0
 | 
						||
prepare stmt from "select 1";
 | 
						||
prepare stmt from "select 2";
 | 
						||
prepare stmt1 from "select 3";
 | 
						||
prepare stmt2 from "select 4";
 | 
						||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 3)
 | 
						||
prepare stmt2 from "select 4";
 | 
						||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 3)
 | 
						||
select @@max_prepared_stmt_count;
 | 
						||
@@max_prepared_stmt_count
 | 
						||
3
 | 
						||
show status like 'prepared_stmt_count';
 | 
						||
Variable_name	Value
 | 
						||
Prepared_stmt_count	3
 | 
						||
deallocate prepare stmt;
 | 
						||
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;
 | 
						||
CREATE TABLE t1(
 | 
						||
ID int(10) unsigned NOT NULL auto_increment,
 | 
						||
Member_ID varchar(15) NOT NULL default '',
 | 
						||
Action varchar(12) NOT NULL,
 | 
						||
Action_Date datetime NOT NULL,
 | 
						||
Track varchar(15) default NULL,
 | 
						||
User varchar(12) default NULL,
 | 
						||
Date_Updated timestamp NOT NULL default CURRENT_TIMESTAMP on update
 | 
						||
CURRENT_TIMESTAMP,
 | 
						||
PRIMARY KEY (ID),
 | 
						||
KEY Action (Action),
 | 
						||
KEY Action_Date (Action_Date)
 | 
						||
);
 | 
						||
INSERT INTO t1(Member_ID, Action, Action_Date, Track) VALUES
 | 
						||
('111111', 'Disenrolled', '2006-03-01', 'CAD' ),
 | 
						||
('111111', 'Enrolled', '2006-03-01', 'CAD' ),
 | 
						||
('111111', 'Disenrolled', '2006-07-03', 'CAD' ),
 | 
						||
('222222', 'Enrolled', '2006-03-07', 'CAD' ),
 | 
						||
('222222', 'Enrolled', '2006-03-07', 'CHF' ),
 | 
						||
('222222', 'Disenrolled', '2006-08-02', 'CHF' ),
 | 
						||
('333333', 'Enrolled', '2006-03-01', 'CAD' ),
 | 
						||
('333333', 'Disenrolled', '2006-03-01', 'CAD' ),
 | 
						||
('444444', 'Enrolled', '2006-03-01', 'CAD' ),
 | 
						||
('555555', 'Disenrolled', '2006-03-01', 'CAD' ),
 | 
						||
('555555', 'Enrolled', '2006-07-21', 'CAD' ),
 | 
						||
('555555', 'Disenrolled', '2006-03-01', 'CHF' ),
 | 
						||
('666666', 'Enrolled', '2006-02-09', 'CAD' ),
 | 
						||
('666666', 'Enrolled', '2006-05-12', 'CHF' ),
 | 
						||
('666666', 'Disenrolled', '2006-06-01', 'CAD' );
 | 
						||
PREPARE STMT FROM
 | 
						||
"SELECT GROUP_CONCAT(Track SEPARATOR ', ') FROM t1
 | 
						||
  WHERE Member_ID=? AND Action='Enrolled' AND
 | 
						||
        (Track,Action_Date) IN (SELECT Track, MAX(Action_Date) FROM t1
 | 
						||
                                  WHERE Member_ID=?
 | 
						||
                                    GROUP BY Track 
 | 
						||
                                      HAVING Track>='CAD' AND
 | 
						||
                                             MAX(Action_Date)>'2006-03-01')";
 | 
						||
SET @id='111111';
 | 
						||
EXECUTE STMT USING @id,@id;
 | 
						||
GROUP_CONCAT(Track SEPARATOR ', ')
 | 
						||
NULL
 | 
						||
SET @id='222222';
 | 
						||
EXECUTE STMT USING @id,@id;
 | 
						||
GROUP_CONCAT(Track SEPARATOR ', ')
 | 
						||
CAD
 | 
						||
DEALLOCATE PREPARE STMT;
 | 
						||
DROP TABLE t1;
 | 
						||
DROP TABLE IF EXISTS t1;
 | 
						||
CREATE TABLE t1 (i INT, INDEX(i));
 | 
						||
INSERT INTO t1 VALUES (1);
 | 
						||
PREPARE stmt FROM "SELECT (COUNT(i) = 1), COUNT(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(COUNT(i) = 1)	COUNT(i)
 | 
						||
0	0
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(COUNT(i) = 1)	COUNT(i)
 | 
						||
1	1
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(COUNT(i) = 1)	COUNT(i)
 | 
						||
0	0
 | 
						||
PREPARE stmt FROM "SELECT (AVG(i) = 1), AVG(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(AVG(i) = 1)	AVG(i)
 | 
						||
NULL	NULL
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(AVG(i) = 1)	AVG(i)
 | 
						||
1	1.0000
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(AVG(i) = 1)	AVG(i)
 | 
						||
NULL	NULL
 | 
						||
PREPARE stmt FROM "SELECT (VARIANCE(i) = 1), VARIANCE(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(VARIANCE(i) = 1)	VARIANCE(i)
 | 
						||
NULL	NULL
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(VARIANCE(i) = 1)	VARIANCE(i)
 | 
						||
0	0.0000
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(VARIANCE(i) = 1)	VARIANCE(i)
 | 
						||
NULL	NULL
 | 
						||
PREPARE stmt FROM "SELECT (STDDEV(i) = 1), STDDEV(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(STDDEV(i) = 1)	STDDEV(i)
 | 
						||
NULL	NULL
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(STDDEV(i) = 1)	STDDEV(i)
 | 
						||
0	0.0000
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(STDDEV(i) = 1)	STDDEV(i)
 | 
						||
NULL	NULL
 | 
						||
PREPARE stmt FROM "SELECT (BIT_OR(i) = 1), BIT_OR(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_OR(i) = 1)	BIT_OR(i)
 | 
						||
0	0
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_OR(i) = 1)	BIT_OR(i)
 | 
						||
1	1
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_OR(i) = 1)	BIT_OR(i)
 | 
						||
0	0
 | 
						||
PREPARE stmt FROM "SELECT (BIT_AND(i) = 1), BIT_AND(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_AND(i) = 1)	BIT_AND(i)
 | 
						||
0	18446744073709551615
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_AND(i) = 1)	BIT_AND(i)
 | 
						||
1	1
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_AND(i) = 1)	BIT_AND(i)
 | 
						||
0	18446744073709551615
 | 
						||
PREPARE stmt FROM "SELECT (BIT_XOR(i) = 1), BIT_XOR(i) FROM t1 WHERE i = ?";
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_XOR(i) = 1)	BIT_XOR(i)
 | 
						||
0	0
 | 
						||
SET @a = 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_XOR(i) = 1)	BIT_XOR(i)
 | 
						||
1	1
 | 
						||
SET @a = 0;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
(BIT_XOR(i) = 1)	BIT_XOR(i)
 | 
						||
0	0
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
DROP TABLE t1;
 | 
						||
DROP TABLE IF EXISTS t1, t2;
 | 
						||
CREATE TABLE t1 (i INT);
 | 
						||
PREPARE st_19182
 | 
						||
FROM "CREATE TABLE t2 (i INT, j INT, KEY (i), KEY(j)) SELECT i FROM t1";
 | 
						||
EXECUTE st_19182;
 | 
						||
DESC t2;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
j	int(11)	YES	MUL	NULL	
 | 
						||
i	int(11)	YES	MUL	NULL	
 | 
						||
DROP TABLE t2;
 | 
						||
EXECUTE st_19182;
 | 
						||
DESC t2;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
j	int(11)	YES	MUL	NULL	
 | 
						||
i	int(11)	YES	MUL	NULL	
 | 
						||
DEALLOCATE PREPARE st_19182;
 | 
						||
DROP TABLE t2, t1;
 | 
						||
drop database if exists mysqltest;
 | 
						||
drop table if exists t1, t2;
 | 
						||
create database mysqltest character set utf8;
 | 
						||
prepare stmt1 from "create table mysqltest.t1 (c char(10))";
 | 
						||
prepare stmt2 from "create table mysqltest.t2 select 'test'";
 | 
						||
execute stmt1;
 | 
						||
execute stmt2;
 | 
						||
show create table mysqltest.t1;
 | 
						||
Table	Create Table
 | 
						||
t1	CREATE TABLE `t1` (
 | 
						||
  `c` char(10) default NULL
 | 
						||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 | 
						||
show create table mysqltest.t2;
 | 
						||
Table	Create Table
 | 
						||
t2	CREATE TABLE `t2` (
 | 
						||
  `test` varchar(4) character set latin1 NOT NULL default ''
 | 
						||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 | 
						||
drop table mysqltest.t1;
 | 
						||
drop table mysqltest.t2;
 | 
						||
alter database mysqltest character set latin1;
 | 
						||
execute stmt1;
 | 
						||
execute stmt2;
 | 
						||
show create table mysqltest.t1;
 | 
						||
Table	Create Table
 | 
						||
t1	CREATE TABLE `t1` (
 | 
						||
  `c` char(10) character set utf8 default NULL
 | 
						||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
 | 
						||
show create table mysqltest.t2;
 | 
						||
Table	Create Table
 | 
						||
t2	CREATE TABLE `t2` (
 | 
						||
  `test` varchar(4) NOT NULL default ''
 | 
						||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
 | 
						||
drop database mysqltest;
 | 
						||
deallocate prepare stmt1;
 | 
						||
deallocate prepare stmt2;
 | 
						||
execute stmt;
 | 
						||
show create table t1;
 | 
						||
drop table t1;
 | 
						||
execute stmt;
 | 
						||
show create table t1;
 | 
						||
drop 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;
 | 
						||
select row_count();
 | 
						||
row_count()
 | 
						||
1
 | 
						||
drop table t1;
 | 
						||
create table t1 (a int, b int);
 | 
						||
insert into t1 (a,b) values (2,8),(1,9),(3,7);
 | 
						||
prepare stmt from "select * from t1 order by ?";
 | 
						||
set @a=NULL;
 | 
						||
execute stmt using @a;
 | 
						||
a	b
 | 
						||
2	8
 | 
						||
1	9
 | 
						||
3	7
 | 
						||
set @a=1;
 | 
						||
execute stmt using @a;
 | 
						||
a	b
 | 
						||
1	9
 | 
						||
2	8
 | 
						||
3	7
 | 
						||
set @a=2;
 | 
						||
execute stmt using @a;
 | 
						||
a	b
 | 
						||
3	7
 | 
						||
2	8
 | 
						||
1	9
 | 
						||
deallocate prepare stmt;
 | 
						||
select * from t1 order by 1;
 | 
						||
a	b
 | 
						||
1	9
 | 
						||
2	8
 | 
						||
3	7
 | 
						||
prepare stmt from "select * from t1 order by ?+1";
 | 
						||
set @a=0;
 | 
						||
execute stmt using @a;
 | 
						||
a	b
 | 
						||
2	8
 | 
						||
1	9
 | 
						||
3	7
 | 
						||
set @a=1;
 | 
						||
execute stmt using @a;
 | 
						||
a	b
 | 
						||
2	8
 | 
						||
1	9
 | 
						||
3	7
 | 
						||
deallocate prepare stmt;
 | 
						||
select * from t1 order by 1+1;
 | 
						||
a	b
 | 
						||
2	8
 | 
						||
1	9
 | 
						||
3	7
 | 
						||
drop table t1;
 | 
						||
create table t1 (a int);
 | 
						||
create table t2 like t1;
 | 
						||
create table t3 like t2;
 | 
						||
prepare stmt from "repair table t1";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	repair	status	OK
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	repair	status	OK
 | 
						||
prepare stmt from "optimize table t1";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	optimize	status	OK
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	optimize	status	Table is already up to date
 | 
						||
prepare stmt from "analyze table t1";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	analyze	status	Table is already up to date
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	analyze	status	Table is already up to date
 | 
						||
prepare stmt from "repair table t1, t2, t3";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	repair	status	OK
 | 
						||
test.t2	repair	status	OK
 | 
						||
test.t3	repair	status	OK
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	repair	status	OK
 | 
						||
test.t2	repair	status	OK
 | 
						||
test.t3	repair	status	OK
 | 
						||
prepare stmt from "optimize table t1, t2, t3";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	optimize	status	OK
 | 
						||
test.t2	optimize	status	OK
 | 
						||
test.t3	optimize	status	OK
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	optimize	status	Table is already up to date
 | 
						||
test.t2	optimize	status	Table is already up to date
 | 
						||
test.t3	optimize	status	Table is already up to date
 | 
						||
prepare stmt from "analyze table t1, t2, t3";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	analyze	status	Table is already up to date
 | 
						||
test.t2	analyze	status	Table is already up to date
 | 
						||
test.t3	analyze	status	Table is already up to date
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	analyze	status	Table is already up to date
 | 
						||
test.t2	analyze	status	Table is already up to date
 | 
						||
test.t3	analyze	status	Table is already up to date
 | 
						||
prepare stmt from "repair table t1, t4, t3";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	repair	status	OK
 | 
						||
test.t4	repair	error	Table 'test.t4' doesn't exist
 | 
						||
test.t3	repair	status	OK
 | 
						||
Warnings:
 | 
						||
Error	1146	Table 'test.t4' doesn't exist
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	repair	status	OK
 | 
						||
test.t4	repair	error	Table 'test.t4' doesn't exist
 | 
						||
test.t3	repair	status	OK
 | 
						||
Warnings:
 | 
						||
Error	1146	Table 'test.t4' doesn't exist
 | 
						||
prepare stmt from "optimize table t1, t3, t4";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	optimize	status	OK
 | 
						||
test.t3	optimize	status	OK
 | 
						||
test.t4	optimize	error	Table 'test.t4' doesn't exist
 | 
						||
Warnings:
 | 
						||
Error	1146	Table 'test.t4' doesn't exist
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t1	optimize	status	Table is already up to date
 | 
						||
test.t3	optimize	status	Table is already up to date
 | 
						||
test.t4	optimize	error	Table 'test.t4' doesn't exist
 | 
						||
Warnings:
 | 
						||
Error	1146	Table 'test.t4' doesn't exist
 | 
						||
prepare stmt from "analyze table t4, t1";
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t4	analyze	error	Table 'test.t4' doesn't exist
 | 
						||
test.t1	analyze	status	Table is already up to date
 | 
						||
Warnings:
 | 
						||
Error	1146	Table 'test.t4' doesn't exist
 | 
						||
execute stmt;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
test.t4	analyze	error	Table 'test.t4' doesn't exist
 | 
						||
test.t1	analyze	status	Table is already up to date
 | 
						||
Warnings:
 | 
						||
Error	1146	Table 'test.t4' doesn't exist
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1, t2, t3;
 | 
						||
create database mysqltest_long_database_name_to_thrash_heap;
 | 
						||
use test;
 | 
						||
create table t1 (i int);
 | 
						||
prepare stmt from "alter table test.t1 rename t1";
 | 
						||
use mysqltest_long_database_name_to_thrash_heap;
 | 
						||
execute stmt;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
 | 
						||
prepare stmt from "alter table test.t1 rename t1";
 | 
						||
use test;
 | 
						||
execute stmt;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_test (t1)
 | 
						||
use mysqltest_long_database_name_to_thrash_heap;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
 | 
						||
t1
 | 
						||
deallocate prepare stmt;
 | 
						||
use mysqltest_long_database_name_to_thrash_heap;
 | 
						||
prepare stmt_create from "create table t1 (i int)";
 | 
						||
prepare stmt_insert from "insert into t1 (i) values (1)";
 | 
						||
prepare stmt_update from "update t1 set i=2";
 | 
						||
prepare stmt_delete from "delete from t1 where i=2";
 | 
						||
prepare stmt_select from "select * from t1";
 | 
						||
prepare stmt_alter from "alter table t1 add column (b int)";
 | 
						||
prepare stmt_alter1 from "alter table t1 drop column b";
 | 
						||
prepare stmt_analyze from "analyze table t1";
 | 
						||
prepare stmt_optimize from "optimize table t1";
 | 
						||
prepare stmt_show from "show tables like 't1'";
 | 
						||
prepare stmt_truncate from "truncate table t1";
 | 
						||
prepare stmt_drop from "drop table t1";
 | 
						||
drop table t1;
 | 
						||
use test;
 | 
						||
execute stmt_create;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_test (t1)
 | 
						||
use mysqltest_long_database_name_to_thrash_heap;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
 | 
						||
t1
 | 
						||
use test;
 | 
						||
execute stmt_insert;
 | 
						||
select * from mysqltest_long_database_name_to_thrash_heap.t1;
 | 
						||
i
 | 
						||
1
 | 
						||
execute stmt_update;
 | 
						||
select * from mysqltest_long_database_name_to_thrash_heap.t1;
 | 
						||
i
 | 
						||
2
 | 
						||
execute stmt_delete;
 | 
						||
execute stmt_select;
 | 
						||
i
 | 
						||
execute stmt_alter;
 | 
						||
show columns from mysqltest_long_database_name_to_thrash_heap.t1;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
i	int(11)	YES		NULL	
 | 
						||
b	int(11)	YES		NULL	
 | 
						||
execute stmt_alter1;
 | 
						||
show columns from mysqltest_long_database_name_to_thrash_heap.t1;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
i	int(11)	YES		NULL	
 | 
						||
execute stmt_analyze;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
mysqltest_long_database_name_to_thrash_heap.t1	analyze	status	Table is already up to date
 | 
						||
execute stmt_optimize;
 | 
						||
Table	Op	Msg_type	Msg_text
 | 
						||
mysqltest_long_database_name_to_thrash_heap.t1	optimize	status	Table is already up to date
 | 
						||
execute stmt_show;
 | 
						||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
 | 
						||
t1
 | 
						||
execute stmt_truncate;
 | 
						||
execute stmt_drop;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_test (t1)
 | 
						||
use mysqltest_long_database_name_to_thrash_heap;
 | 
						||
show tables like 't1';
 | 
						||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
 | 
						||
drop database mysqltest_long_database_name_to_thrash_heap;
 | 
						||
prepare stmt_create from "create table t1 (i int)";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_insert from "insert into t1 (i) values (1)";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_update from "update t1 set i=2";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_delete from "delete from t1 where i=2";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_select from "select * from t1";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_alter from "alter table t1 add column (b int)";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_alter1 from "alter table t1 drop column b";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_analyze from "analyze table t1";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_optimize from "optimize table t1";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_show from "show tables like 't1'";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_truncate from "truncate table t1";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
prepare stmt_drop from "drop table t1";
 | 
						||
ERROR 3D000: No database selected
 | 
						||
create temporary table t1 (i int);
 | 
						||
ERROR 3D000: No database selected
 | 
						||
use test;
 | 
						||
DROP TABLE IF EXISTS t1, t2, t3;
 | 
						||
CREATE TABLE t1 (i BIGINT, j BIGINT);
 | 
						||
CREATE TABLE t2 (i BIGINT);
 | 
						||
CREATE TABLE t3 (i BIGINT, j BIGINT);
 | 
						||
PREPARE stmt FROM "SELECT * FROM t1 JOIN t2 ON (t2.i = t1.i)
 | 
						||
                   LEFT JOIN t3 ON ((t3.i, t3.j) = (t1.i, t1.j))
 | 
						||
                   WHERE t1.i = ?";
 | 
						||
SET @a= 1;
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
i	j	i	i	j
 | 
						||
EXECUTE stmt USING @a;
 | 
						||
i	j	i	i	j
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
DROP TABLE IF EXISTS t1, t2, t3;
 | 
						||
DROP TABLE IF EXISTS t1, t2;
 | 
						||
CREATE TABLE t1 (i INT KEY);
 | 
						||
CREATE TABLE t2 (i INT);
 | 
						||
INSERT INTO t1 VALUES (1), (2);
 | 
						||
INSERT INTO t2 VALUES (1);
 | 
						||
PREPARE stmt FROM "SELECT t2.i FROM t1 LEFT JOIN t2 ON t2.i = t1.i
 | 
						||
                   WHERE t1.i = ?";
 | 
						||
SET @arg= 1;
 | 
						||
EXECUTE stmt USING @arg;
 | 
						||
i
 | 
						||
1
 | 
						||
SET @arg= 2;
 | 
						||
EXECUTE stmt USING @arg;
 | 
						||
i
 | 
						||
NULL
 | 
						||
SET @arg= 1;
 | 
						||
EXECUTE stmt USING @arg;
 | 
						||
i
 | 
						||
1
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
DROP TABLE t1, t2;
 | 
						||
CREATE TABLE t1 (i INT);
 | 
						||
CREATE VIEW v1 AS SELECT * FROM t1;
 | 
						||
INSERT INTO t1 VALUES (1), (2);
 | 
						||
SELECT t1.i FROM t1 JOIN v1 ON t1.i = v1.i
 | 
						||
WHERE EXISTS (SELECT * FROM t1 WHERE v1.i = 1);
 | 
						||
i
 | 
						||
1
 | 
						||
PREPARE stmt FROM "SELECT t1.i FROM t1 JOIN v1 ON t1.i = v1.i
 | 
						||
WHERE EXISTS (SELECT * FROM t1 WHERE v1.i = 1)";
 | 
						||
EXECUTE stmt;
 | 
						||
i
 | 
						||
1
 | 
						||
EXECUTE stmt;
 | 
						||
i
 | 
						||
1
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
DROP VIEW v1;
 | 
						||
DROP TABLE t1;
 | 
						||
DROP PROCEDURE IF EXISTS p1;
 | 
						||
flush status;
 | 
						||
prepare sq from 'show status like "slow_queries"';
 | 
						||
execute sq;
 | 
						||
Variable_name	Value
 | 
						||
Slow_queries	0
 | 
						||
prepare no_index from 'select 1 from information_schema.tables limit 1';
 | 
						||
execute sq;
 | 
						||
Variable_name	Value
 | 
						||
Slow_queries	0
 | 
						||
execute no_index;
 | 
						||
1
 | 
						||
1
 | 
						||
execute sq;
 | 
						||
Variable_name	Value
 | 
						||
Slow_queries	1
 | 
						||
deallocate prepare no_index;
 | 
						||
deallocate prepare sq;
 | 
						||
CREATE TABLE t1 (a int);
 | 
						||
INSERT INTO t1 VALUES (1), (2);
 | 
						||
CREATE TABLE t2 (b int);
 | 
						||
INSERT INTO t2 VALUES (NULL);
 | 
						||
SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL';
 | 
						||
EXECUTE stmt;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2 limit ?) IS NULL';
 | 
						||
SET @arg=1;
 | 
						||
EXECUTE stmt USING @arg;
 | 
						||
a
 | 
						||
1
 | 
						||
2
 | 
						||
DEALLOCATE PREPARE stmt;
 | 
						||
DROP TABLE t1,t2;
 | 
						||
drop table if exists t1;
 | 
						||
create table t1 (s1 char(20));
 | 
						||
prepare stmt from "alter table t1 modify s1 int";
 | 
						||
execute stmt;
 | 
						||
execute stmt;
 | 
						||
drop table t1;
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table if exists t1;
 | 
						||
create table t1 (a int, b int);
 | 
						||
prepare s_6895 from "alter table t1 drop column b";
 | 
						||
execute s_6895;
 | 
						||
show columns from t1;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
a	int(11)	YES		NULL	
 | 
						||
drop table t1;
 | 
						||
create table t1 (a int, b int);
 | 
						||
execute s_6895;
 | 
						||
show columns from t1;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
a	int(11)	YES		NULL	
 | 
						||
drop table t1;
 | 
						||
create table t1 (a int, b int);
 | 
						||
execute s_6895;
 | 
						||
show columns from t1;
 | 
						||
Field	Type	Null	Key	Default	Extra
 | 
						||
a	int(11)	YES		NULL	
 | 
						||
deallocate prepare s_6895;
 | 
						||
drop table t1;
 | 
						||
create table t1 (i int primary key auto_increment) comment='comment for table t1';
 | 
						||
create table t2 (i int, j int, k int);
 | 
						||
prepare stmt from "alter table t1 auto_increment=100";
 | 
						||
execute stmt;
 | 
						||
show create table t1;
 | 
						||
Table	Create Table
 | 
						||
t1	CREATE TABLE `t1` (
 | 
						||
  `i` int(11) NOT NULL auto_increment,
 | 
						||
  PRIMARY KEY  (`i`)
 | 
						||
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 COMMENT='comment for table t1'
 | 
						||
flush tables;
 | 
						||
select * from t2;
 | 
						||
i	j	k
 | 
						||
execute stmt;
 | 
						||
show create table t1;
 | 
						||
Table	Create Table
 | 
						||
t1	CREATE TABLE `t1` (
 | 
						||
  `i` int(11) NOT NULL auto_increment,
 | 
						||
  PRIMARY KEY  (`i`)
 | 
						||
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 COMMENT='comment for table t1'
 | 
						||
deallocate prepare stmt;
 | 
						||
drop table t1, t2;
 | 
						||
drop tables if exists t1;
 | 
						||
create table t1 (id int primary key auto_increment, value varchar(10));
 | 
						||
insert into t1 (id, value) values (1, 'FIRST'), (2, 'SECOND'), (3, 'THIRD');
 | 
						||
prepare stmt from "insert into t1 (id, value) select * from (select 4 as i, 'FOURTH' as v) as y on duplicate key update v = 'DUP'";
 | 
						||
execute stmt;
 | 
						||
ERROR 42S22: Unknown column 'v' in 'field list'
 | 
						||
execute stmt;
 | 
						||
ERROR 42S22: Unknown column 'v' in 'field list'
 | 
						||
deallocate prepare stmt;
 | 
						||
prepare stmt from "insert into t1 (id, value) select * from (select 4 as id, 'FOURTH' as value) as y on duplicate key update y.value = 'DUP'";
 | 
						||
execute stmt;
 | 
						||
ERROR 42S22: Unknown column 'y.value' in 'field list'
 | 
						||
execute stmt;
 | 
						||
ERROR 42S22: Unknown column 'y.value' in 'field list'
 | 
						||
deallocate prepare stmt;
 | 
						||
drop tables t1;
 | 
						||
End of 5.0 tests.
 |