mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
4046 lines
118 KiB
Text
4046 lines
118 KiB
Text
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
|
||
drop table if exists t1,t2,t3,t4;
|
||
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 HY000: This command is not supported in the prepared statement protocol yet
|
||
prepare stmt2 from 'execute stmt1';
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
prepare stmt2 from 'deallocate prepare z';
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 @save_optimizer_switch=@@optimizer_switch;
|
||
set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off";
|
||
set @tmp_optimizer_switch=@@optimizer_switch;
|
||
set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
||
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 NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
4 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
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 NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
4 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
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 NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
4 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
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;
|
||
set optimizer_switch=@tmp_optimizer_switch;
|
||
drop tables t1,t2;
|
||
set @@optimizer_switch=@save_optimizer_switch;
|
||
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 '<MYSQLTEST_VARDIR>/tmp/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';
|
||
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1';
|
||
ERROR 42000: FUNCTION test.not_a_function 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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
|
||
REPEATABLE-READ
|
||
set transaction isolation level serializable;
|
||
execute stmt;
|
||
@@tx_isolation
|
||
REPEATABLE-READ
|
||
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;
|
||
Warnings:
|
||
Warning 1292 Truncated incorrect max_prepared_stmt_count value: '-1'
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
0
|
||
set global max_prepared_stmt_count=10000000000000000;
|
||
Warnings:
|
||
Warning 1292 Truncated incorrect max_prepared_stmt_count value: '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;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
3
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 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;
|
||
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) 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;
|
||
CREATE TABLE t1(a int);
|
||
INSERT INTO t1 VALUES (2), (3), (1);
|
||
PREPARE st1 FROM
|
||
'(SELECT a FROM t1) UNION (SELECT a+10 FROM t1) ORDER BY RAND()*0+a';
|
||
EXECUTE st1;
|
||
a
|
||
1
|
||
2
|
||
3
|
||
11
|
||
12
|
||
13
|
||
EXECUTE st1;
|
||
a
|
||
1
|
||
2
|
||
3
|
||
11
|
||
12
|
||
13
|
||
DEALLOCATE PREPARE st1;
|
||
DROP TABLE t1;
|
||
create table t1 (a int, b tinyint);
|
||
prepare st1 from 'update t1 set b= (str_to_date(a, a))';
|
||
execute st1;
|
||
deallocate prepare st1;
|
||
drop table t1;
|
||
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';
|
||
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1';
|
||
ERROR 42000: FUNCTION test.not_a_function 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(*)
|
||
42
|
||
execute my_stmt;
|
||
COUNT(*)
|
||
42
|
||
execute my_stmt;
|
||
COUNT(*)
|
||
42
|
||
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 MariaDB 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.t4 repair status Operation failed
|
||
test.t3 repair status OK
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
test.t4 repair Error Table 'test.t4' doesn't exist
|
||
test.t4 repair status Operation failed
|
||
test.t3 repair status OK
|
||
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
|
||
test.t4 optimize status Operation failed
|
||
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
|
||
test.t4 optimize status Operation failed
|
||
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.t4 analyze status Operation failed
|
||
test.t1 analyze status Table is already up to date
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t4 analyze Error Table 'test.t4' doesn't exist
|
||
test.t4 analyze status Operation failed
|
||
test.t1 analyze status Table is already up to date
|
||
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;
|
||
set @old_character_set_server= @@character_set_server;
|
||
set @@character_set_server= latin1;
|
||
prepare stmt from "create database mysqltest_1";
|
||
execute stmt;
|
||
show create database mysqltest_1;
|
||
Database Create Database
|
||
mysqltest_1 CREATE DATABASE `mysqltest_1` /*!40100 DEFAULT CHARACTER SET latin1 */
|
||
drop database mysqltest_1;
|
||
set @@character_set_server= utf8;
|
||
execute stmt;
|
||
show create database mysqltest_1;
|
||
Database Create Database
|
||
mysqltest_1 CREATE DATABASE `mysqltest_1` /*!40100 DEFAULT CHARACTER SET utf8 */
|
||
drop database mysqltest_1;
|
||
deallocate prepare stmt;
|
||
set @@character_set_server= @old_character_set_server;
|
||
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;
|
||
prepare stmt from "create table t1 select ?";
|
||
set @a=1.0;
|
||
execute stmt using @a;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`?` decimal(2,1) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
drop table if exists t1;
|
||
create table t1 (a bigint unsigned, b bigint(20) unsigned);
|
||
prepare stmt from "insert into t1 values (?,?)";
|
||
set @a= 9999999999999999;
|
||
set @b= 14632475938453979136;
|
||
insert into t1 values (@a, @b);
|
||
select * from t1 where a = @a and b = @b;
|
||
a b
|
||
9999999999999999 14632475938453979136
|
||
execute stmt using @a, @b;
|
||
select * from t1 where a = @a and b = @b;
|
||
a b
|
||
9999999999999999 14632475938453979136
|
||
9999999999999999 14632475938453979136
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
drop view if exists v1;
|
||
drop table if exists t1;
|
||
create table t1 (a int, b int);
|
||
insert into t1 values (1,1), (2,2), (3,3);
|
||
insert into t1 values (3,1), (1,2), (2,3);
|
||
prepare stmt from "create view v1 as select * from t1";
|
||
execute stmt;
|
||
drop table t1;
|
||
create table t1 (a int, b int);
|
||
drop view v1;
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` latin1 latin1_swedish_ci
|
||
drop view v1;
|
||
prepare stmt from "create view v1 (c,d) as select a,b from t1";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d` from `t1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
c d
|
||
drop view v1;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d` from `t1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
c d
|
||
drop view v1;
|
||
prepare stmt from "create view v1 (c) as select b+1 from t1";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select (`t1`.`b` + 1) AS `c` from `t1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
c
|
||
drop view v1;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select (`t1`.`b` + 1) AS `c` from `t1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
c
|
||
drop view v1;
|
||
prepare stmt from "create view v1 (c,d,e,f) as select a,b,a in (select a+2 from t1), a = all (select a from t1) from t1";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d`,`t1`.`a` in (select (`t1`.`a` + 2) from `t1`) AS `e`,`t1`.`a` = all (select `t1`.`a` from `t1`) AS `f` from `t1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
c d e f
|
||
drop view v1;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d`,`t1`.`a` in (select (`t1`.`a` + 2) from `t1`) AS `e`,`t1`.`a` = all (select `t1`.`a` from `t1`) AS `f` from `t1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
c d e f
|
||
drop view v1;
|
||
prepare stmt from "create or replace view v1 as select 1";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
1
|
||
1
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1` latin1 latin1_swedish_ci
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
1
|
||
1
|
||
drop view v1;
|
||
prepare stmt from "create view v1 as select 1, 1";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`,1 AS `My_exp_1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
1 My_exp_1
|
||
1 1
|
||
drop view v1;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`,1 AS `My_exp_1` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
1 My_exp_1
|
||
1 1
|
||
drop view v1;
|
||
prepare stmt from "create view v1 (x) as select a from t1 where a > 1";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `x` from `t1` where (`t1`.`a` > 1) latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
x
|
||
drop view v1;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `x` from `t1` where (`t1`.`a` > 1) latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
x
|
||
drop view v1;
|
||
prepare stmt from "create view v1 as select * from `t1` `b`";
|
||
execute stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `b`.`a` AS `a`,`b`.`b` AS `b` from `t1` `b` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
a b
|
||
drop view v1;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
show create view v1;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `b`.`a` AS `a`,`b`.`b` AS `b` from `t1` `b` latin1 latin1_swedish_ci
|
||
select * from v1;
|
||
a b
|
||
drop view v1;
|
||
prepare stmt from "create view v1 (a,b,c) as select * from t1";
|
||
execute stmt;
|
||
ERROR HY000: View's SELECT and view's field list have different column counts
|
||
execute stmt;
|
||
ERROR HY000: View's SELECT and view's field list have different column counts
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
create temporary table t1 (a int, b int);
|
||
prepare stmt from "create view v1 as select * from t1";
|
||
execute stmt;
|
||
ERROR HY000: View's SELECT refers to a temporary table 't1'
|
||
execute stmt;
|
||
ERROR HY000: View's SELECT refers to a temporary table 't1'
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
prepare stmt from "create view v1 as select * from t1";
|
||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||
prepare stmt from "create view v1 as select * from `t1` `b`";
|
||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||
prepare stmt from "select ?";
|
||
set @arg= 123456789.987654321;
|
||
select @arg;
|
||
@arg
|
||
123456789.987654321
|
||
execute stmt using @arg;
|
||
?
|
||
123456789.987654321
|
||
set @arg= "string";
|
||
select @arg;
|
||
@arg
|
||
string
|
||
execute stmt using @arg;
|
||
?
|
||
string
|
||
set @arg= 123456;
|
||
select @arg;
|
||
@arg
|
||
123456
|
||
execute stmt using @arg;
|
||
?
|
||
123456
|
||
set @arg= cast(-12345.54321 as decimal(20, 10));
|
||
select @arg;
|
||
@arg
|
||
-12345.5432100000
|
||
execute stmt using @arg;
|
||
?
|
||
-12345.5432100000
|
||
deallocate prepare stmt;
|
||
#
|
||
# Bug#48508: Crash on prepared statement re-execution.
|
||
#
|
||
create table t1(b int);
|
||
insert into t1 values (0);
|
||
create view v1 AS select 1 as a from t1 where b;
|
||
prepare stmt from "select * from v1 where a";
|
||
execute stmt;
|
||
a
|
||
execute stmt;
|
||
a
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
drop view v1;
|
||
create table t1(a bigint);
|
||
create table t2(b tinyint);
|
||
insert into t2 values (null);
|
||
prepare stmt from "select 1 from t1 join t2 on a xor b where b > 1 and a =1";
|
||
execute stmt;
|
||
1
|
||
execute stmt;
|
||
1
|
||
deallocate prepare stmt;
|
||
drop table t1,t2;
|
||
#
|
||
#
|
||
# Bug #49570: Assertion failed: !(order->used & map)
|
||
# on re-execution of prepared statement
|
||
#
|
||
CREATE TABLE t1(a INT PRIMARY KEY);
|
||
INSERT INTO t1 VALUES(0), (1);
|
||
PREPARE stmt FROM
|
||
"SELECT 1 FROM t1 JOIN t1 t2 USING(a) GROUP BY t2.a, t1.a";
|
||
EXECUTE stmt;
|
||
1
|
||
1
|
||
1
|
||
EXECUTE stmt;
|
||
1
|
||
1
|
||
1
|
||
EXECUTE stmt;
|
||
1
|
||
1
|
||
1
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1;
|
||
End of 5.0 tests.
|
||
create procedure proc_1() reset query cache;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int deterministic begin reset query cache; return 1; end|
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
create function func_1() returns int deterministic begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "reset query cache";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() reset master;
|
||
create function func_1() returns int begin reset master; return 1; end|
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "reset master";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() reset slave;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin reset slave; return 1; end|
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "reset slave";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1(a integer) kill a;
|
||
call proc_1(0);
|
||
ERROR HY000: Unknown thread id: 0
|
||
call proc_1(0);
|
||
ERROR HY000: Unknown thread id: 0
|
||
call proc_1(0);
|
||
ERROR HY000: Unknown thread id: 0
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin kill 0; return 1; end|
|
||
select func_1() from dual;
|
||
ERROR HY000: Unknown thread id: 0
|
||
select func_1() from dual;
|
||
ERROR HY000: Unknown thread id: 0
|
||
select func_1() from dual;
|
||
ERROR HY000: Unknown thread id: 0
|
||
drop function func_1;
|
||
prepare abc from "kill 0";
|
||
execute abc;
|
||
ERROR HY000: Unknown thread id: 0
|
||
execute abc;
|
||
ERROR HY000: Unknown thread id: 0
|
||
execute abc;
|
||
ERROR HY000: Unknown thread id: 0
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush hosts;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush hosts; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush hosts";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush privileges;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush privileges; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush privileges";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush tables with read lock;
|
||
call proc_1();
|
||
unlock tables;
|
||
call proc_1();
|
||
unlock tables;
|
||
call proc_1();
|
||
unlock tables;
|
||
create function func_1() returns int begin flush tables with read lock; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush tables with read lock";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
unlock tables;
|
||
create procedure proc_1() flush tables;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush tables; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush tables";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush tables;
|
||
flush tables;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
call proc_1();
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
call proc_1();
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
call proc_1();
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
flush tables;
|
||
create function func_1() returns int begin flush tables; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
flush tables;
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
prepare abc from "flush tables";
|
||
execute abc;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
execute abc;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
execute abc;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 0 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql user 0 0
|
||
mysql general_log 0 0
|
||
mysql host 0 0
|
||
flush tables;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush logs;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush logs; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush logs";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush status;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush status; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush status";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush slave;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush slave; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush slave";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush master;
|
||
create function func_1() returns int begin flush master; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush master";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush des_key_file;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush des_key_file; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush des_key_file";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush user_resources;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush user_resources; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush user_resources";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() start slave;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin start slave; return 1; end|
|
||
drop function func_1;
|
||
prepare abc from "start slave";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() stop slave;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin stop slave; return 1; end|
|
||
drop function func_1;
|
||
prepare abc from "stop slave";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show binlog events;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show binlog events; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show binlog events";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show slave status;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show slave status; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show slave status";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show master status;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show master status; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show master status";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show master logs;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show master logs; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show master logs";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show events;
|
||
call proc_1();
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
call proc_1();
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
call proc_1();
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show events; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show events";
|
||
execute abc;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
execute abc;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
execute abc;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
deallocate prepare abc;
|
||
drop procedure if exists a;
|
||
create procedure a() select 42;
|
||
create procedure proc_1(a char(2)) show create procedure a;
|
||
call proc_1("bb");
|
||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
call proc_1("bb");
|
||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
call proc_1("bb");
|
||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create procedure a; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create procedure a";
|
||
execute abc;
|
||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
execute abc;
|
||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
execute abc;
|
||
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
deallocate prepare abc;
|
||
drop procedure a;
|
||
drop function if exists a;
|
||
create function a() returns int return 42+13;
|
||
create procedure proc_1(a char(2)) show create function a;
|
||
call proc_1("bb");
|
||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
call proc_1("bb");
|
||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
call proc_1("bb");
|
||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create function a; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create function a";
|
||
execute abc;
|
||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
execute abc;
|
||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
execute abc;
|
||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13 latin1 latin1_swedish_ci latin1_swedish_ci
|
||
deallocate prepare abc;
|
||
drop function a;
|
||
drop table if exists tab1;
|
||
create table tab1(a int, b char(1), primary key(a,b));
|
||
create procedure proc_1() show create table tab1;
|
||
call proc_1();
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
call proc_1();
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
call proc_1();
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create table tab1; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create table tab1";
|
||
execute abc;
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
execute abc;
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
execute abc;
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
deallocate prepare abc;
|
||
drop table tab1;
|
||
drop view if exists v1;
|
||
drop table if exists t1;
|
||
create table t1(a int, b char(5));
|
||
insert into t1 values (1, "one"), (1, "edno"), (2, "two"), (2, "dve");
|
||
create view v1 as
|
||
(select a, count(*) from t1 group by a)
|
||
union all
|
||
(select b, count(*) from t1 group by b);
|
||
create procedure proc_1() show create view v1;
|
||
call proc_1();
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`) latin1 latin1_swedish_ci
|
||
call proc_1();
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`) latin1 latin1_swedish_ci
|
||
call proc_1();
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`) latin1 latin1_swedish_ci
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create view v1; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create view v1";
|
||
execute abc;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`) latin1 latin1_swedish_ci
|
||
execute abc;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`) latin1 latin1_swedish_ci
|
||
execute abc;
|
||
View Create View character_set_client collation_connection
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`) latin1 latin1_swedish_ci
|
||
deallocate prepare abc;
|
||
drop view v1;
|
||
drop table t1;
|
||
create procedure proc_1() install plugin my_plug soname 'some_plugin.so';
|
||
call proc_1();
|
||
Got one of the listed errors
|
||
call proc_1();
|
||
Got one of the listed errors
|
||
call proc_1();
|
||
Got one of the listed errors
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin install plugin my_plug soname '/tmp/plugin'; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "install plugin my_plug soname 'some_plugin.so'";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() uninstall plugin my_plug;
|
||
call proc_1();
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
call proc_1();
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
call proc_1();
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin uninstall plugin my_plug; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "uninstall plugin my_plug";
|
||
execute abc;
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
execute abc;
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
execute abc;
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
deallocate prepare abc;
|
||
drop database if exists mysqltest_xyz;
|
||
create procedure proc_1() create database mysqltest_xyz;
|
||
call proc_1();
|
||
drop database if exists mysqltest_xyz;
|
||
call proc_1();
|
||
call proc_1();
|
||
ERROR HY000: Can't create database 'mysqltest_xyz'; database exists
|
||
drop database if exists mysqltest_xyz;
|
||
call proc_1();
|
||
drop database if exists mysqltest_xyz;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin create database mysqltest_xyz; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "create database mysqltest_xyz";
|
||
execute abc;
|
||
drop database if exists mysqltest_xyz;
|
||
execute abc;
|
||
execute abc;
|
||
ERROR HY000: Can't create database 'mysqltest_xyz'; database exists
|
||
drop database if exists mysqltest_xyz;
|
||
execute abc;
|
||
drop database if exists mysqltest_xyz;
|
||
deallocate prepare abc;
|
||
drop table if exists t1;
|
||
create table t1 (a int, b char(5));
|
||
insert into t1 values (1, "one"), (2, "two"), (3, "three");
|
||
create procedure proc_1() checksum table xyz;
|
||
call proc_1();
|
||
Table Checksum
|
||
test.xyz NULL
|
||
Warnings:
|
||
Error 1146 Table 'test.xyz' doesn't exist
|
||
call proc_1();
|
||
Table Checksum
|
||
test.xyz NULL
|
||
Warnings:
|
||
Error 1146 Table 'test.xyz' doesn't exist
|
||
call proc_1();
|
||
Table Checksum
|
||
test.xyz NULL
|
||
Warnings:
|
||
Error 1146 Table 'test.xyz' doesn't exist
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin checksum table t1; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "checksum table t1";
|
||
execute abc;
|
||
Table Checksum
|
||
test.t1 645809265
|
||
execute abc;
|
||
Table Checksum
|
||
test.t1 645809265
|
||
execute abc;
|
||
Table Checksum
|
||
test.t1 645809265
|
||
deallocate prepare abc;
|
||
create procedure proc_1() create user pstest_xyz@localhost;
|
||
call proc_1();
|
||
drop user pstest_xyz@localhost;
|
||
call proc_1();
|
||
call proc_1();
|
||
ERROR HY000: Operation CREATE USER failed for 'pstest_xyz'@'localhost'
|
||
drop user pstest_xyz@localhost;
|
||
call proc_1();
|
||
drop user pstest_xyz@localhost;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin create user pstest_xyz@localhost; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "create user pstest_xyz@localhost";
|
||
execute abc;
|
||
drop user pstest_xyz@localhost;
|
||
execute abc;
|
||
execute abc;
|
||
ERROR HY000: Operation CREATE USER failed for 'pstest_xyz'@'localhost'
|
||
drop user pstest_xyz@localhost;
|
||
execute abc;
|
||
drop user pstest_xyz@localhost;
|
||
deallocate prepare abc;
|
||
drop event if exists xyz;
|
||
create function func_1() returns int begin create event xyz on schedule at now() do select 123; return 1; end|
|
||
ERROR HY000: Recursion of EVENT DDL statements is forbidden when body is present
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "create event xyz on schedule at now() do select 123";
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
deallocate prepare abc;
|
||
ERROR HY000: Unknown prepared statement handler (abc) given to DEALLOCATE PREPARE
|
||
drop event if exists xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
create procedure proc_1() alter event xyz comment 'xyz';
|
||
call proc_1();
|
||
drop event xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
call proc_1();
|
||
drop event xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
call proc_1();
|
||
drop event xyz;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin alter event xyz comment 'xyz'; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
prepare abc from "alter event xyz comment 'xyz'";
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
deallocate prepare abc;
|
||
ERROR HY000: Unknown prepared statement handler (abc) given to DEALLOCATE PREPARE
|
||
drop event if exists xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
create procedure proc_1() drop event xyz;
|
||
call proc_1();
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
call proc_1();
|
||
call proc_1();
|
||
ERROR HY000: Unknown event 'xyz'
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin drop event xyz; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
prepare abc from "drop event xyz";
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
deallocate prepare abc;
|
||
ERROR HY000: Unknown prepared statement handler (abc) given to DEALLOCATE PREPARE
|
||
drop table if exists t1;
|
||
create table t1 (a int, b char(5)) engine=myisam;
|
||
insert into t1 values (1, "one"), (2, "two"), (3, "three");
|
||
SET GLOBAL new_cache.key_buffer_size=128*1024;
|
||
create procedure proc_1() cache index t1 in new_cache;
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
drop procedure proc_1;
|
||
SET GLOBAL second_cache.key_buffer_size=128*1024;
|
||
prepare abc from "cache index t1 in second_cache";
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
deallocate prepare abc;
|
||
drop table t1;
|
||
drop table if exists t1;
|
||
drop table if exists t2;
|
||
create table t1 (a int, b char(5)) engine=myisam;
|
||
insert into t1 values (1, "one"), (2, "two"), (3, "three");
|
||
create table t2 (a int, b char(5)) engine=myisam;
|
||
insert into t2 values (1, "one"), (2, "two"), (3, "three");
|
||
create procedure proc_1() load index into cache t1 ignore leaves;
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 preload_keys status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 preload_keys status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 preload_keys status OK
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin load index into cache t1 ignore leaves; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
prepare abc from "load index into cache t2 ignore leaves";
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t2 preload_keys status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t2 preload_keys status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t2 preload_keys status OK
|
||
deallocate prepare abc;
|
||
drop table t1, t2;
|
||
create procedure proc_1() show errors;
|
||
call proc_1();
|
||
Level Code Message
|
||
call proc_1();
|
||
Level Code Message
|
||
call proc_1();
|
||
Level Code Message
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show errors; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
prepare abc from "show errors";
|
||
deallocate prepare abc;
|
||
drop table if exists t1;
|
||
drop table if exists t2;
|
||
create procedure proc_1() show warnings;
|
||
drop table if exists t1;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
call proc_1();
|
||
Level Code Message
|
||
Note 1051 Unknown table 't1'
|
||
drop table if exists t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't2'
|
||
call proc_1();
|
||
Level Code Message
|
||
Note 1051 Unknown table 't2'
|
||
drop table if exists t1, t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
call proc_1();
|
||
Level Code Message
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show warnings; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
prepare abc from "show warnings";
|
||
drop table if exists t1;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
execute abc;
|
||
Level Code Message
|
||
Note 1051 Unknown table 't1'
|
||
drop table if exists t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't2'
|
||
execute abc;
|
||
Level Code Message
|
||
Note 1051 Unknown table 't2'
|
||
drop table if exists t1, t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
execute abc;
|
||
Level Code Message
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
deallocate prepare abc;
|
||
set @my_password="password";
|
||
set @my_data="clear text to encode";
|
||
prepare stmt1 from 'select decode(encode(?, ?), ?)';
|
||
execute stmt1 using @my_data, @my_password, @my_password;
|
||
decode(encode(?, ?), ?)
|
||
clear text to encode
|
||
set @my_data="more text to encode";
|
||
execute stmt1 using @my_data, @my_password, @my_password;
|
||
decode(encode(?, ?), ?)
|
||
more text to encode
|
||
set @my_password="new password";
|
||
execute stmt1 using @my_data, @my_password, @my_password;
|
||
decode(encode(?, ?), ?)
|
||
more text to encode
|
||
deallocate prepare stmt1;
|
||
set @to_format="123456789.123456789";
|
||
set @dec=0;
|
||
prepare stmt2 from 'select format(?, ?)';
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789
|
||
set @dec=4;
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789.1235
|
||
set @dec=6;
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789.123457
|
||
set @dec=2;
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789.12
|
||
set @to_format="100";
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
100.00
|
||
set @to_format="1000000";
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
1,000,000.00
|
||
set @to_format="10000";
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
10,000.00
|
||
deallocate prepare stmt2;
|
||
DROP TABLE IF EXISTS t1, t2;
|
||
CREATE TABLE t1 (i INT);
|
||
INSERT INTO t1 VALUES (1);
|
||
CREATE TABLE t2 (i INT);
|
||
INSERT INTO t2 VALUES (2);
|
||
LOCK TABLE t1 READ, t2 WRITE;
|
||
PREPARE stmt1 FROM "SELECT i FROM t1";
|
||
PREPARE stmt2 FROM "INSERT INTO t2 (i) VALUES (3)";
|
||
EXECUTE stmt1;
|
||
i
|
||
1
|
||
EXECUTE stmt2;
|
||
SELECT * FROM t2;
|
||
i
|
||
2
|
||
UNLOCK TABLES;
|
||
SELECT * FROM t2;
|
||
i
|
||
2
|
||
3
|
||
ALTER TABLE t1 ADD COLUMN j INT;
|
||
ALTER TABLE t2 ADD COLUMN j INT;
|
||
INSERT INTO t1 VALUES (4, 5);
|
||
INSERT INTO t2 VALUES (4, 5);
|
||
EXECUTE stmt1;
|
||
i
|
||
1
|
||
4
|
||
EXECUTE stmt2;
|
||
SELECT * FROM t2;
|
||
i j
|
||
2 NULL
|
||
3 NULL
|
||
4 5
|
||
3 NULL
|
||
DROP TABLE t1, t2;
|
||
drop table if exists t1;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
prepare stmt
|
||
from "create table t1 (c char(100) character set utf8, key (c(10)))";
|
||
execute stmt;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`c` char(100) CHARACTER SET utf8 DEFAULT NULL,
|
||
KEY `c` (`c`(10))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
execute stmt;
|
||
show create table t1;
|
||
Table Create Table
|
||
t1 CREATE TABLE `t1` (
|
||
`c` char(100) CHARACTER SET utf8 DEFAULT NULL,
|
||
KEY `c` (`c`(10))
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop table t1;
|
||
drop table if exists t1, t2;
|
||
create table t1 (a int, b int);
|
||
create table t2 like t1;
|
||
insert into t1 (a, b) values (1,1), (1,2), (1,3), (1,4), (1,5),
|
||
(2,2), (2,3), (2,1), (3,1), (4,1), (4,2), (4,3), (4,4), (4,5), (4,6);
|
||
insert into t2 select a, max(b) from t1 group by a;
|
||
prepare stmt from "delete from t2 where (select (select max(b) from t1 group
|
||
by a having a < 2) x from t1) > 10000";
|
||
delete from t2 where (select (select max(b) from t1 group
|
||
by a having a < 2) x from t1) > 10000;
|
||
ERROR 21000: Subquery returns more than 1 row
|
||
execute stmt;
|
||
ERROR 21000: Subquery returns more than 1 row
|
||
execute stmt;
|
||
ERROR 21000: Subquery returns more than 1 row
|
||
deallocate prepare stmt;
|
||
drop table t1, t2;
|
||
#
|
||
# Bug#27430 Crash in subquery code when in PS and table DDL changed
|
||
# after PREPARE
|
||
#
|
||
# This part of the test doesn't work in embedded server, this is
|
||
# why it's here. For the main test see ps_ddl*.test
|
||
|
||
drop table if exists t1;
|
||
create table t1 (a int);
|
||
prepare stmt from "show events where (1) in (select * from t1)";
|
||
execute stmt;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
drop table t1;
|
||
create table t1 (x int);
|
||
execute stmt;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
#
|
||
# Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
|
||
#
|
||
prepare encode from "select encode(?, ?) into @ciphertext";
|
||
prepare decode from "select decode(?, ?) into @plaintext";
|
||
set @str="abc", @key="cba";
|
||
execute encode using @str, @key;
|
||
execute decode using @ciphertext, @key;
|
||
select @plaintext;
|
||
@plaintext
|
||
abc
|
||
set @str="bcd", @key="dcb";
|
||
execute encode using @str, @key;
|
||
execute decode using @ciphertext, @key;
|
||
select @plaintext;
|
||
@plaintext
|
||
bcd
|
||
deallocate prepare encode;
|
||
deallocate prepare decode;
|
||
#
|
||
# Bug#52124 memory leaks like a sieve in datetime, timestamp, time, date fields + warnings
|
||
#
|
||
CREATE TABLE t1 (a DATETIME NOT NULL, b TINYINT);
|
||
INSERT INTO t1 VALUES (0, 0),(0, 0);
|
||
PREPARE stmt FROM "SELECT 1 FROM t1 WHERE
|
||
ROW(a, b) >= ROW('1', (SELECT 1 FROM t1 WHERE a > 1234))";
|
||
EXECUTE stmt;
|
||
1
|
||
EXECUTE stmt;
|
||
1
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1;
|
||
#
|
||
# Bug#54494 crash with explain extended and prepared statements
|
||
#
|
||
CREATE TABLE t1(a INT);
|
||
INSERT INTO t1 VALUES (1),(2);
|
||
SET @save_optimizer_switch=@@optimizer_switch;
|
||
SET optimizer_switch='outer_join_with_cache=off';
|
||
PREPARE stmt FROM 'EXPLAIN EXTENDED SELECT 1 FROM t1 RIGHT JOIN t1 t2 ON 1';
|
||
EXECUTE stmt;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00
|
||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||
Warnings:
|
||
Note 1003 select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
|
||
EXECUTE stmt;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00
|
||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||
Warnings:
|
||
Note 1003 select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
|
||
DEALLOCATE PREPARE stmt;
|
||
SET optimizer_switch=@save_optimizer_switch;
|
||
DROP TABLE t1;
|
||
#
|
||
# Bug#54488 crash when using explain and prepared statements with subqueries
|
||
#
|
||
CREATE TABLE t1(f1 INT);
|
||
INSERT INTO t1 VALUES (1),(1);
|
||
PREPARE stmt FROM 'EXPLAIN SELECT 1 FROM t1 WHERE (SELECT (SELECT 1 FROM t1 GROUP BY f1))';
|
||
EXECUTE stmt;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
|
||
EXECUTE stmt;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1;
|
||
|
||
End of 5.1 tests.
|
||
|
||
#
|
||
# WL#4435: Support OUT-parameters in prepared statements.
|
||
#
|
||
|
||
DROP PROCEDURE IF EXISTS p_string;
|
||
DROP PROCEDURE IF EXISTS p_double;
|
||
DROP PROCEDURE IF EXISTS p_int;
|
||
DROP PROCEDURE IF EXISTS p_decimal;
|
||
|
||
CREATE PROCEDURE p_string(
|
||
IN v0 INT,
|
||
OUT v1 CHAR(32),
|
||
IN v2 CHAR(32),
|
||
INOUT v3 CHAR(32))
|
||
BEGIN
|
||
SET v0 = -1;
|
||
SET v1 = 'test_v1';
|
||
SET v2 = 'n/a';
|
||
SET v3 = 'test_v3';
|
||
END|
|
||
|
||
CREATE PROCEDURE p_double(
|
||
IN v0 INT,
|
||
OUT v1 DOUBLE(4, 2),
|
||
IN v2 DOUBLE(4, 2),
|
||
INOUT v3 DOUBLE(4, 2))
|
||
BEGIN
|
||
SET v0 = -1;
|
||
SET v1 = 12.34;
|
||
SET v2 = 98.67;
|
||
SET v3 = 56.78;
|
||
END|
|
||
|
||
CREATE PROCEDURE p_int(
|
||
IN v0 CHAR(10),
|
||
OUT v1 INT,
|
||
IN v2 INT,
|
||
INOUT v3 INT)
|
||
BEGIN
|
||
SET v0 = 'n/a';
|
||
SET v1 = 1234;
|
||
SET v2 = 9876;
|
||
SET v3 = 5678;
|
||
END|
|
||
|
||
CREATE PROCEDURE p_decimal(
|
||
IN v0 INT,
|
||
OUT v1 DECIMAL(4, 2),
|
||
IN v2 DECIMAL(4, 2),
|
||
INOUT v3 DECIMAL(4, 2))
|
||
BEGIN
|
||
SET v0 = -1;
|
||
SET v1 = 12.34;
|
||
SET v2 = 98.67;
|
||
SET v3 = 56.78;
|
||
END|
|
||
|
||
PREPARE stmt_str FROM 'CALL p_string(?, ?, ?, ?)';
|
||
PREPARE stmt_dbl FROM 'CALL p_double(?, ?, ?, ?)';
|
||
PREPARE stmt_int FROM 'CALL p_int(?, ?, ?, ?)';
|
||
PREPARE stmt_dec FROM 'CALL p_decimal(?, ?, ?, ?)';
|
||
|
||
SET @x_str_1 = NULL;
|
||
SET @x_str_2 = NULL;
|
||
SET @x_str_3 = NULL;
|
||
SET @x_dbl_1 = NULL;
|
||
SET @x_dbl_2 = NULL;
|
||
SET @x_dbl_3 = NULL;
|
||
SET @x_int_1 = NULL;
|
||
SET @x_int_2 = NULL;
|
||
SET @x_int_3 = NULL;
|
||
SET @x_dec_1 = NULL;
|
||
SET @x_dec_2 = NULL;
|
||
SET @x_dec_3 = NULL;
|
||
|
||
-- Testing strings...
|
||
|
||
EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
|
||
SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
|
||
@x_int_1 @x_str_1 @x_str_2 @x_str_3
|
||
NULL test_v1 NULL test_v3
|
||
|
||
EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
|
||
SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
|
||
@x_int_1 @x_str_1 @x_str_2 @x_str_3
|
||
NULL test_v1 NULL test_v3
|
||
|
||
-- Testing doubles...
|
||
|
||
EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
|
||
SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
|
||
@x_int_1 @x_dbl_1 @x_dbl_2 @x_dbl_3
|
||
NULL 12.34 NULL 56.78
|
||
|
||
EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
|
||
SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
|
||
@x_int_1 @x_dbl_1 @x_dbl_2 @x_dbl_3
|
||
NULL 12.34 NULL 56.78
|
||
|
||
-- Testing ints...
|
||
|
||
EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
|
||
SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
|
||
@x_str_1 @x_int_1 @x_int_2 @x_int_3
|
||
test_v1 1234 NULL 5678
|
||
|
||
EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
|
||
SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
|
||
@x_str_1 @x_int_1 @x_int_2 @x_int_3
|
||
test_v1 1234 NULL 5678
|
||
|
||
-- Testing decs...
|
||
|
||
EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
|
||
SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
|
||
@x_int_1 @x_dec_1 @x_dec_2 @x_dec_3
|
||
1234 12.34 NULL 56.78
|
||
|
||
EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
|
||
SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
|
||
@x_int_1 @x_dec_1 @x_dec_2 @x_dec_3
|
||
1234 12.34 NULL 56.78
|
||
|
||
DEALLOCATE PREPARE stmt_str;
|
||
DEALLOCATE PREPARE stmt_dbl;
|
||
DEALLOCATE PREPARE stmt_int;
|
||
DEALLOCATE PREPARE stmt_dec;
|
||
|
||
DROP PROCEDURE p_string;
|
||
DROP PROCEDURE p_double;
|
||
DROP PROCEDURE p_int;
|
||
DROP PROCEDURE p_decimal;
|
||
|
||
DROP PROCEDURE IF EXISTS p1;
|
||
DROP PROCEDURE IF EXISTS p2;
|
||
|
||
CREATE PROCEDURE p1(OUT v1 CHAR(10))
|
||
SET v1 = 'test1';
|
||
|
||
CREATE PROCEDURE p2(OUT v2 CHAR(10))
|
||
BEGIN
|
||
SET @query = 'CALL p1(?)';
|
||
PREPARE stmt1 FROM @query;
|
||
EXECUTE stmt1 USING @u1;
|
||
DEALLOCATE PREPARE stmt1;
|
||
SET v2 = @u1;
|
||
END|
|
||
|
||
CALL p2(@a);
|
||
SELECT @a;
|
||
@a
|
||
test1
|
||
|
||
DROP PROCEDURE p1;
|
||
DROP PROCEDURE p2;
|
||
|
||
TINYINT
|
||
|
||
CREATE PROCEDURE p1(OUT v TINYINT)
|
||
SET v = 127;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 127;
|
||
@a @a = 127
|
||
127 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
SMALLINT
|
||
|
||
CREATE PROCEDURE p1(OUT v SMALLINT)
|
||
SET v = 32767;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 32767;
|
||
@a @a = 32767
|
||
32767 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
MEDIUMINT
|
||
|
||
CREATE PROCEDURE p1(OUT v MEDIUMINT)
|
||
SET v = 8388607;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 8388607;
|
||
@a @a = 8388607
|
||
8388607 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
INT
|
||
|
||
CREATE PROCEDURE p1(OUT v INT)
|
||
SET v = 2147483647;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 2147483647;
|
||
@a @a = 2147483647
|
||
2147483647 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
BIGINT
|
||
|
||
CREATE PROCEDURE p1(OUT v BIGINT)
|
||
SET v = 9223372036854775807;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 9223372036854775807;
|
||
@a @a = 9223372036854775807
|
||
9223372036854775807 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
BIT(11)
|
||
|
||
CREATE PROCEDURE p1(OUT v BIT(11))
|
||
SET v = b'10100100101';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = b'10100100101';
|
||
@a @a = b'10100100101'
|
||
1317 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
TIMESTAMP
|
||
|
||
CREATE PROCEDURE p1(OUT v TIMESTAMP)
|
||
SET v = '2007-11-18 15:01:02';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = '2007-11-18 15:01:02';
|
||
@a @a = '2007-11-18 15:01:02'
|
||
2007-11-18 15:01:02 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
DATETIME
|
||
|
||
CREATE PROCEDURE p1(OUT v DATETIME)
|
||
SET v = '1234-11-12 12:34:59';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = '1234-11-12 12:34:59';
|
||
@a @a = '1234-11-12 12:34:59'
|
||
1234-11-12 12:34:59 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
TIME
|
||
|
||
CREATE PROCEDURE p1(OUT v TIME)
|
||
SET v = '123:45:01';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = '123:45:01';
|
||
@a @a = '123:45:01'
|
||
123:45:01 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
DATE
|
||
|
||
CREATE PROCEDURE p1(OUT v DATE)
|
||
SET v = '1234-11-12';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = '1234-11-12';
|
||
@a @a = '1234-11-12'
|
||
1234-11-12 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
YEAR
|
||
|
||
CREATE PROCEDURE p1(OUT v YEAR)
|
||
SET v = 2010;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` bigint(20) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 2010;
|
||
@a @a = 2010
|
||
2010 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
FLOAT(7, 4)
|
||
|
||
CREATE PROCEDURE p1(OUT v FLOAT(7, 4))
|
||
SET v = 123.4567;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` double DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a - 123.4567 < 0.00001;
|
||
@a @a - 123.4567 < 0.00001
|
||
123.45670318603516 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
DOUBLE(8, 5)
|
||
|
||
CREATE PROCEDURE p1(OUT v DOUBLE(8, 5))
|
||
SET v = 123.45678;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` double DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a - 123.45678 < 0.000001;
|
||
@a @a - 123.45678 < 0.000001
|
||
123.45678 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
DECIMAL(9, 6)
|
||
|
||
CREATE PROCEDURE p1(OUT v DECIMAL(9, 6))
|
||
SET v = 123.456789;
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` decimal(65,30) DEFAULT NULL
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 123.456789;
|
||
@a @a = 123.456789
|
||
123.456789 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
CHAR(32)
|
||
|
||
CREATE PROCEDURE p1(OUT v CHAR(32))
|
||
SET v = REPEAT('a', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('a', 16);
|
||
@a @a = REPEAT('a', 16)
|
||
aaaaaaaaaaaaaaaa 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
VARCHAR(32)
|
||
|
||
CREATE PROCEDURE p1(OUT v VARCHAR(32))
|
||
SET v = REPEAT('b', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('b', 16);
|
||
@a @a = REPEAT('b', 16)
|
||
bbbbbbbbbbbbbbbb 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
TINYTEXT
|
||
|
||
CREATE PROCEDURE p1(OUT v TINYTEXT)
|
||
SET v = REPEAT('c', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('c', 16);
|
||
@a @a = REPEAT('c', 16)
|
||
cccccccccccccccc 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
TEXT
|
||
|
||
CREATE PROCEDURE p1(OUT v TEXT)
|
||
SET v = REPEAT('d', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('d', 16);
|
||
@a @a = REPEAT('d', 16)
|
||
dddddddddddddddd 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
MEDIUMTEXT
|
||
|
||
CREATE PROCEDURE p1(OUT v MEDIUMTEXT)
|
||
SET v = REPEAT('e', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('e', 16);
|
||
@a @a = REPEAT('e', 16)
|
||
eeeeeeeeeeeeeeee 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
LONGTEXT
|
||
|
||
CREATE PROCEDURE p1(OUT v LONGTEXT)
|
||
SET v = REPEAT('f', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('f', 16);
|
||
@a @a = REPEAT('f', 16)
|
||
ffffffffffffffff 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
BINARY(32)
|
||
|
||
CREATE PROCEDURE p1(OUT v BINARY(32))
|
||
SET v = REPEAT('g', 32);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('g', 32);
|
||
@a @a = REPEAT('g', 32)
|
||
gggggggggggggggggggggggggggggggg 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
VARBINARY(32)
|
||
|
||
CREATE PROCEDURE p1(OUT v VARBINARY(32))
|
||
SET v = REPEAT('h', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('h', 16);
|
||
@a @a = REPEAT('h', 16)
|
||
hhhhhhhhhhhhhhhh 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
TINYBLOB
|
||
|
||
CREATE PROCEDURE p1(OUT v TINYBLOB)
|
||
SET v = REPEAT('i', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('i', 16);
|
||
@a @a = REPEAT('i', 16)
|
||
iiiiiiiiiiiiiiii 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
BLOB
|
||
|
||
CREATE PROCEDURE p1(OUT v BLOB)
|
||
SET v = REPEAT('j', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('j', 16);
|
||
@a @a = REPEAT('j', 16)
|
||
jjjjjjjjjjjjjjjj 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
MEDIUMBLOB
|
||
|
||
CREATE PROCEDURE p1(OUT v MEDIUMBLOB)
|
||
SET v = REPEAT('k', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('k', 16);
|
||
@a @a = REPEAT('k', 16)
|
||
kkkkkkkkkkkkkkkk 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
LONGBLOB
|
||
|
||
CREATE PROCEDURE p1(OUT v LONGBLOB)
|
||
SET v = REPEAT('l', 16);
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = REPEAT('l', 16);
|
||
@a @a = REPEAT('l', 16)
|
||
llllllllllllllll 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
SET('aaa', 'bbb')
|
||
|
||
CREATE PROCEDURE p1(OUT v SET('aaa', 'bbb'))
|
||
SET v = 'aaa';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 'aaa';
|
||
@a @a = 'aaa'
|
||
aaa 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
ENUM('aaa', 'bbb')
|
||
|
||
CREATE PROCEDURE p1(OUT v ENUM('aaa', 'bbb'))
|
||
SET v = 'aaa';
|
||
PREPARE stmt1 FROM 'CALL p1(?)';
|
||
EXECUTE stmt1 USING @a;
|
||
CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
|
||
SHOW CREATE TABLE tmp1;
|
||
Table Create Table
|
||
tmp1 CREATE TEMPORARY TABLE `tmp1` (
|
||
`c1` longblob
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
SELECT @a, @a = 'aaa';
|
||
@a @a = 'aaa'
|
||
aaa 1
|
||
DROP TEMPORARY TABLE tmp1;
|
||
DROP PROCEDURE p1;
|
||
|
||
# End of WL#4435.
|
||
#
|
||
# WL#4284: Transactional DDL locking
|
||
#
|
||
DROP TABLE IF EXISTS t1;
|
||
CREATE TABLE t1 (a INT);
|
||
BEGIN;
|
||
SELECT * FROM t1;
|
||
a
|
||
# Test that preparing a CREATE TABLE does not take a exclusive metdata lock.
|
||
PREPARE stmt1 FROM "CREATE TABLE t1 AS SELECT 1";
|
||
EXECUTE stmt1;
|
||
ERROR 42S01: Table 't1' already exists
|
||
DEALLOCATE PREPARE stmt1;
|
||
DROP TABLE t1;
|
||
#
|
||
# WL#4284: Transactional DDL locking
|
||
#
|
||
# Test that metadata locks taken during prepare are released.
|
||
#
|
||
DROP TABLE IF EXISTS t1;
|
||
CREATE TABLE t1 (a INT);
|
||
BEGIN;
|
||
PREPARE stmt1 FROM "SELECT * FROM t1";
|
||
DROP TABLE t1;
|
||
|
||
#
|
||
# Bug#56115: invalid memory reads when PS selecting from
|
||
# information_schema tables
|
||
# Bug#58701: crash in Field::make_field, cursor-protocol
|
||
#
|
||
# NOTE: MTR should be run both with --ps-protocol and --cursor-protocol.
|
||
#
|
||
|
||
SELECT *
|
||
FROM (SELECT 1 UNION SELECT 2) t;
|
||
1
|
||
1
|
||
2
|
||
|
||
# Bug#13805127: Stored program cache produces wrong result in same THD
|
||
|
||
PREPARE s1 FROM
|
||
"
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2
|
||
";
|
||
|
||
SET @x = 1;
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
|
||
EXECUTE s1;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
|
||
SET @x = 2;
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
|
||
EXECUTE s1;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
|
||
SET @x = 1;
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
|
||
EXECUTE s1;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
DEALLOCATE PREPARE s1;
|
||
#
|
||
# End of 5.5 tests.
|
||
prepare stmt from "select date('2010-10-10') between '2010-09-09' and ?";
|
||
set @a='2010-11-11';
|
||
execute stmt using @a;
|
||
date('2010-10-10') between '2010-09-09' and ?
|
||
1
|
||
execute stmt using @a;
|
||
date('2010-10-10') between '2010-09-09' and ?
|
||
1
|
||
set @a='2010-08-08';
|
||
execute stmt using @a;
|
||
date('2010-10-10') between '2010-09-09' and ?
|
||
0
|
||
execute stmt using @a;
|
||
date('2010-10-10') between '2010-09-09' and ?
|
||
0
|
||
#
|
||
# Bug #892725: look-up is changed for a full scan when executing PS
|
||
#
|
||
create table t1 (a int primary key, b int);
|
||
insert into t1 values
|
||
(7,70), (3,40), (4,40), (8,70), (1,70), (9,50), (2,70);
|
||
prepare st from 'select * from t1 where a=8';
|
||
flush status;
|
||
execute st;
|
||
a b
|
||
8 70
|
||
show status like '%Handler_read%';
|
||
Variable_name Value
|
||
Handler_read_first 0
|
||
Handler_read_key 1
|
||
Handler_read_last 0
|
||
Handler_read_next 0
|
||
Handler_read_prev 0
|
||
Handler_read_rnd 0
|
||
Handler_read_rnd_deleted 0
|
||
Handler_read_rnd_next 0
|
||
flush status;
|
||
execute st;
|
||
a b
|
||
8 70
|
||
show status like '%Handler_read%';
|
||
Variable_name Value
|
||
Handler_read_first 0
|
||
Handler_read_key 1
|
||
Handler_read_last 0
|
||
Handler_read_next 0
|
||
Handler_read_prev 0
|
||
Handler_read_rnd 0
|
||
Handler_read_rnd_deleted 0
|
||
Handler_read_rnd_next 0
|
||
flush status;
|
||
select * from t1 use index() where a=3;
|
||
a b
|
||
3 40
|
||
show status like '%Handler_read%';
|
||
Variable_name Value
|
||
Handler_read_first 0
|
||
Handler_read_key 0
|
||
Handler_read_last 0
|
||
Handler_read_next 0
|
||
Handler_read_prev 0
|
||
Handler_read_rnd 0
|
||
Handler_read_rnd_deleted 0
|
||
Handler_read_rnd_next 8
|
||
flush status;
|
||
execute st;
|
||
a b
|
||
8 70
|
||
show status like '%Handler_read%';
|
||
Variable_name Value
|
||
Handler_read_first 0
|
||
Handler_read_key 1
|
||
Handler_read_last 0
|
||
Handler_read_next 0
|
||
Handler_read_prev 0
|
||
Handler_read_rnd 0
|
||
Handler_read_rnd_deleted 0
|
||
Handler_read_rnd_next 0
|
||
deallocate prepare st;
|
||
drop table t1;
|
||
#
|
||
# LP bug#993459 Execution of PS for a query with GROUP BY
|
||
# returns wrong result (see also mysql bug#13805127)
|
||
#
|
||
PREPARE s1 FROM
|
||
"
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2
|
||
";
|
||
|
||
SET @x = 1;
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:99345900:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 01:99345900:00 2 1
|
||
2012-03-01 02:00:00 3 1
|
||
|
||
EXECUTE s1;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
|
||
SET @x = 2;
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
|
||
EXECUTE s1;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
|
||
SET @x = 1;
|
||
SELECT c1, t2.c2, count(c3)
|
||
FROM
|
||
(
|
||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||
UNION
|
||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||
) AS t1,
|
||
(
|
||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||
UNION
|
||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||
) AS t2
|
||
WHERE t2.c2 = t1.c2
|
||
GROUP BY c1, c2;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
|
||
EXECUTE s1;
|
||
c1 c2 count(c3)
|
||
2012-03-01 01:00:00 2 1
|
||
2012-03-01 01:00:00 3 1
|
||
2012-03-01 02:00:00 3 1
|
||
DEALLOCATE PREPARE s1;
|