[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.219.245.127: ~ $
-- source include/not_embedded.inc
-- source include/have_log_bin.inc

call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); 
#
# SQL Syntax for Prepared Statements test
#
--disable_warnings
drop table if exists t1,t2,t3,t4;

# Avoid wrong warnings if mysql_client_test fails
drop database if exists client_test_db;
--enable_warnings

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');

# basic functionality
set @a=2;
prepare stmt1 from 'select * from t1 where a <= ?';
execute stmt1 using @a;
set @a=3;
execute stmt1 using @a;

# non-existant statement
--error 1243
deallocate prepare no_such_statement;

--error 1210
execute stmt1;

# Nesting ps commands is not allowed: 
--error ER_UNSUPPORTED_PS 
prepare stmt2 from 'prepare nested_stmt from "select 1"';

--error ER_UNSUPPORTED_PS 
prepare stmt2 from 'execute stmt1';

--error ER_UNSUPPORTED_PS 
prepare stmt2 from 'deallocate prepare z';

# PS insert 
prepare stmt3 from 'insert into t1 values (?,?)';
set @arg1=5, @arg2='five';
execute stmt3 using @arg1, @arg2;
select * from t1 where a>3;

# PS update 
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;

# PS create/delete
prepare stmt4 from 'create table t2 (a int)';
execute stmt4;
prepare stmt4 from 'drop table t2';
execute stmt4;

# Do something that will cause error
--error 1051
execute stmt4;

# placeholders in result field names.
prepare stmt5 from 'select ? + a from t1';
set @a=1;
execute stmt5 using @a;

execute stmt5 using @no_such_var;

set @nullvar=1;
set @nullvar=NULL;
execute stmt5 using @nullvar;

set @nullvar2=NULL;
execute stmt5 using @nullvar2;

# Check that multiple SQL statements are disabled inside PREPARE
--error 1064
prepare stmt6 from 'select 1; select2';

--error 1064
prepare stmt6 from 'insert into t1 values (5,"five"); select2';

# This shouldn't parse
--error 1064
explain prepare stmt6 from 'insert into t1 values (5,"five"); select2';

create table t2
(
  a int
);

insert into t2 values (0);

# parameter is NULL
set @arg00=NULL ;
prepare stmt1 from 'select 1 FROM t2 where a=?' ;
execute stmt1 using @arg00 ;

# prepare using variables:
--error 1064
prepare stmt1 from @nosuchvar;

set @ivar= 1234;
--error 1064
prepare stmt1 from @ivar;

set @fvar= 123.4567;
--error 1064
prepare stmt1 from @fvar;

drop table t1,t2;
deallocate prepare stmt3;
deallocate prepare stmt4;
deallocate prepare stmt5;

#
# Bug #4105: Server crash on attempt to prepare a statement with character
# set introducer
#
PREPARE stmt1 FROM "select _utf8 'A' collate utf8_bin = ?";
set @var='A';
EXECUTE stmt1 USING @var;
DEALLOCATE PREPARE stmt1;

#
# BUG#3486:  FOUND_ROWS() fails inside stored procedure [and prepared statement]
#
create table t1 (id int);
prepare stmt1 from "select FOUND_ROWS()";
select SQL_CALC_FOUND_ROWS * from t1;
# Expect 0
execute stmt1;
insert into t1 values (1);
select SQL_CALC_FOUND_ROWS * from t1;
# Expect 1
execute stmt1;
# Expect 0
execute stmt1;
deallocate prepare stmt1;
drop table t1;

#
# prepared EXPLAIN
#
create table t1 
(
  c1  tinyint, c2  smallint, c3  mediumint, c4  int,
  c5  integer, c6  bigint, c7  float, c8  double,
  c9  double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
  c13 date, c14 datetime, c15 timestamp, c16 time,
  c17 year, c18 bit, c19 bool, c20 char,
  c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
  c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
  c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
  c32 set('monday', 'tuesday', 'wednesday')
) engine = MYISAM ;
create table t2 like t1;

set @stmt= ' explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25 ' ;
prepare stmt1 from @stmt ;
execute stmt1 ;
execute stmt1 ;
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;
deallocate prepare stmt1;
drop tables t1,t2;

#
# parameters from variables (for field creation)
#
set @arg00=1;
prepare stmt1 from ' create table t1 (m int) as select 1 as m ' ;
execute stmt1 ;
select m from t1;
drop table t1;
prepare stmt1 from ' create table t1 (m int) as select ? as m ' ;
execute stmt1 using @arg00;
select m from t1;
deallocate prepare stmt1;
drop table t1;

#
# eq() for parameters
#
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;
select name from t1 where id=1 or id=6;
deallocate prepare stmt1;
drop table t1;

#
# SHOW TABLE STATUS test
#
create table t1 ( a int primary key, b varchar(30)) engine = MYISAM ;
prepare stmt1 from ' show table status from test like ''t1%'' ';
--replace_column 8 4294967295 12 # 13 # 14 #
execute stmt1;
--replace_column 8 4294967295 12 # 13 # 14 #
show table status from test like 't1%' ;
deallocate prepare stmt1 ;
drop table t1;

#
# Bug#4912 "mysqld crashs in case a statement is executed a second time":
# negation elimination should work once and not break prepared statements
# 

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;
execute stmt1;
deallocate prepare stmt1;
drop table t1;

#
# Bug#5034 "prepared "select 1 into @arg15", second execute crashes
# server".
# Check that descendands of select_result can be reused in prepared 
# statements or are correctly created and deleted on each execute
#

--let $outfile=$MYSQLTEST_VARDIR/tmp/f1.txt
--error 0,1
--remove_file $outfile

prepare stmt1 from "select 1 into @var";
execute stmt1;
execute stmt1;
prepare stmt1 from "create table t1 select 1 as i";
--disable_warnings ONCE
execute stmt1;
drop table t1;
--disable_warnings ONCE
execute stmt1;
prepare stmt1 from "insert into t1 select i from t1";
execute stmt1;
execute stmt1;
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
eval prepare stmt1 from "select * from t1 into outfile '$outfile'";
execute stmt1;
deallocate prepare stmt1;
drop table t1;

--remove_file $outfile

# 
# BUG#5242 "Prepared statement names are case sensitive"
#
prepare stmt1 from 'select 1';
prepare STMT1 from 'select 2';
execute sTmT1;
deallocate prepare StMt1;

--error 1243
deallocate prepare Stmt1;

# also check that statement names are in right charset.
set names utf8;
prepare `ü` from 'select 1234';
execute `ü` ;
set names latin1;
execute `�`;
deallocate prepare `�`;
set names default;


# 
# BUG#4368 "select * from t1 where a like ?" crashes server if a is in utf8
# and ? is in latin1
# Check that Item converting latin1 to utf8 (for LIKE function) is created
# in memory of prepared statement.
#

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;
execute stmt using @var;
deallocate prepare stmt;
drop table t1;

# 
# BUG#5510 "inserting Null in AutoIncrement primary key Column Fails" 
# (prepared statements) 
# The cause: misuse of internal MySQL 'Field' API.
# 

create table t1 (a bigint(20) not null primary key auto_increment);
insert into t1 (a) values (null);
select * from t1;
prepare stmt from "insert into t1 (a) values (?)";
set @var=null;
execute stmt using @var;
select * from t1;
drop table t1;
#
# check the same for timestamps
#
create table t1 (a timestamp not null);
prepare stmt from "insert into t1 (a) values (?)";
execute stmt using @var;
--disable_result_log ONCE
select * from t1;
deallocate prepare stmt;
drop table t1;

# 
# BUG#5688 "Upgraded 4.1.5 Server seg faults" # (prepared statements)
# The test case speaks for itself.
# Just another place where we used wrong memory root for Items created
# during statement prepare.
# 
prepare stmt from "select 'abc' like convert('abc' using utf8)";
execute stmt;
execute stmt;
deallocate prepare stmt;

# 
# BUG#5748 "Prepared statement with BETWEEN and bigint values crashes
# mysqld". Just another place where an item tree modification must be 
# rolled back.
# 
create table t1 ( a bigint );
prepare stmt from 'select a from t1 where a between ? and ?';
set @a=1;
execute stmt using @a, @a;
execute stmt using @a, @a;
execute stmt using @a, @a;
drop table t1;
deallocate prepare stmt;

#
# Bug #5987 subselect in bool function crashes server (prepared statements):
# don't overwrite transformed subselects with old arguments of a bool
# function.
#
create table t1 (a int);
prepare stmt from "select * from t1 where 1 > (1 in (SELECT * FROM t1))";
execute stmt;
execute stmt;
execute stmt;
drop table t1;
deallocate prepare stmt;

#
# Test case for Bug#6042 "constants propogation works only once (prepared
# statements): check that the query plan changes whenever we change
# placeholder value.
#
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;
--replace_column 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 -
execute stmt using @v;
set @v=0;
--replace_column 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 -
execute stmt using @v;
set @v=5;
--replace_column 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 -
execute stmt using @v;
drop table t1;
deallocate prepare stmt;

#
# A test case for Bug#5985 prepare stmt from "select rand(?)" crashes
# server. Check that Item_func_rand is prepared-statements friendly.
#
create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4);
set @precision=10000000000;
--replace_column 1 - 3 -
select rand(), 
       cast(rand(10)*@precision as unsigned integer) from t1;
prepare stmt from
"select rand(), 
        cast(rand(10)*@precision as unsigned integer),
        cast(rand(?)*@precision as unsigned integer) from t1";
set @var=1;
--replace_column 1 - 3 -
execute stmt using @var;
set @var=2;
--replace_column 1 -
execute stmt using @var;
set @var=3;
--replace_column 1 -
execute stmt using @var;
drop table t1;
deallocate prepare stmt;

#
# A test case for Bug#6050 "EXECUTE stmt reports ambiguous fieldnames with
# identical tables from different schemata"
# Check that field name resolving in prepared statements works OK.
#
create database mysqltest1;
create table t1 (a int);
create table mysqltest1.t1 (a int);
select * from t1, mysqltest1.t1;
prepare stmt from "select * from t1, mysqltest1.t1";
execute stmt;
execute stmt;
execute stmt;
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';
prepare stmt from
"select '1.1' as a, '1.2' as a UNION SELECT '2.1', '2.2'";
execute stmt;
execute stmt;
execute stmt;
deallocate prepare stmt;

#
# Test CREATE TABLE ... SELECT (Bug #6094)
#
create table t1 (a int); 
insert into t1 values (1),(2),(3);
create table t2 select * from t1;
--disable_warnings
prepare stmt FROM 'create table t2 select * from t1';
drop table t2;
execute stmt;
drop table t2;
execute stmt;
--error 1050
execute stmt;
drop table t2;
execute stmt;
--enable_warnings
drop table t1,t2;
deallocate prepare stmt;

#
# Bug#6088 "FOUND_ROWS returns wrong values for prepared statements when
# LIMIT is used"
# 
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;
select found_rows();
execute stmt;
select found_rows();
execute stmt;
select found_rows();
deallocate prepare stmt;
drop table t1;

#
# Bug#6047 "permission problem when executing mysql_stmt_execute with derived
# table"
#

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;

# 
# Bug#6297 "prepared statement, wrong handling of <parameter> IS NULL"
# Test that placeholders work with IS NULL/IS NOT NULL clauses. 
#
prepare stmt from "select ? is null, ? is not null, ?";
select @no_such_var is null, @no_such_var is not null, @no_such_var;
execute stmt using @no_such_var, @no_such_var, @no_such_var;
set @var='abc';
select @var is null, @var is not null, @var;
execute stmt using @var, @var, @var;
set @var=null;
select @var is null, @var is not null, @var;
execute stmt using @var, @var, @var;

# 
# Bug#6873 "PS, having with subquery, crash during execute"
# check that if we modify having subtree, we update JOIN->having pointer
#
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;
execute stmt;
execute stmt;
deallocate prepare stmt;
drop table t1, t2;

#
#
# Bug#19399 "Stored Procedures 'Lost Connection' when dropping/creating
#            tables"
# Check that multi-delete tables are also cleaned up before re-execution.
# 
--disable_warnings
drop table if exists t1;
create temporary table if not exists t1 (a1 int);
--enable_warnings
# exact delete syntax is essential
prepare stmt from "delete t1 from t1 where (cast(a1/3 as unsigned) * 3) = a1";
drop temporary table t1;
create temporary table if not exists t1 (a1 int);
# the server crashed on  the next statement without the fix
execute stmt;
drop temporary table t1;
create temporary table if not exists t1 (a1 int);
# the problem was in memory corruption: repeat the test just in case
execute stmt;
drop temporary table t1;
create temporary table if not exists t1 (a1 int);
execute stmt;
drop temporary table t1;
deallocate prepare stmt;

# Bug#6102 "Server crash with prepared statement and blank after
# function name"
# ensure that stored functions are cached when preparing a statement
# before we open tables
#
create table t1 (a varchar(20)); 
insert into t1 values ('foo'); 
prepare stmt FROM 'SELECT char_length (a) FROM t1'; 
-- error ER_SP_DOES_NOT_EXIST
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1'; 
drop table t1;

#
# Bug #6089: FOUND_ROWS returns wrong values when no table/view is used 
#

prepare stmt from "SELECT SQL_CALC_FOUND_ROWS 'foo' UNION SELECT 'bar' LIMIT 0";
execute stmt;
SELECT FOUND_ROWS();
execute stmt;                                                                   
SELECT FOUND_ROWS();                                                            
deallocate prepare stmt;

#
# Bug#9096 "select doesn't return all matched records if prepared statements
# is used"
# The bug was is bad co-operation of the optimizer's algorithm which determines
# which keys can be used to execute a query, constants propagation
# part of the optimizer and parameter markers used by prepared statements.

drop table if exists 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;

prepare stmt from
"select * from t1 where (c1=200887 and c2=200887) or c2=860";
execute stmt;
prepare stmt from
"select * from t1 where (c1=200887 and c2=?) or c2=?";
set @a=200887, @b=860;
# this query did not return all matching rows
execute stmt using @a, @b;
deallocate prepare stmt;

drop table t1;

#
# Bug#9777 - another occurrence of the problem stated in Bug#9096:
# we can not compare basic constants by their names, because a placeholder
# is a basic constant while his name is always '?'
#

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;

select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id);

deallocate prepare stmt;
drop table t1, t2;

#
# Bug#11060 "Server crashes on calling stored procedure with INSERT SELECT
# UNION SELECT" aka "Server crashes on re-execution of prepared INSERT ...
# SELECT with UNION".
#
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;
#
# Bug#11458 "Prepared statement with subselects return random data":
# drop PARAM_TABLE_BIT from the list of tables used by a subquery
#
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;
execute stmt using @user_id, @id;
deallocate prepare stmt;
drop table t1, t2, t3, t4;
#
# Bug#9379: make sure that Item::collation is reset when one sets
# a parameter marker from a string variable.
#
prepare stmt from 'select ?=?';
set @a='CHRISTINE           ';
set @b='CHRISTINE';
execute stmt using @a, @b;
execute stmt using @a, @b;
set @a=1, @b=2;
execute stmt using @a, @b;
set @a='CHRISTINE           ';
set @b='CHRISTINE';
execute stmt using @a, @b;
deallocate prepare stmt;
#
# Bug#11299 "prepared statement makes wrong SQL syntax in binlog which stops
# replication": check that errouneous queries with placeholders are not
# allowed
#
create table t1 (a int);
--error 1064
prepare stmt from "select ??";
--error 1064
prepare stmt from "select ?FROM t1";
--error 1064
prepare stmt from "select FROM t1 WHERE?=1";
--error 1064
prepare stmt from "update t1 set a=a+?WHERE 1";
--disable_ps_protocol
--error 1064
select ?;
--error 1064
select ??;
--error 1064
select ? from t1;
--enable_ps_protocol
drop table t1;
#
# Bug#9359 "Prepared statements take snapshot of system vars at PREPARE
# time"
#
prepare stmt from "select @@time_zone";
execute stmt;
set @@time_zone:='Japan';
execute stmt;
prepare stmt from "select @@tx_isolation";
execute stmt;
set transaction isolation level read committed;
execute stmt;
set transaction isolation level serializable;
execute stmt;
set @@tx_isolation=default;
execute stmt;
deallocate prepare stmt;

#
# Bug#14410 "Crash in Enum or Set type in CREATE TABLE and PS/SP"
#
# Part I. Make sure the typelib for ENUM is created in the statement memory
# root.
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;
# Part II. Make sure that when the default value is converted to UTF-8,
# the new item is # created in the statement memory root.
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;
# Cleanup
set names default;
deallocate prepare stmt;

#
# A test case for Bug#12734 "prepared statement may return incorrect result
# set for a select SQL request": test that canDoTurboBM is reset for each
# execute of a prepared statement.
#
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%';
select count(*) from t1 where formatted like '%ER';
prepare stmt from "select count(*) from t1 where formatted like ?";
set @like="%NDAN%";
execute stmt using @like;
set @like="%ER";
execute stmt using @like;
set @like="%NDAN%";
execute stmt using @like;
set @like="%ER";
execute stmt using @like;
deallocate prepare stmt;
drop table t1;

#
# Bug#13134 "Length of VARCHAR() utf8 column is increasing when table is
# recreated with PS/SP"
#

prepare stmt from 'create table t1 (a varchar(10) character set utf8)';
execute stmt;
--disable_warnings ONCE
insert into t1 (a) values (repeat('a', 20));
select length(a) from t1;
drop table t1;
execute stmt;
--disable_warnings ONCE
insert into t1 (a) values (repeat('a', 20));
# Check that the data is truncated to the same length
select length(a) from t1;
drop table t1;
deallocate prepare stmt;

#
# Bug#16248 "WHERE (col1,col2) IN ((?,?)) gives wrong results":
# check that ROW implementation is reexecution-friendly.
#
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;
set @a=101, @b=101;
execute stmt using @a,@b;
set @a=102, @b=102;
execute stmt using @a,@b;
set @a=102, @b=103;
execute stmt using @a,@b;
deallocate prepare stmt;
drop table t1;

#
# Bug#16365 Prepared Statements: DoS with too many open statements
# Check that the limit @@max_prpeared_stmt_count works.
#
# This is also the test for bug#23159 prepared_stmt_count should be
# status variable.
#
# Save the old value
set @old_max_prepared_stmt_count= @@max_prepared_stmt_count;
#
# Disable prepared statement protocol: in this test we set
# @@max_prepared_stmt_count to 0 or 1 and would like to test the limit
# manually.
#
--disable_ps_protocol
#
# A. Check that the new variables are present in SHOW VARIABLES and
# SHOW STATUS lists.
#
show variables like 'max_prepared_stmt_count';
show status like 'prepared_stmt_count';
#
# B. Check that the new system variable is selectable.
#
select @@max_prepared_stmt_count;
#
# C. Check that max_prepared_stmt_count is settable (global only).
#
set global max_prepared_stmt_count=-1;
select @@max_prepared_stmt_count;
set global max_prepared_stmt_count=10000000000000000;
select @@max_prepared_stmt_count;
set global max_prepared_stmt_count=default;
select @@max_prepared_stmt_count;
--error ER_GLOBAL_VARIABLE
set @@max_prepared_stmt_count=1;
--error ER_GLOBAL_VARIABLE
set max_prepared_stmt_count=1;
--error ER_GLOBAL_VARIABLE
set local max_prepared_stmt_count=1;
# set to a reasonable limit works
set global max_prepared_stmt_count=1;
select @@max_prepared_stmt_count;
#
# D. Check that the variables actually work.
#
set global max_prepared_stmt_count=0;
select @@max_prepared_stmt_count;
show status like 'prepared_stmt_count';
--error ER_MAX_PREPARED_STMT_COUNT_REACHED
prepare stmt from "select 1";
show status like 'prepared_stmt_count';
set global max_prepared_stmt_count=1;
prepare stmt from "select 1";
show status like 'prepared_stmt_count';
--error ER_MAX_PREPARED_STMT_COUNT_REACHED
prepare stmt1 from "select 1";
show status like 'prepared_stmt_count';
deallocate prepare stmt;
show status like 'prepared_stmt_count';
#
# E. Check that we can prepare a statement with the same name 
# successfully, without hitting the limit.
#
prepare stmt from "select 1";
show status like 'prepared_stmt_count';
prepare stmt from "select 2";
show status like 'prepared_stmt_count';
#
# F. We can set the max below the current count. In this case no new 
# statements should be allowed to prepare.
#
show status like 'prepared_stmt_count';
select @@max_prepared_stmt_count;
set global max_prepared_stmt_count=0;
--error ER_MAX_PREPARED_STMT_COUNT_REACHED
prepare stmt from "select 1";
# Result: the old statement is deallocated, the new is not created.
--error ER_UNKNOWN_STMT_HANDLER
execute stmt;
show status like 'prepared_stmt_count';
--error ER_MAX_PREPARED_STMT_COUNT_REACHED
prepare stmt from "select 1";
show status like 'prepared_stmt_count';
#
# G. Show that the variables are up to date even after a connection with all
# statements in it was terminated.
#
set global max_prepared_stmt_count=3;
select @@max_prepared_stmt_count;
show status like 'prepared_stmt_count';
prepare stmt from "select 1";

connect (con1,localhost,root,,);

# Switch to connection con1
connection con1;
let $con1_id=`SELECT CONNECTION_ID()`;

prepare stmt from "select 2";
prepare stmt1 from "select 3";
--error ER_MAX_PREPARED_STMT_COUNT_REACHED
prepare stmt2 from "select 4";
connection default;
--error ER_MAX_PREPARED_STMT_COUNT_REACHED 
prepare stmt2 from "select 4";
select @@max_prepared_stmt_count;
show status like 'prepared_stmt_count';

# Disconnect connection con1 and switch to default connection
disconnect con1;
connection default;

# Wait for the connection con1 to die
let $wait_condition=SELECT COUNT(*)=0 FROM information_schema.processlist WHERE id=$con1_id;
--source include/wait_condition.inc

deallocate prepare stmt;

select @@max_prepared_stmt_count;
show status like 'prepared_stmt_count';
#
# Restore the old value.
#
set global max_prepared_stmt_count= @old_max_prepared_stmt_count;
--enable_ps_protocol


#
# Bug#19399 "Stored Procedures 'Lost Connection' when dropping/creating
#            tables"
# Check that multi-delete tables are also cleaned up before re-execution.
# 
--disable_warnings
drop table if exists t1;
create temporary table if not exists t1 (a1 int);
--enable_warnings
# exact delete syntax is essential
prepare stmt from "delete t1 from t1 where (cast(a1/3 as unsigned) * 3) = a1";
drop temporary table t1;
create temporary table if not exists t1 (a1 int);
# the server crashed on  the next statement without the fix
execute stmt;
drop temporary table t1;
create temporary table if not exists t1 (a1 int);
# the problem was in memory corruption: repeat the test just in case
execute stmt;
drop temporary table t1;
create temporary table if not exists t1 (a1 int);
execute stmt;
drop temporary table t1;
deallocate prepare stmt;


#
# BUG#22085: Crash on the execution of a prepared statement that
#            uses an IN subquery with aggregate functions in HAVING 
#

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;
SET @id='222222';
EXECUTE STMT USING @id,@id;

DEALLOCATE PREPARE STMT;
DROP TABLE t1;

#
# BUG#21354: (COUNT(*) = 1) not working in SELECT inside prepared
# statement 
#
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

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;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

PREPARE stmt FROM "SELECT (AVG(i) = 1), AVG(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

PREPARE stmt FROM "SELECT (VARIANCE(i) = 1), VARIANCE(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

PREPARE stmt FROM "SELECT (STDDEV(i) = 1), STDDEV(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

PREPARE stmt FROM "SELECT (BIT_OR(i) = 1), BIT_OR(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

PREPARE stmt FROM "SELECT (BIT_AND(i) = 1), BIT_AND(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

PREPARE stmt FROM "SELECT (BIT_XOR(i) = 1), BIT_XOR(i) FROM t1 WHERE i = ?";
SET @a = 0;
EXECUTE stmt USING @a;
SET @a = 1;
EXECUTE stmt USING @a;
SET @a = 0;
EXECUTE stmt USING @a;

DEALLOCATE PREPARE stmt;
DROP TABLE t1;

#
# Bug#19182: CREATE TABLE bar (m INT) SELECT n FROM foo; doesn't work
# from stored procedure.
#
# The cause of a bug was that cached LEX::create_list was modified,
# and then together with LEX::key_list was reset.
#
--disable_warnings ONCE
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;

DROP TABLE t2;

# Check that on second execution we don't loose 'j' column and the keys
# on 'i' and 'j' columns.
EXECUTE st_19182;
DESC t2;

DEALLOCATE PREPARE st_19182;
DROP TABLE t2, t1;

#
# Bug #22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"
#
# Code which implemented CREATE/ALTER TABLE and CREATE DATABASE
# statement modified HA_CREATE_INFO structure in LEX, making these
# statements PS/SP-unsafe (their re-execution might have resulted
# in incorrect results).
#
--disable_warnings
drop database if exists mysqltest;
drop table if exists t1, t2;
--enable_warnings
# CREATE TABLE and CREATE TABLE ... SELECT
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;
--disable_warnings ONCE
execute stmt2;
show create table mysqltest.t1;
show create table mysqltest.t2;
drop table mysqltest.t1;
drop table mysqltest.t2;
alter database mysqltest character set latin1;
execute stmt1;
--disable_warnings ONCE
execute stmt2;
show create table mysqltest.t1;
show create table mysqltest.t2;
drop database mysqltest;
deallocate prepare stmt1;
deallocate prepare stmt2;
#
# CREATE TABLE with DATA DIRECTORY option
#
--disable_warnings
--disable_query_log ONCE
eval prepare stmt from "create table t1 (c char(10)) data directory='$MYSQLTEST_VARDIR/tmp'";
execute stmt;
#
# DATA DIRECTORY option does not always work: if the operating
# system does not support symlinks, have_symlinks option is automatically
# disabled.
# In this case DATA DIRECTORY is silently ignored when
# creating a table, and is not output by SHOW CREATE TABLE.
#
--disable_result_log ONCE
show create table t1;
drop table t1;
execute stmt;
--disable_result_log ONCE
show create table t1;
drop table t1;
deallocate prepare stmt;
#

#
# Bug #27937: crash on the second execution for prepared statement 
#             from UNION with ORDER BY an expression containing RAND()
#

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;
EXECUTE st1;

DEALLOCATE PREPARE st1;
DROP TABLE t1;


#
# Bug #32137: prepared statement crash with str_to_date in update clause
#
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;

--echo End of 4.1 tests.

############################# 5.0 tests start ################################
#
#
# Bug#6102 "Server crash with prepared statement and blank after
# function name"
# ensure that stored functions are cached when preparing a statement
# before we open tables
#
create table t1 (a varchar(20)); 
insert into t1 values ('foo'); 
prepare stmt FROM 'SELECT char_length (a) FROM t1'; 
-- error ER_SP_DOES_NOT_EXIST
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1'; 
drop table t1;

#
# Bug#8115: equality propagation and prepared statements
#

create table t1 (a char(3) not null, b char(3) not null,
                 c char(3) not null, primary key  (a, b, c));
create table t2 like t1;

# reduced query
prepare stmt from
  "select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b)
  where t1.a=1";
execute stmt;
execute stmt;
execute stmt;

# original query
prepare stmt from
"select t1.a, t1.b, t1.c, t2.a, t2.b, t2.c from
(t1 left outer join t2 on t2.a=? and t1.b=t2.b)
left outer join t2 t3 on t3.a=? where t1.a=?";

set @a:=1, @b:=1, @c:=1;

execute stmt using @a, @b, @c;
execute stmt using @a, @b, @c;
execute stmt using @a, @b, @c;

deallocate prepare stmt;

drop table t1,t2;


#
# Bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
#

eval SET @aux= "SELECT COUNT(*)
                FROM INFORMATION_SCHEMA.COLUMNS A,
                INFORMATION_SCHEMA.COLUMNS B
                WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
                AND A.TABLE_NAME = B.TABLE_NAME
                AND A.COLUMN_NAME = B.COLUMN_NAME AND
                A.TABLE_NAME = 'user'";

let $exec_loop_count= 3;
eval prepare my_stmt from @aux;
while ($exec_loop_count)
{
  eval execute my_stmt;
  dec $exec_loop_count;
}
deallocate prepare my_stmt;

# Test CALL in prepared mode
delimiter |;
--disable_warnings
drop procedure if exists p1|
drop table if exists t1|
--enable_warnings
create table t1 (id int)|
insert into t1 values(1)|
create procedure p1(a int, b int)
begin
  declare c int;
  select max(id)+1 into c from t1;
  insert into t1 select a+b;
  insert into t1 select a-b;
  insert into t1 select a-c;
end|
set @a= 3, @b= 4|
prepare stmt from "call p1(?, ?)"|
execute stmt using @a, @b|
execute stmt using @a, @b|
select * from t1|
deallocate prepare stmt|
drop procedure p1|
drop table t1|
delimiter ;|


#
# Bug#7306 LIMIT ?, ? and also WL#1785 " Prepared statements: implement
# support for placeholders in LIMIT clause."
# Add basic test coverage for the feature.
# 
create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
prepare stmt from "select * from t1 limit ?, ?";
set @offset=0, @limit=1;
execute stmt using @offset, @limit;
select * from t1 limit 0, 1;
set @offset=3, @limit=2;
execute stmt using @offset, @limit;
select * from t1 limit 3, 2;
prepare stmt from "select * from t1 limit ?";
execute stmt using @limit;
--error 1235
prepare stmt from "select * from t1 where a in (select a from t1 limit ?)";
prepare stmt from "select * from t1 union all select * from t1 limit ?, ?";
set @offset=9;
set @limit=2;
execute stmt using @offset, @limit;
prepare stmt from "(select * from t1 limit ?, ?) union all
                   (select * from t1 limit ?, ?) order by a limit ?";
execute stmt using @offset, @limit, @offset, @limit, @limit;

drop table t1;
deallocate prepare stmt;

#
# Bug#12651
# (Crash on a PS including a subquery which is a select from a simple view)
#
CREATE TABLE b12651_T1(a int) ENGINE=MYISAM;
CREATE TABLE b12651_T2(b int) ENGINE=MYISAM;
CREATE VIEW  b12651_V1 as SELECT b FROM b12651_T2;

PREPARE b12651 FROM 'SELECT 1 FROM b12651_T1 WHERE a IN (SELECT b FROM b12651_V1)';
EXECUTE b12651;

DROP VIEW b12651_V1;
DROP TABLE b12651_T1, b12651_T2;
DEALLOCATE PREPARE b12651;



#
# Bug #14956: ROW_COUNT() returns incorrect result after EXECUTE of prepared
# statement
#
create table t1 (id int);
prepare ins_call from "insert into t1 (id) values (1)";
execute ins_call;
select row_count();
drop table t1;

#
# BUG#16474: SP crashed MySQL
# (when using "order by localvar", where 'localvar' is just that.
# The actual bug test is in sp.test, this is just testing that we get the
# expected result for prepared statements too, i.e. place holders work as
# textual substitution. If it's a single integer, it works as the (deprecated)
# "order by column#", otherwise it's an expression.
#
create table t1 (a int, b int);
insert into t1 (a,b) values (2,8),(1,9),(3,7);

# Will order by index
prepare stmt from "select * from t1 order by ?";
set @a=NULL;
execute stmt using @a;
set @a=1;
execute stmt using @a;
set @a=2;
execute stmt using @a;
deallocate prepare stmt;
# For reference:
select * from t1 order by 1;

# Will not order by index.
prepare stmt from "select * from t1 order by ?+1";
set @a=0;
execute stmt using @a;
set @a=1;
execute stmt using @a;
deallocate prepare stmt;
# For reference:
select * from t1 order by 1+1;

drop table t1;

#
# Bug#19308 "REPAIR/OPTIMIZE/ANALYZE supported in SP but not in PS".
# Add test coverage for the added commands.
#
create table t1 (a int);
create table t2 like t1;
create table t3 like t2;
prepare stmt from "repair table t1";
execute stmt;
execute stmt;
prepare stmt from "optimize table t1";
execute stmt;
execute stmt;
prepare stmt from "analyze table t1";
execute stmt;
execute stmt;
prepare stmt from "repair table t1, t2, t3";
execute stmt;
execute stmt;
prepare stmt from "optimize table t1, t2, t3";
execute stmt;
execute stmt;
prepare stmt from "analyze table t1, t2, t3";
execute stmt;
execute stmt;
prepare stmt from "repair table t1, t4, t3";
execute stmt;
execute stmt;
prepare stmt from "optimize table t1, t3, t4";
execute stmt;
execute stmt;
prepare stmt from "analyze table t4, t1";
execute stmt;
execute stmt;
deallocate prepare stmt;
drop table t1, t2, t3;

#
# Bug#17199 "Table not found" error occurs if the query contains a call
#            to a function from another database.
#            Test prepared statements- related behaviour.
#
#
# ALTER TABLE RENAME and Prepared Statements: wrong DB name buffer was used
# in ALTER ... RENAME which caused memory corruption in prepared statements.
# No need to fix this problem in 4.1 as ALTER TABLE is not allowed in
# Prepared Statements in 4.1.
#
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';
prepare stmt from "alter table test.t1 rename t1";
use test;
execute stmt;
show tables like 't1';
use mysqltest_long_database_name_to_thrash_heap;
show tables like 't1';
deallocate prepare stmt;
#
# Check that a prepared statement initializes its current database at
# PREPARE, and then works correctly even if the current database has been
# changed.
# 
use mysqltest_long_database_name_to_thrash_heap; 
# Necessary for preparation of INSERT/UPDATE/DELETE to succeed
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 the table that was used to prepare INSERT/UPDATE/DELETE: we will
# create a new one by executing stmt_create
drop table t1;
# Switch the current database
use test;
# Check that all prepared statements operate on the database that was
# active at PREPARE
execute stmt_create;
# should return empty set
show tables like 't1';
use mysqltest_long_database_name_to_thrash_heap;
show tables like 't1';
use test;
execute stmt_insert;
select * from mysqltest_long_database_name_to_thrash_heap.t1;
execute stmt_update;
select * from mysqltest_long_database_name_to_thrash_heap.t1;
execute stmt_delete;
execute stmt_select;
execute stmt_alter;
show columns from mysqltest_long_database_name_to_thrash_heap.t1;
execute stmt_alter1;
show columns from mysqltest_long_database_name_to_thrash_heap.t1;
execute stmt_analyze;
execute stmt_optimize;
execute stmt_show;
execute stmt_truncate;
execute stmt_drop;
show tables like 't1';
use mysqltest_long_database_name_to_thrash_heap;
show tables like 't1';
#
# Attempt a statement PREPARE when there is no current database:
# is expected to return an error.
#
drop database mysqltest_long_database_name_to_thrash_heap;
--error ER_NO_DB_ERROR
prepare stmt_create from "create table t1 (i int)";
--error ER_NO_DB_ERROR
prepare stmt_insert from "insert into t1 (i) values (1)";
--error ER_NO_DB_ERROR
prepare stmt_update from "update t1 set i=2";
--error ER_NO_DB_ERROR
prepare stmt_delete from "delete from t1 where i=2";
--error ER_NO_DB_ERROR
prepare stmt_select from "select * from t1";
--error ER_NO_DB_ERROR
prepare stmt_alter from "alter table t1 add column (b int)";
--error ER_NO_DB_ERROR
prepare stmt_alter1 from "alter table t1 drop column b";
--error ER_NO_DB_ERROR
prepare stmt_analyze from "analyze table t1";
--error ER_NO_DB_ERROR
prepare stmt_optimize from "optimize table t1";
--error ER_NO_DB_ERROR
prepare stmt_show from "show tables like 't1'";
--error ER_NO_DB_ERROR
prepare stmt_truncate from "truncate table t1";
--error ER_NO_DB_ERROR
prepare stmt_drop from "drop table t1";
#
# The above has automatically deallocated all our statements.
#
# Attempt to CREATE a temporary table when no DB used: it should fail
# This proves that no table can be used without explicit specification of
# its database if there is no current database. 
#
--error ER_NO_DB_ERROR
create temporary table t1 (i int);
#
# Restore the old environemnt
#
use test;


#
# BUG#21166: Prepared statement causes signal 11 on second execution
#
# Changes in an item tree done by optimizer weren't properly
# registered and went unnoticed, which resulted in preliminary freeing
# of used memory.
#
--disable_warnings ONCE
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;
EXECUTE stmt USING @a;

DEALLOCATE PREPARE stmt;
DROP TABLE IF EXISTS t1, t2, t3;


#
# BUG#21081: SELECT inside stored procedure returns wrong results
#
--disable_warnings ONCE
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;
SET @arg= 2;
EXECUTE stmt USING @arg;
SET @arg= 1;
EXECUTE stmt USING @arg;

DEALLOCATE PREPARE stmt;
DROP TABLE t1, t2;


#
# BUG#20327: Marking of a wrong field leads to a wrong result on select with
#            view, prepared statement and subquery.
#
CREATE TABLE t1 (i INT);
CREATE VIEW v1 AS SELECT * FROM t1;

INSERT INTO t1 VALUES (1), (2);

let $query = SELECT t1.i FROM t1 JOIN v1 ON t1.i = v1.i
             WHERE EXISTS (SELECT * FROM t1 WHERE v1.i = 1);
eval $query;
eval PREPARE stmt FROM "$query";
# Statement execution should return '1'.
EXECUTE stmt;
# Check re-execution.
EXECUTE stmt;

DEALLOCATE PREPARE stmt;
DROP VIEW v1;
DROP TABLE t1;


#
# BUG#21856: Prepared Statments: crash if bad create
#
--disable_warnings ONCE
DROP PROCEDURE IF EXISTS p1;

let $iterations= 100;
--disable_query_log
--disable_result_log
while ($iterations)
{
  --error ER_PARSE_ERROR
  PREPARE stmt FROM "CREATE PROCEDURE p1()";
  dec $iterations;
}
--enable_query_log
--enable_result_log

#
# Bug 19764:  SHOW commands end up in the slow log as table scans
#

flush status;
prepare sq from 'show status like "slow_queries"';
execute sq;
prepare no_index from 'select 1 from information_schema.tables limit 1';
execute sq;
execute no_index;
execute sq;
deallocate prepare no_index;
deallocate prepare sq;


#
# Bug 25027: query with a single-row non-correlated subquery
#            and IS NULL predicate
#

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;
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL';

EXECUTE stmt;
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;
DEALLOCATE PREPARE stmt;

DROP TABLE t1,t2;
#
# Bug#4968 "Stored procedure crash if cursor opened on altered table"
# The bug is not repeatable any more after the fix for
# Bug#15217 "Bug #15217   Using a SP cursor on a table created with PREPARE
# fails with weird error", however ALTER TABLE is not re-execution friendly
# and that caused a valgrind warning. Check that the warning is gone.
#
--disable_warnings ONCE
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;

#
# Bug#6895 "Prepared Statements: ALTER TABLE DROP COLUMN does nothing"
#
--disable_warnings ONCE
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;
drop table t1;
create table t1 (a int, b int);
execute s_6895;
show columns from t1;
drop table t1;
create table t1 (a int, b int);
execute s_6895;
show columns from t1;
deallocate prepare s_6895;
drop table t1;

#
# Bug #22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"
#
# 5.0 part of the test.
#

# ALTER TABLE
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;
# Let us trash table-cache's memory
flush tables;
select * from t2;
execute stmt;
show create table t1;
deallocate prepare stmt;
drop table t1, t2;
# 5.1 part of the test.
# CREATE DATABASE
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;
drop database mysqltest_1;
set @@character_set_server= utf8; 
execute stmt;
show create database mysqltest_1;
drop database mysqltest_1;
deallocate prepare stmt;
set @@character_set_server= @old_character_set_server;


#
# BUG#24491 "using alias from source table in insert ... on duplicate key"
#
--disable_warnings ONCE
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');
# Let us prepare INSERT ... SELECT ... ON DUPLICATE KEY UPDATE statement
# which in its ON DUPLICATE KEY clause erroneously tries to assign value
# to a column which is mentioned only in SELECT part.
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'";
# Both first and second attempts to execute it should fail
--error ER_BAD_FIELD_ERROR 
execute stmt;
--error ER_BAD_FIELD_ERROR
execute stmt;
deallocate prepare stmt;
# And now the same test for more complex case which is more close
# to the one that was reported originally.
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'";
--error ER_BAD_FIELD_ERROR 
execute stmt;
--error ER_BAD_FIELD_ERROR
execute stmt;
deallocate prepare stmt;
drop tables t1;

#
# Bug #28509: strange behaviour: passing a decimal value to PS
#
prepare stmt from "create table t1 select ?";
set @a=1.0;
execute stmt using @a;
show create table t1;
drop table t1;

#
# Bug#33798: prepared statements improperly handle large unsigned ints
#
--disable_warnings ONCE
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;
execute stmt using @a, @b;
select * from t1 where a = @a and b = @b;
deallocate prepare stmt;
drop table t1;

#
# Bug#32890 Crash after repeated create and drop of tables and views
#

--disable_warnings
drop view if exists v1;
drop table if exists t1;
--enable_warnings

create table t1 (a int, b int);
insert into t1 values (1,1), (2,2), (3,3);
insert into t1 values (3,1), (1,2), (2,3);

prepare stmt from "create view v1 as select * from t1";
execute stmt;
drop table t1;
create table t1 (a int, b int);
drop view v1;
execute stmt;
show create view v1;
drop view v1;

prepare stmt from "create view v1 (c,d) as select a,b from t1";
execute stmt;
show create view v1;
select * from v1;
drop view v1;
execute stmt;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create view v1 (c) as select b+1 from t1";
execute stmt;
show create view v1;
select * from v1;
drop view v1;
execute stmt;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create view v1 (c,d,e,f) as select a,b,a in (select a+2 from t1), a = all (select a from t1) from t1";
execute stmt;
show create view v1;
select * from v1;
drop view v1;
execute stmt;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create or replace view v1 as select 1";
execute stmt;
show create view v1;
select * from v1;
execute stmt;
show create view v1;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create view v1 as select 1, 1";
execute stmt;
show create view v1;
select * from v1;
drop view v1;
execute stmt;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create view v1 (x) as select a from t1 where a > 1";
execute stmt;
show create view v1;
select * from v1;
drop view v1;
execute stmt;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create view v1 as select * from `t1` `b`";
execute stmt;
show create view v1;
select * from v1;
drop view v1;
execute stmt;
deallocate prepare stmt;
show create view v1;
select * from v1;
drop view v1;

prepare stmt from "create view v1 (a,b,c) as select * from t1";
--error ER_VIEW_WRONG_LIST
execute stmt;
--error ER_VIEW_WRONG_LIST
execute stmt;
deallocate prepare stmt;

drop table t1;
create temporary table t1 (a int, b int);

prepare stmt from "create view v1 as select * from t1";
--error ER_VIEW_SELECT_TMPTABLE
execute stmt;
--error ER_VIEW_SELECT_TMPTABLE
execute stmt;
deallocate prepare stmt;

drop table t1;

--error ER_NO_SUCH_TABLE
prepare stmt from "create view v1 as select * from t1";
--error ER_NO_SUCH_TABLE
prepare stmt from "create view v1 as select * from `t1` `b`";

#
# Bug#33851: Passing UNSIGNED param to EXECUTE returns ERROR 1210
#

prepare stmt from "select ?";
set @arg= 123456789.987654321;
select @arg;
execute stmt using @arg;
set @arg= "string";
select @arg;
execute stmt using @arg;
set @arg= 123456;
select @arg;
execute stmt using @arg;
set @arg= cast(-12345.54321 as decimal(20, 10));
select @arg;
execute stmt using @arg;
deallocate prepare stmt;

--echo #
--echo # Bug#48508: Crash on prepared statement re-execution.
--echo #
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;
execute stmt;
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;
execute stmt;
deallocate prepare stmt;
drop table t1,t2;
--echo #


--echo #
--echo # Bug #49570: Assertion failed: !(order->used & map)
--echo # on re-execution of prepared statement
--echo #
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;
EXECUTE stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP TABLE t1;


--echo End of 5.0 tests.

#
# Bug #20665: All commands supported in Stored Procedures should work in
# Prepared Statements
#
create procedure proc_1() reset query cache;
call proc_1();
call proc_1();
call proc_1();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int deterministic begin reset query cache; return 1; end|
create function func_1() returns int deterministic begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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;
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin reset master; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin reset slave; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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;
--error ER_NO_SUCH_THREAD
call proc_1(0);
--error ER_NO_SUCH_THREAD
call proc_1(0);
--error ER_NO_SUCH_THREAD
call proc_1(0);
drop procedure proc_1;
delimiter |;
create function func_1() returns int begin kill 0; return 1; end|
delimiter ;|
--error ER_NO_SUCH_THREAD
select func_1() from dual;
--error ER_NO_SUCH_THREAD
select func_1() from dual;
--error ER_NO_SUCH_THREAD
select func_1() from dual;
drop function func_1;
prepare abc from "kill 0";
--error ER_NO_SUCH_THREAD
execute abc;
--error ER_NO_SUCH_THREAD
execute abc;
--error ER_NO_SUCH_THREAD
execute abc;
deallocate prepare abc;


create procedure proc_1() flush hosts;
call proc_1();
call proc_1();
call proc_1();
call proc_1();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush hosts; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush privileges; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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;
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush tables with read lock; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush tables; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
call proc_1();
show open tables from mysql;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
call proc_1();
show open tables from mysql;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
call proc_1();
show open tables from mysql;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
flush tables;
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush tables; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
drop function func_1;
drop procedure proc_1;

# make the output deterministic:
# the order used in SHOW OPEN TABLES
# is too much implementation dependent
--disable_ps_protocol
flush tables;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
--enable_ps_protocol

prepare abc from "flush tables";
execute abc;
show open tables from mysql;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
execute abc;
show open tables from mysql;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
execute abc;
show open tables from mysql;
select Host, User from mysql.user limit 0;
select Host, Db from mysql.db limit 0;
show open tables from mysql;
flush tables;
deallocate prepare abc;


create procedure proc_1() flush logs;
call proc_1();
call proc_1();
call proc_1();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush logs; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush status; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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 des_key_file;
call proc_1();
call proc_1();
call proc_1();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush des_key_file; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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();
delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin flush user_resources; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end|
delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual;
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;
delimiter |;
create function func_1() returns int begin start slave; return 1; end|
delimiter ;|
drop function func_1;
prepare abc from "start slave";
deallocate prepare abc;


create procedure proc_1() stop slave;
drop procedure proc_1;
delimiter |;
create function func_1() returns int begin stop slave; return 1; end|
delimiter ;|
drop function func_1;
prepare abc from "stop slave";
deallocate prepare abc;


create procedure proc_1() show binlog events;
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show binlog events; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show binlog events";
deallocate prepare abc;


create procedure proc_1() show slave status;
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show slave status; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show slave status";
deallocate prepare abc;


create procedure proc_1() show master status;
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show master status; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show master status";
deallocate prepare abc;


create procedure proc_1() show master logs;
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show master logs; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show master logs";
deallocate prepare abc;


create procedure proc_1() show events;
call proc_1();
call proc_1();
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show events; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show events";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;


--disable_warnings ONCE
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");
call proc_1("bb");
call proc_1("bb");
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show create procedure a; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show create procedure a";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;
drop procedure a;


--disable_warnings ONCE
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");
call proc_1("bb");
call proc_1("bb");
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show create function a; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show create function a";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;
drop function a;


--disable_warnings ONCE
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();
call proc_1();
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show create table tab1; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show create table tab1";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;
drop table tab1;


--disable_warnings
drop view if exists v1;
drop table if exists t1;
--enable_warnings
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();
call proc_1();
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show create view v1; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "show create view v1";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;
drop view v1;
drop table t1;


create procedure proc_1() install plugin my_plug soname 'some_plugin.so';
--replace_regex /(Can\'t open shared library).*$/\1/
--error ER_CANT_OPEN_LIBRARY,ER_FEATURE_DISABLED
call proc_1();
--replace_regex /(Can\'t open shared library).*$/\1/
--error ER_CANT_OPEN_LIBRARY,ER_FEATURE_DISABLED
call proc_1();
--replace_regex /(Can\'t open shared library).*$/\1/
--error ER_CANT_OPEN_LIBRARY,ER_FEATURE_DISABLED
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin install plugin my_plug soname '/tmp/plugin'; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "install plugin my_plug soname 'some_plugin.so'";
deallocate prepare abc;


create procedure proc_1() uninstall plugin my_plug;
--error ER_SP_DOES_NOT_EXIST
call proc_1();
--error ER_SP_DOES_NOT_EXIST
call proc_1();
--error ER_SP_DOES_NOT_EXIST
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin uninstall plugin my_plug; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "uninstall plugin my_plug";
--error ER_SP_DOES_NOT_EXIST
execute abc;
--error ER_SP_DOES_NOT_EXIST
execute abc;
--error ER_SP_DOES_NOT_EXIST
execute abc;
deallocate prepare abc;


--disable_warnings ONCE
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();
--error ER_DB_CREATE_EXISTS
call proc_1();
drop database if exists mysqltest_xyz;
call proc_1();
drop database if exists mysqltest_xyz;
drop procedure proc_1;
delimiter |;
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin create database mysqltest_xyz; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "create database mysqltest_xyz";
execute abc;
drop database if exists mysqltest_xyz;
execute abc;
--error ER_DB_CREATE_EXISTS
execute abc;
drop database if exists mysqltest_xyz;
execute abc;
drop database if exists mysqltest_xyz;
deallocate prepare abc;


--disable_warnings ONCE
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();
call proc_1();
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin checksum table t1; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "checksum table t1";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;


create procedure proc_1() create user pstest_xyz@localhost;
call proc_1();
drop user pstest_xyz@localhost;
call proc_1();
--error ER_CANNOT_USER
call proc_1();
drop user pstest_xyz@localhost;
call proc_1();
drop user pstest_xyz@localhost;
drop procedure proc_1;
delimiter |;
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin create user pstest_xyz@localhost; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
prepare abc from "create user pstest_xyz@localhost";
execute abc;
drop user pstest_xyz@localhost;
execute abc;
--error ER_CANNOT_USER
execute abc;
drop user pstest_xyz@localhost;
execute abc;
drop user pstest_xyz@localhost;
deallocate prepare abc;


--disable_warnings ONCE
drop event if exists xyz;
#create procedure proc_1() create event xyz on schedule every 5 minute disable do select 123;
#call proc_1();
#drop event xyz;
#call proc_1();
#--error ER_EVENT_ALREADY_EXISTS
#call proc_1();
#drop event xyz;
#call proc_1();
#drop event xyz;
#drop procedure proc_1;
delimiter |;
--error ER_EVENT_RECURSION_FORBIDDEN
create function func_1() returns int begin create event xyz on schedule at now() do select 123; return 1; end|
delimiter ;|
--error ER_SP_DOES_NOT_EXIST
select func_1(), func_1(), func_1() from dual;
--error ER_SP_DOES_NOT_EXIST
drop function func_1;
--error ER_UNSUPPORTED_PS
prepare abc from "create event xyz on schedule at now() do select 123";
--error ER_UNKNOWN_STMT_HANDLER
deallocate prepare abc;


--disable_warnings
drop event if exists xyz;
create event xyz on schedule every 5 minute disable do select 123;
--enable_warnings
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;
delimiter |;
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin alter event xyz comment 'xyz'; return 1; end|
delimiter ;|
--error ER_UNSUPPORTED_PS
prepare abc from "alter event xyz comment 'xyz'";
--error ER_UNKNOWN_STMT_HANDLER
deallocate prepare abc;


--disable_warnings
drop event if exists xyz;
create event xyz on schedule every 5 minute disable do select 123;
--enable_warnings
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();
--error ER_EVENT_DOES_NOT_EXIST
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin drop event xyz; return 1; end|
delimiter ;|
--error ER_UNSUPPORTED_PS
prepare abc from "drop event xyz";
--error ER_UNKNOWN_STMT_HANDLER
deallocate prepare abc;


--disable_warnings
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");
--enable_warnings
SET GLOBAL new_cache.key_buffer_size=128*1024;
create procedure proc_1() cache index t1 in new_cache;
call proc_1();
call proc_1();
call proc_1();
drop procedure proc_1;
SET GLOBAL second_cache.key_buffer_size=128*1024;
prepare abc from "cache index t1 in second_cache";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;
drop table t1;

--disable_warnings
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");
--enable_warnings
create procedure proc_1() load index into cache t1 ignore leaves;
call proc_1();
call proc_1();
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin load index into cache t1 ignore leaves; return 1; end|
delimiter ;|
prepare abc from "load index into cache t2 ignore leaves";
execute abc;
execute abc;
execute abc;
deallocate prepare abc;
drop table t1, t2;

#
# Bug #21422: GRANT/REVOKE possible inside stored function, probably in a trigger
# This is disabled for now till it is resolved in 5.0
#

#create procedure proc_1() grant all on *.* to abc@host;
#drop procedure proc_1;
#delimiter |;
#--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
#create function func_1() returns int begin grant all on *.* to abc@host; return 1; end|
#delimiter ;|
#prepare abc from "grant all on *.* to abc@host";
#
#create procedure proc_1() revoke all on *.* from abc@host;
#drop procedure proc_1;
#delimiter |;#--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
#create function func_1() returns int begin revoke all on *.* from abc@host; return 1; end|
#delimiter ;|
#prepare abc from "revoke all on *.* from abc@host";

create procedure proc_1() show errors;
call proc_1();
call proc_1();
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show errors; return 1; end|
delimiter ;|
prepare abc from "show errors";
deallocate prepare abc;

--disable_warnings
drop table if exists t1;
drop table if exists t2;
--enable_warnings
create procedure proc_1() show warnings;
drop table if exists t1;
call proc_1();
drop table if exists t2;
call proc_1();
drop table if exists t1, t2;
call proc_1();
drop procedure proc_1;
delimiter |;
--error ER_SP_NO_RETSET
create function func_1() returns int begin show warnings; return 1; end|
delimiter ;|
prepare abc from "show warnings";
drop table if exists t1;
execute abc;
drop table if exists t2;
execute abc;
drop table if exists t1, t2;
execute abc;
deallocate prepare abc;

#
# Bug#22684: The Functions ENCODE, DECODE and FORMAT are not real functions
#

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;
set @my_data="more text to encode";
execute stmt1 using @my_data, @my_password, @my_password;
set @my_password="new password";
execute stmt1 using @my_data, @my_password, @my_password;
deallocate prepare stmt1;

set @to_format="123456789.123456789";
set @dec=0;

prepare stmt2 from 'select format(?, ?)';
execute stmt2 using @to_format, @dec;
set @dec=4;
execute stmt2 using @to_format, @dec;
set @dec=6;
execute stmt2 using @to_format, @dec;
set @dec=2;
execute stmt2 using @to_format, @dec;
set @to_format="100";
execute stmt2 using @to_format, @dec;
set @to_format="1000000";
execute stmt2 using @to_format, @dec;
set @to_format="10000";
execute stmt2 using @to_format, @dec;
deallocate prepare stmt2;


#
# BUG#18326: Do not lock table for writing during prepare of statement
#
--disable_warnings ONCE
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;

connect (conn1, localhost, root, , );

# Prepare never acquires the lock, and thus should not block.
PREPARE stmt1 FROM "SELECT i FROM t1";
PREPARE stmt2 FROM "INSERT INTO t2 (i) VALUES (3)";

# This should not block because READ lock on t1 is shared.
EXECUTE stmt1;

# This should block because WRITE lock on t2 is exclusive.
send EXECUTE stmt2;

connection default;

SELECT * FROM t2;
UNLOCK TABLES;
let $wait_condition= SELECT COUNT(*) = 2 FROM t2;
--source include/wait_condition.inc
SELECT * FROM t2;

# DDL and DML works even if some client have a prepared statement
# referencing the table.
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);

connection conn1;

reap;
EXECUTE stmt1;
EXECUTE stmt2;
SELECT * FROM t2;

disconnect conn1;

connection default;

DROP TABLE t1, t2;

#
# Bug #24879 Prepared Statements: CREATE TABLE (UTF8 KEY) produces a growing
# key length
#
# Test that parse information is not altered by subsequent executions of a
# prepared statement
#
drop table if exists t1;
prepare stmt
from "create table t1 (c char(100) character set utf8, key (c(10)))";
execute stmt;
show create table t1;
drop table t1;
execute stmt;
show create table t1;
drop table t1;

#
# Bug #32030 DELETE does not return an error and deletes rows if error
# evaluating WHERE
#
# Test that there is an error for prepared delete just like for the normal
# one.
#
--disable_warnings ONCE
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";

--error ER_SUBQUERY_NO_1_ROW
delete from t2 where (select (select max(b) from t1 group
by a having a < 2) x from t1) > 10000;
--error ER_SUBQUERY_NO_1_ROW
execute stmt;
--error ER_SUBQUERY_NO_1_ROW
execute stmt;

deallocate prepare stmt;
drop table t1, t2;

--echo #
--echo # Bug#27430 Crash in subquery code when in PS and table DDL changed
--echo # after PREPARE
--echo #
--echo # This part of the test doesn't work in embedded server, this is
--echo # why it's here. For the main test see ps_ddl*.test
--echo
--disable_warnings ONCE
drop table if exists t1;
create table t1 (a int);
prepare stmt from "show events where (1) in (select * from t1)";
execute stmt;
drop table t1;
create table t1 (x int);
execute stmt;
drop table t1;
deallocate prepare stmt;

--echo #
--echo # Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
--echo #

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;
set @str="bcd", @key="dcb";
execute encode using @str, @key;
execute decode using @ciphertext, @key;
select @plaintext;
deallocate prepare encode;
deallocate prepare decode;

--echo #
--echo # Bug#52124 memory leaks like a sieve in datetime, timestamp, time, date fields + warnings
--echo #
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))";
--disable_warnings
EXECUTE stmt;
EXECUTE stmt;
--enable_warnings
DEALLOCATE PREPARE stmt;
DROP TABLE t1;

--echo #
--echo # Bug#54494 crash with explain extended and prepared statements
--echo #
CREATE TABLE t1(a INT);
INSERT INTO t1 VALUES (1),(2);
PREPARE stmt FROM 'EXPLAIN EXTENDED SELECT 1 FROM t1 RIGHT JOIN t1 t2 ON 1';
EXECUTE stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP TABLE t1;

--echo #
--echo # Bug#54488 crash when using explain and prepared statements with subqueries
--echo #
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;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP TABLE t1;

--echo 
--echo End of 5.1 tests.

###########################################################################

--echo
--echo #
--echo # WL#4435: Support OUT-parameters in prepared statements.
--echo #
--echo

# The idea of this test case is to check that
#   - OUT-parameters of four allowed types (string, double, int, decimal) work
#     properly;
#   - INOUT and OUT parameters work properly;
#   - A mix of IN and OUT parameters work properly;

--disable_warnings
DROP PROCEDURE IF EXISTS p_string;
DROP PROCEDURE IF EXISTS p_double;
DROP PROCEDURE IF EXISTS p_int;
DROP PROCEDURE IF EXISTS p_decimal;
--enable_warnings

delimiter |;

--echo
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|

--echo
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|

--echo
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|

--echo
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|

delimiter ;|

--echo
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(?, ?, ?, ?)';

--echo
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;

--echo
--echo -- Testing strings...

--echo
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;

--echo
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;

--echo
--echo -- Testing doubles...

--echo
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;

--echo
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;

--echo
--echo -- Testing ints...

--echo
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;

--echo
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;

--echo
--echo -- Testing decs...

--echo
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;

--echo
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;

--echo
DEALLOCATE PREPARE stmt_str;
DEALLOCATE PREPARE stmt_dbl;
DEALLOCATE PREPARE stmt_int;
DEALLOCATE PREPARE stmt_dec;

--echo
DROP PROCEDURE p_string;
DROP PROCEDURE p_double;
DROP PROCEDURE p_int;
DROP PROCEDURE p_decimal;

#
# Another test case for WL#4435: check out parameters in Dynamic SQL.
#

--echo
--disable_warnings
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
--enable_warnings

--echo

CREATE PROCEDURE p1(OUT v1 CHAR(10))
  SET v1 = 'test1';

--echo

delimiter |;
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|
delimiter ;|

--echo

CALL p2(@a);
SELECT @a;

--echo

DROP PROCEDURE p1;
DROP PROCEDURE p2;

###########################################################################

--source t/wl4435_generated.inc

###########################################################################

--echo
--echo # End of WL#4435.

###########################################################################


--echo #
--echo # WL#4284: Transactional DDL locking
--echo #

--disable_warnings ONCE
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT);
BEGIN;
SELECT * FROM t1;
--echo # Test that preparing a CREATE TABLE does not take a exclusive metdata lock.
PREPARE stmt1 FROM "CREATE TABLE t1 AS SELECT 1";
--error ER_TABLE_EXISTS_ERROR
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
DROP TABLE t1;

--echo #
--echo # WL#4284: Transactional DDL locking
--echo #
--echo # Test that metadata locks taken during prepare are released.
--echo #

connect(con1,localhost,root,,);
connection default;
--disable_warnings ONCE
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT);
connection con1;
BEGIN;
PREPARE stmt1 FROM "SELECT * FROM t1";
connection default;
DROP TABLE t1;
disconnect con1;

--echo
--echo #
--echo # Bug#56115: invalid memory reads when PS selecting from
--echo #            information_schema tables
--echo # Bug#58701: crash in Field::make_field, cursor-protocol
--echo #
--echo # NOTE: MTR should be run both with --ps-protocol and --cursor-protocol.
--echo #
--echo

SELECT *
FROM (SELECT 1 UNION SELECT 2) t;

--echo
--echo # Bug#13805127: Stored program cache produces wrong result in same THD
--echo

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
";

--echo
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;
--echo
EXECUTE s1;

--echo
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;
--echo
EXECUTE s1;

--echo
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;
--echo
EXECUTE s1;

DEALLOCATE PREPARE s1;

--echo #
--echo # End of 5.5 tests.

--echo #
--echo # Bug#12603141: JOIN::flatten_subqueries asrt/simplify_joins sig11/...
--echo # Bug#12603457: SEGFAULT IN REINIT_STMT_BEFORE_USE
--echo #

CREATE TABLE t1(a INTEGER);
CREATE TABLE t2(a INTEGER);

PREPARE stmt FROM '
SELECT (SELECT 1 FROM t2 WHERE ot.a) AS d
FROM t1 AS ot
GROUP BY d';

EXECUTE stmt;
EXECUTE stmt;

INSERT INTO t1 VALUES (0),(1),(2);
INSERT INTO t2 VALUES (1);

EXECUTE stmt;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;
DROP TABLE t1, t2;

--echo #
--echo # Bug#12582849
--echo # ASSERTION FAILURE IN __CXA_PURE_VIRTUAL/ITEM_COND::FIX_FIELDS
--echo #

CREATE TABLE t1 (
  pk INTEGER AUTO_INCREMENT,
  col_int_nokey INTEGER,
  col_int_key INTEGER,

  col_varchar_key VARCHAR(1),
  col_varchar_nokey VARCHAR(1),

  PRIMARY KEY (pk),
  KEY (col_int_key),
  KEY (col_varchar_key, col_int_key)
);

INSERT INTO t1 (
  col_int_key, col_int_nokey,
  col_varchar_key, col_varchar_nokey
) VALUES 
(4,    2, 'v', 'v'),
(62, 150, 'v', 'v');

CREATE TABLE t2 (
  pk INTEGER AUTO_INCREMENT,
  col_int_nokey INTEGER,
  col_int_key INTEGER,

  col_varchar_key VARCHAR(1),
  col_varchar_nokey VARCHAR(1),

  PRIMARY KEY (pk),
  KEY (col_int_key),
  KEY (col_varchar_key, col_int_key)
);

INSERT INTO t2 (
  col_int_key, col_int_nokey,
  col_varchar_key, col_varchar_nokey
) VALUES 
(8, NULL, 'x', 'x'),
(7, 8,    'd', 'd');

PREPARE stmt FROM ' 
SELECT
  ( SELECT MAX( SQ1_alias2 .col_int_nokey ) AS SQ1_field1
    FROM ( t2 AS SQ1_alias1 RIGHT JOIN t1 AS SQ1_alias2
           ON ( SQ1_alias2.col_varchar_key = SQ1_alias1.col_varchar_nokey )
         )
    WHERE SQ1_alias2.pk < alias1.col_int_nokey OR alias1.pk
  ) AS field1
FROM ( t1 AS alias1 JOIN t2 AS alias2 ON alias2.pk )
GROUP BY field1
';

EXECUTE stmt;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;

DROP TABLE t1, t2;

###########################################################################


--echo #
--echo # Bug#12661349 assert in protocol::end_statement
--echo #

--echo # Note: This test case should be run with --ps-protocol

--disable_warnings ONCE
DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (col1 INT);

--echo # Connection con1
connect(con1, localhost, root);
let $con1_id= `SELECT CONNECTION_ID()`;

--echo # Connection default
connection default;
--replace_result $con1_id <con1_id>
eval KILL QUERY $con1_id;

--echo # Connection con1
connection con1;
# Here the server asserts when running with "--ps-protocol"
--error ER_QUERY_INTERRUPTED
SELECT * FROM t1;
disconnect con1;
--source include/wait_until_disconnected.inc

--echo # Connection default
connection default;
DROP TABLE t1;


--echo #
--echo # Bug#19894382 - SERVER SIDE PREPARED STATEMENTS LEADS TO POTENTIAL OFF-BY-SECOND
--echo #                TIMESTAMP ON SLAVE.
--echo #

CREATE TABLE bug19894382(f1 CHAR(64) DEFAULT 'slave',
                         f2 TIME, f3 TIMESTAMP NULL, f4 DATETIME,
                         f5 TIME(3), f6 TIMESTAMP(3) NULL, f7 DATETIME(3));

--echo # Execute prepared statements from mysql_client_test.
--exec echo "$MYSQL_CLIENT_TEST" > $MYSQLTEST_VARDIR/log/bug19894382.out.log 2>&1
--exec $MYSQL_CLIENT_TEST -d -u root test_bug19894382 >> $MYSQLTEST_VARDIR/log/bug19894382.out.log 2>&1

--echo # Insert tuples from the client_test_db.bug19894382 to the test.bug19894382.
--echo # Tuples in the client_test_db.bug19894382 are inserted from the mysql_client_test.
INSERT INTO bug19894382 SELECT * FROM client_test_db.bug19894382;

--echo # Replay binlog events
let $MYSQLD_DATADIR= `select @@datadir`;
--let $master_log_file= query_get_value(SHOW MASTER STATUS, File, 1)
--exec $MYSQL_BINLOG --force-if-open -d client_test_db $MYSQLD_DATADIR/$master_log_file > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug19894382.binlog
--exec $MYSQL -e "source $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug19894382.binlog"

--echo # Insert tuples from the client_test_db.bug19894382 to the test.bug19894382.
--echo # Tuples in the client_test_db.bug19894382 are inserted from the binlog.
INSERT INTO bug19894382(f2, f3, f4, f5, f6, f7)
  SELECT f2, f3, f4, f5, f6, f7 FROM client_test_db.bug19894382;
--echo # With fix, tuples of "master" and "slave" will be same. There will not be any difference
--echo # in values inserted for time, timestamp and datetime type columns.
SELECT * FROM bug19894382 ORDER BY f2;

--echo # Cleanup
DROP DATABASE client_test_db;
DROP TABLE bug19894382;
--remove_file $MYSQLTEST_VARDIR/log/bug19894382.out.log
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug19894382.binlog

Filemanager

Name Type Size Permission Actions
1st.test File 102 B 0644
alias.test File 9 KB 0644
almost_full.test File 848 B 0644
alter_table-big.test File 5.67 KB 0644
alter_table.test File 68.73 KB 0644
analyze.test File 2.25 KB 0644
ansi.test File 847 B 0644
archive-big.test File 41.09 KB 0644
archive.test File 106.4 KB 0644
archive_bitfield.test File 3.94 KB 0644
archive_debug.test File 395 B 0644
archive_gis.test File 103 B 0644
archive_no_symlink-master.opt File 22 B 0644
archive_no_symlink.test File 810 B 0644
archive_plugin-master.opt File 33 B 0644
archive_plugin.test File 972 B 0644
archive_symlink.test File 2.48 KB 0644
audit_plugin-master.opt File 17 B 0644
audit_plugin.test File 1.48 KB 0644
auth_rpl-master.opt File 35 B 0644
auth_rpl-slave.opt File 36 B 0644
auth_rpl.test File 1.86 KB 0644
auto_increment.test File 10.98 KB 0644
bench_count_distinct.test File 416 B 0644
bigint.test File 13.32 KB 0644
binary.test File 4.45 KB 0644
binary_to_hex.test File 2.24 KB 0644
blackhole.test File 762 B 0644
blackhole_plugin-master.opt File 35 B 0644
blackhole_plugin.test File 1009 B 0644
bool.test File 2.47 KB 0644
bootstrap-master.opt File 98 B 0644
bootstrap.test File 1.64 KB 0644
bug12427262.test File 1.7 KB 0644
bug12969156-master.opt File 32 B 0644
bug12969156.test File 498 B 0644
bug17076131-master.opt File 57 B 0644
bug17076131.test File 1.06 KB 0644
bug33509-master.opt File 33 B 0644
bug33509.test File 2.52 KB 0644
bug39022.test File 1.62 KB 0644
bug46080-master.opt File 69 B 0644
bug46080.test File 723 B 0644
bug46261-master.opt File 40 B 0644
bug46261.test File 405 B 0644
bug46760-master.opt File 53 B 0644
bug46760.test File 970 B 0644
bug47671-master.opt File 66 B 0644
bug47671.test File 448 B 0644
bug58669-master.opt File 12 B 0644
bug58669.test File 495 B 0644
bulk_replace.test File 311 B 0644
cache_innodb-master.opt File 21 B 0644
cache_innodb.test File 707 B 0644
case.test File 6.29 KB 0644
cast.test File 9.18 KB 0644
change_user-master.opt File 16 B 0644
change_user.test File 3.9 KB 0644
check.test File 1.59 KB 0644
check_auto_permission.test File 2.06 KB 0644
client_xml.test File 1.47 KB 0644
comment_column.test File 36.33 KB 0644
comment_column2.test File 131.05 KB 0644
comment_index.test File 22.08 KB 0644
comment_table.test File 13.99 KB 0644
comments.test File 1.37 KB 0644
commit.test File 15.16 KB 0644
commit_1innodb.test File 255 B 0644
compare.test File 2.25 KB 0644
compress.test File 827 B 0644
concurrent_innodb_safelog-master.opt File 29 B 0644
concurrent_innodb_safelog.test File 716 B 0644
concurrent_innodb_unsafelog-master.opt File 62 B 0644
concurrent_innodb_unsafelog.test File 718 B 0644
connect.test File 14.32 KB 0644
connect_debug.test File 2.12 KB 0644
consistent_snapshot.test File 2.02 KB 0644
constraints.test File 1.65 KB 0644
count_distinct.test File 7.47 KB 0644
count_distinct2-master.opt File 28 B 0644
count_distinct2.test File 1.83 KB 0644
count_distinct3.test File 1.35 KB 0644
create-big.test File 16.96 KB 0644
create.test File 65.6 KB 0644
create_not_windows.test File 1.06 KB 0644
create_select_tmp.test File 1.29 KB 0644
csv.test File 106.78 KB 0644
csv_alter_table.test File 1.81 KB 0644
csv_not_null.test File 3.24 KB 0644
ctype_ascii.test File 1.2 KB 0644
ctype_big5.test File 4.99 KB 0644
ctype_binary.test File 395 B 0644
ctype_collate.test File 9.18 KB 0644
ctype_cp1250_ch.test File 2.96 KB 0644
ctype_cp1251.test File 2.67 KB 0644
ctype_cp932.test File 1.01 KB 0644
ctype_cp932_binlog_row.test File 236 B 0644
ctype_cp932_binlog_stm.test File 4.57 KB 0644
ctype_create.test File 2.76 KB 0644
ctype_errors.test File 1.33 KB 0644
ctype_eucjpms.test File 29.89 KB 0644
ctype_euckr.test File 5.27 KB 0644
ctype_filename.test File 367 B 0644
ctype_filesystem-master.opt File 73 B 0644
ctype_filesystem.test File 233 B 0644
ctype_gb2312.test File 4.57 KB 0644
ctype_gbk.test File 5.7 KB 0644
ctype_gbk_binlog.test File 961 B 0644
ctype_hebrew.test File 398 B 0644
ctype_latin1.test File 7.15 KB 0644
ctype_latin1_de-master.opt File 67 B 0644
ctype_latin1_de.test File 5.79 KB 0644
ctype_latin2.test File 3.19 KB 0644
ctype_latin2_ch.test File 7.49 KB 0644
ctype_ldml-master.opt File 100 B 0644
ctype_ldml.test File 16.19 KB 0644
ctype_like_range.test File 3.91 KB 0644
ctype_many.test File 14.98 KB 0644
ctype_mb.test File 692 B 0644
ctype_recoding.test File 6.6 KB 0644
ctype_sjis.test File 5.71 KB 0644
ctype_tis620.test File 64.63 KB 0644
ctype_uca.test File 27.57 KB 0644
ctype_ucs.test File 23.66 KB 0644
ctype_ucs2_def-master.opt File 70 B 0644
ctype_ucs2_def.test File 1.49 KB 0644
ctype_ujis.test File 40.45 KB 0644
ctype_ujis_ucs2.test File 83.43 KB 0644
ctype_utf16.test File 22.01 KB 0644
ctype_utf16_def-master.opt File 36 B 0644
ctype_utf16_def.test File 227 B 0644
ctype_utf16_uca.test File 6.43 KB 0644
ctype_utf16le.test File 21.66 KB 0644
ctype_utf32.test File 24.79 KB 0644
ctype_utf32_uca.test File 7.31 KB 0644
ctype_utf8-master.opt File 32 B 0644
ctype_utf8.test File 52.04 KB 0644
ctype_utf8mb4-master.opt File 68 B 0644
ctype_utf8mb4.test File 58.88 KB 0644
ctype_utf8mb4_heap.test File 107 B 0644
ctype_utf8mb4_innodb-master.opt File 32 B 0644
ctype_utf8mb4_innodb.test File 162 B 0644
ctype_utf8mb4_myisam.test File 92 B 0644
ctype_utf8mb4_uca.test File 2.74 KB 0644
date_formats-master.opt File 46 B 0644
date_formats.test File 12.27 KB 0644
ddl_i18n_koi8r.test File 23.19 KB 0644
ddl_i18n_utf8.test File 23.47 KB 0644
deadlock_innodb.test File 358 B 0644
debug_sync.test File 13.71 KB 0644
debug_sync2-master.opt File 29 B 0644
debug_sync2.test File 559 B 0644
default.test File 5.76 KB 0644
delayed.test File 17.33 KB 0644
delete.test File 15.21 KB 0644
deprecated_features.test File 642 B 0644
derived.test File 46.85 KB 0644
dirty_close.test File 1.55 KB 0644
disabled.def File 1.25 KB 0644
disabled_replication-master.opt File 29 B 0644
disabled_replication.test File 2.08 KB 0644
disconnect_on_expired_password_default.test File 1.35 KB 0644
disconnect_on_expired_password_off-master.opt File 37 B 0644
disconnect_on_expired_password_off.test File 1.42 KB 0644
distinct.test File 24.88 KB 0644
drop-no_root.test File 2.38 KB 0644
drop.test File 7.89 KB 0644
drop_debug.test File 779 B 0644
ds_mrr-big.test File 1.99 KB 0644
dynamic_tracing.test File 3.92 KB 0644
empty_table.test File 302 B 0644
enable_cleartext_plugin-master.opt File 35 B 0644
enable_cleartext_plugin.test File 2.48 KB 0644
endspace.test File 4.36 KB 0644
eq_range_idx_stat.test File 2.04 KB 0644
error_simulation.test File 3.29 KB 0644
errors.test File 4.7 KB 0644
events_1.test File 16.1 KB 0644
events_2.test File 15.97 KB 0644
events_bugs-master.opt File 18 B 0644
events_bugs.test File 41.9 KB 0644
events_embedded.test File 79 B 0644
events_grant.test File 5.29 KB 0644
events_logs_tests-master.opt File 41 B 0644
events_logs_tests.test File 3.08 KB 0644
events_microsec.test File 748 B 0644
events_restart-master.opt File 18 B 0644
events_restart.test File 4.45 KB 0644
events_scheduling.test File 4.36 KB 0644
events_stress.test File 4.37 KB 0644
events_time_zone.test File 11.18 KB 0644
events_trans.test File 3.33 KB 0644
events_trans_notembedded.test File 1.7 KB 0644
execution_constants.test File 3.33 KB 0644
explain.test File 11.65 KB 0644
explain_json_all.test File 485 B 0644
explain_json_none.test File 616 B 0644
file_contents.test File 2.9 KB 0644
filesort_debug.test File 2.83 KB 0644
fix_priv_tables.test File 2.21 KB 0644
flush.test File 17.27 KB 0644
flush2-master.opt File 15 B 0644
flush2.test File 360 B 0644
flush_block_commit.test File 2.87 KB 0644
flush_block_commit_notembedded.test File 1.84 KB 0644
flush_read_lock.test File 72.45 KB 0644
flush_read_lock_kill.test File 2.32 KB 0644
flush_table.test File 15.58 KB 0644
foreign_key.test File 2.41 KB 0644
fulltext.test File 22.48 KB 0644
fulltext2.test File 8.12 KB 0644
fulltext3.test File 781 B 0644
fulltext_cache.test File 1.43 KB 0644
fulltext_distinct.test File 1.18 KB 0644
fulltext_left_join.test File 3.82 KB 0644
fulltext_multi.test File 666 B 0644
fulltext_order_by.test File 5.31 KB 0644
fulltext_plugin-master.opt File 19 B 0644
fulltext_plugin.test File 374 B 0644
fulltext_update.test File 907 B 0644
fulltext_var.test File 1.1 KB 0644
func_aes.test File 5.76 KB 0644
func_aes_cfb1.test File 445 B 0644
func_aes_cfb128.test File 455 B 0644
func_aes_cfb8.test File 445 B 0644
func_aes_misc.test File 6.11 KB 0644
func_aes_ofb.test File 440 B 0644
func_analyse.test File 9.37 KB 0644
func_compress.test File 3.3 KB 0644
func_concat.test File 3.67 KB 0644
func_crypt.test File 2.09 KB 0644
func_date_add.test File 3.28 KB 0644
func_default.test File 1 KB 0644
func_des_encrypt.test File 899 B 0644
func_digest.test File 109.12 KB 0644
func_encrypt-master.opt File 59 B 0644
func_encrypt.test File 5.4 KB 0644
func_encrypt_nossl.test File 1.16 KB 0644
func_encrypt_ucs2.test File 459 B 0644
func_equal.test File 1.1 KB 0644
func_gconcat.test File 26.84 KB 0644
func_group.test File 37.03 KB 0644
func_group_innodb.test File 3.57 KB 0644
func_group_innodb_16k.test File 605 B 0644
func_if.test File 5.08 KB 0644
func_in_all.test File 494 B 0644
func_in_icp.test File 567 B 0644
func_in_icp_mrr.test File 540 B 0644
func_in_mrr.test File 565 B 0644
func_in_mrr_cost.test File 575 B 0644
func_in_none.test File 607 B 0644
func_isnull.test File 1009 B 0644
func_like.test File 3.71 KB 0644
func_math.test File 17.27 KB 0644
func_misc-master.opt File 21 B 0644
func_misc.test File 25.73 KB 0644
func_op.test File 964 B 0644
func_regexp.test File 2.89 KB 0644
func_rollback.test File 14.3 KB 0644
func_sapdb.test File 7.58 KB 0644
func_set.test File 5.69 KB 0644
func_str.test File 58.46 KB 0644
func_str_debug.test File 421 B 0644
func_str_no_ps.test File 1.02 KB 0644
func_system.test File 1.47 KB 0644
func_test.test File 9.14 KB 0644
func_time.test File 43.13 KB 0644
func_timestamp.test File 661 B 0644
func_weight_string.test File 3.07 KB 0644
function_defaults.test File 737 B 0644
function_defaults_notembedded.test File 478 B 0644
gcc296.test File 526 B 0644
get_diagnostics.test File 18.25 KB 0644
gis-debug.test File 126 B 0644
gis-precise.test File 8.72 KB 0644
gis-rt-precise.test File 1.39 KB 0644
gis-rtree.test File 43.67 KB 0644
gis.test File 47.91 KB 0644
grant.test File 65.24 KB 0644
grant2.test File 32.51 KB 0644
grant3-master.opt File 19 B 0644
grant3.test File 6.59 KB 0644
grant4.test File 8.05 KB 0644
grant_cache-master.opt File 21 B 0644
grant_cache.test File 590 B 0644
grant_explain_non_select.test File 7.34 KB 0644
grant_lowercase_fs.test File 702 B 0644
greedy_optimizer.test File 30.6 KB 0644
greedy_search.test File 9.5 KB 0644
group_by.test File 64.36 KB 0644
group_min_max.test File 58.59 KB 0644
group_min_max_innodb.test File 13.24 KB 0644
handler_innodb.test File 571 B 0644
handler_myisam.test File 4.25 KB 0644
handler_read_last.test File 523 B 0644
having.test File 20.63 KB 0644
heap.test File 15.43 KB 0644
heap_auto_increment.test File 926 B 0644
heap_btree.test File 8.21 KB 0644
heap_hash.test File 9.69 KB 0644
help.test File 4.83 KB 0644
host_cache_size_functionality.test File 7.62 KB 0644
implicit_char_to_num_conversion.test File 7.63 KB 0644
implicit_commit-master.opt File 32 B 0644
implicit_commit.test File 19.42 KB 0644
import_schema_mismatch.test File 1018 B 0644
index_merge_delete.test File 261 B 0644
index_merge_innodb.test File 1.79 KB 0644
index_merge_insert-and-replace.test File 284 B 0644
index_merge_intersect_dml.test File 113 B 0644
index_merge_myisam.test File 5.38 KB 0644
index_merge_update.test File 261 B 0644
information_schema-big.test File 1.73 KB 0644
information_schema.test File 57.95 KB 0644
information_schema_chmod.test File 834 B 0644
information_schema_db.test File 7.01 KB 0644
information_schema_inno.test File 3.6 KB 0644
information_schema_parameters.test File 12.58 KB 0644
information_schema_part.test File 3.95 KB 0644
information_schema_routines.test File 13.19 KB 0644
init_connect-master.opt File 32 B 0644
init_connect.test File 5.53 KB 0644
init_file-master.opt File 51 B 0644
init_file.test File 944 B 0644
innodb_explain_json_non_select_all.test File 1.02 KB 0644
innodb_explain_json_non_select_none.test File 1.06 KB 0644
innodb_explain_non_select_all.test File 924 B 0644
innodb_explain_non_select_none.test File 960 B 0644
innodb_icp.test File 784 B 0644
innodb_icp_all.test File 679 B 0644
innodb_icp_none.test File 817 B 0644
innodb_ignore_builtin-master.opt File 38 B 0644
innodb_ignore_builtin.test File 441 B 0644
innodb_log_file_size_functionality.test File 5.4 KB 0644
innodb_mrr-master.opt File 35 B 0644
innodb_mrr.test File 825 B 0644
innodb_mrr_all-master.opt File 35 B 0644
innodb_mrr_all.test File 711 B 0644
innodb_mrr_cost-master.opt File 35 B 0644
innodb_mrr_cost.test File 824 B 0644
innodb_mrr_cost_all-master.opt File 35 B 0644
innodb_mrr_cost_all.test File 710 B 0644
innodb_mrr_cost_icp-master.opt File 35 B 0644
innodb_mrr_cost_icp.test File 779 B 0644
innodb_mrr_icp-master.opt File 35 B 0644
innodb_mrr_icp.test File 780 B 0644
innodb_mrr_none-master.opt File 35 B 0644
innodb_mrr_none.test File 831 B 0644
innodb_mysql_lock-master.opt File 31 B 0644
innodb_mysql_lock.test File 8.93 KB 0644
innodb_mysql_lock2.test File 29.1 KB 0644
innodb_mysql_sync.test File 21.04 KB 0644
innodb_pk_extension_off.test File 298 B 0644
innodb_pk_extension_on.test File 296 B 0644
innodb_recovery_with_upper_case_names-master.opt File 25 B 0644
innodb_recovery_with_upper_case_names.test File 1.75 KB 0644
insert.test File 17.1 KB 0644
insert_debug-master.opt File 29 B 0644
insert_debug.test File 2.39 KB 0644
insert_notembedded.test File 6.42 KB 0644
insert_select.test File 13.83 KB 0644
insert_update.test File 9.07 KB 0644
ipv4_as_ipv6-master.opt File 43 B 0644
ipv4_as_ipv6.test File 2.18 KB 0644
ipv6-master.opt File 20 B 0644
ipv6.test File 1.27 KB 0644
join.test File 40.06 KB 0644
join_cache_bka.test File 131 B 0644
join_cache_bka_nixbnl.test File 153 B 0644
join_cache_bkaunique.test File 198 B 0644
join_cache_bnl.test File 225 B 0644
join_cache_nojb.test File 249 B 0644
join_crash.test File 4.92 KB 0644
join_nested.test File 33.73 KB 0644
join_nested_bka.test File 2.29 KB 0644
join_nested_bka_nixbnl.test File 2.32 KB 0644
join_outer.test File 47.39 KB 0644
join_outer_bka.test File 169 B 0644
join_outer_bka_nixbnl.test File 191 B 0644
join_outer_innodb.test File 1.57 KB 0644
key.test File 16.98 KB 0644
key_cache-master.opt File 95 B 0644
key_cache.test File 8.25 KB 0644
key_diff.test File 554 B 0644
key_primary.test File 460 B 0644
keywords.test File 5.47 KB 0644
kill.test File 16.07 KB 0644
kill_debug.test File 1.34 KB 0644
limit.test File 3.54 KB 0644
loaddata.test File 20.75 KB 0644
loaddata_autocom_innodb.test File 98 B 0644
loadxml.test File 3.76 KB 0644
locale.test File 3.22 KB 0644
lock.test File 14.81 KB 0644
lock_multi.test File 27.89 KB 0644
lock_multi_bug38499.test File 4.46 KB 0644
lock_multi_bug38691.test File 2.77 KB 0644
lock_sync-master.opt File 32 B 0644
lock_sync.test File 40.24 KB 0644
lock_tables_lost_commit-master.opt File 24 B 0644
lock_tables_lost_commit.test File 845 B 0644
log_empty_name.opt File 43 B 0644
log_empty_name.test File 290 B 0644
log_errchk.test File 2.1 KB 0644
log_state-master.opt File 59 B 0644
log_state.test File 9.97 KB 0644
log_state_bug33693-master.opt File 60 B 0644
log_state_bug33693.test File 568 B 0644
log_tables-big-master.opt File 17 B 0644
log_tables-big.test File 1.19 KB 0644
log_tables-master.opt File 41 B 0644
log_tables.test File 30.45 KB 0644
log_tables_debug.test File 2.65 KB 0644
log_tables_upgrade.test File 1002 B 0644
long_tmpdir-master.opt File 141 B 0644
long_tmpdir-master.sh File 190 B 0755
long_tmpdir.test File 215 B 0644
lowercase_fs_off.test File 2.42 KB 0644
lowercase_fs_on.test File 1.33 KB 0644
lowercase_mixed_tmpdir-master.opt File 68 B 0644
lowercase_mixed_tmpdir-master.sh File 179 B 0755
lowercase_mixed_tmpdir.test File 305 B 0644
lowercase_mixed_tmpdir_innodb-master.opt File 68 B 0644
lowercase_mixed_tmpdir_innodb-master.sh File 180 B 0755
lowercase_mixed_tmpdir_innodb.test File 299 B 0644
lowercase_table-master.opt File 25 B 0644
lowercase_table.test File 2.74 KB 0644
lowercase_table2.test File 8.28 KB 0644
lowercase_table4-master.opt File 27 B 0644
lowercase_table4.test File 3.14 KB 0644
lowercase_table_grant-master.opt File 25 B 0644
lowercase_table_grant.test File 948 B 0644
lowercase_table_qcache-master.opt File 46 B 0644
lowercase_table_qcache.test File 697 B 0644
lowercase_utf8-master.opt File 58 B 0644
lowercase_utf8.test File 206 B 0644
lowercase_view-master.opt File 27 B 0644
lowercase_view.test File 6.19 KB 0644
main.lowercase_table_qcache-master.opt File 21 B 0644
mdl_sync-master.opt File 32 B 0644
mdl_sync.test File 144.7 KB 0644
merge-big.test File 3.04 KB 0644
merge.test File 84.28 KB 0644
merge_innodb.test File 1.06 KB 0644
merge_mmap-master.opt File 18 B 0644
merge_mmap.test File 4.06 KB 0644
metadata.test File 5.96 KB 0644
mix2_myisam-master.opt File 33 B 0644
mix2_myisam.test File 864 B 0644
mix2_myisam_ucs2.test File 847 B 0644
multi_plugin_load-master.opt File 92 B 0644
multi_plugin_load.test File 412 B 0644
multi_plugin_load_add-master.opt File 68 B 0644
multi_plugin_load_add.test File 495 B 0644
multi_plugin_load_add2-master.opt File 111 B 0644
multi_plugin_load_add2.test File 495 B 0644
multi_statement-master.opt File 80 B 0644
multi_statement.test File 761 B 0644
multi_update-master.opt File 22 B 0644
multi_update.test File 24.38 KB 0644
multi_update2-master.opt File 22 B 0644
multi_update2.test File 1.89 KB 0644
multi_update_innodb.test File 2.22 KB 0644
multi_update_tiny_hash-master.opt File 28 B 0644
multi_update_tiny_hash.test File 1.6 KB 0644
myisam-blob-master.opt File 80 B 0644
myisam-blob.test File 1.1 KB 0644
myisam-system.test File 593 B 0644
myisam.test File 67.22 KB 0644
myisam_crash_before_flush_keys-master.opt File 36 B 0644
myisam_crash_before_flush_keys.test File 1.49 KB 0644
myisam_debug.test File 1.37 KB 0644
myisam_explain_json_non_select_all.test File 825 B 0644
myisam_explain_json_non_select_none.test File 938 B 0644
myisam_explain_non_select_all.test File 696 B 0644
myisam_explain_non_select_none.test File 809 B 0644
myisam_icp.test File 612 B 0644
myisam_icp_all.test File 507 B 0644
myisam_icp_none.test File 644 B 0644
myisam_mrr.test File 789 B 0644
myisam_mrr_all.test File 675 B 0644
myisam_mrr_cost.test File 799 B 0644
myisam_mrr_cost_all.test File 674 B 0644
myisam_mrr_cost_icp.test File 753 B 0644
myisam_mrr_icp.test File 743 B 0644
myisam_mrr_none.test File 793 B 0644
myisam_recover-master.opt File 23 B 0644
myisam_recover.test File 5.61 KB 0644
myisam_row_rpl-master.opt File 54 B 0644
myisam_row_rpl-slave.opt File 54 B 0644
myisam_row_rpl.test File 1.82 KB 0644
myisampack.test File 12.31 KB 0644
mysql-bug41486.test File 1.54 KB 0644
mysql-bug45236.test File 1.41 KB 0644
mysql.test File 21.89 KB 0644
mysql_binary_mode.test File 5.52 KB 0644
mysql_client_test-master.opt File 150 B 0644
mysql_client_test.test File 1.13 KB 0644
mysql_client_test_embedded.cnf File 156 B 0644
mysql_client_test_embedded.test File 677 B 0644
mysql_client_test_qcache-master.opt File 21 B 0644
mysql_client_test_qcache.test File 858 B 0644
mysql_comments.sql File 4.58 KB 0644
mysql_comments.test File 1.44 KB 0644
mysql_config_editor.test File 7.44 KB 0644
mysql_cp932.test File 1.04 KB 0644
mysql_delimiter.sql File 1.48 KB 0644
mysql_delimiter_19799.sql File 13 B 0644
mysql_delimiter_source.sql File 122 B 0644
mysql_embedded-master.opt File 98 B 0644
mysql_embedded.test File 481 B 0644
mysql_embedded_client_test.test File 1.34 KB 0644
mysql_locale_posix.test File 6.97 KB 0644
mysql_not_windows.test File 399 B 0644
mysql_plugin-master.opt File 32 B 0644
mysql_plugin.test File 11.9 KB 0644
mysql_protocols.test File 715 B 0644
mysql_upgrade.test File 7.08 KB 0644
mysql_upgrade_ssl.test File 279 B 0644
mysqladmin.test File 2.5 KB 0644
mysqladmin_shutdown.test File 868 B 0644
mysqlbinlog-master.opt File 39 B 0644
mysqlbinlog.test File 19.19 KB 0644
mysqlbinlog_debug.test File 963 B 0644
mysqlbinlog_mixed_or_statment.test File 1.13 KB 0644
mysqlbinlog_raw_mode.test File 1.98 KB 0644
mysqlbinlog_raw_mode_win.test File 146 B 0644
mysqlbinlog_row_big.test File 4 KB 0644
mysqlcheck.test File 9.73 KB 0644
mysqld--defaults-file.test File 1.03 KB 0644
mysqld--help-notwin.test File 160 B 0644
mysqld--help-win.test File 156 B 0644
mysqldump-compat.opt File 31 B 0644
mysqldump-compat.test File 446 B 0644
mysqldump-max-master.opt File 32 B 0644
mysqldump-max.test File 40 KB 0644
mysqldump-no-binlog-master.opt File 15 B 0644
mysqldump-no-binlog.test File 194 B 0644
mysqldump.test File 86.47 KB 0644
mysqldump_restore.test File 3.85 KB 0644
mysqlhotcopy_archive.test File 180 B 0644
mysqlhotcopy_myisam.test File 145 B 0644
mysqlimport.test File 689 B 0644
mysqlshow.test File 1.63 KB 0644
mysqlslap.test File 5.45 KB 0644
mysqltest.test File 75.5 KB 0644
named_pipe-master.opt File 26 B 0644
named_pipe.test File 597 B 0644
negation_elimination.test File 3.93 KB 0644
no-threads-master.opt File 29 B 0644
no-threads.test File 373 B 0644
no_binlog.test File 165 B 0644
not_embedded_server-master.opt File 16 B 0644
not_embedded_server.test File 5.61 KB 0644
not_partition.test File 3 KB 0644
null.test File 8.55 KB 0644
null_key_all.test File 477 B 0644
null_key_icp.test File 569 B 0644
null_key_none.test File 609 B 0644
odbc.test File 923 B 0644
olap.test File 13.63 KB 0644
openssl_1.test File 9.39 KB 0644
optimizer_bug12837084.test File 14.16 KB 0644
optimizer_debug_sync.test File 2.23 KB 0644
optimizer_switch.test File 10.28 KB 0644
order_by_all.test File 497 B 0644
order_by_icp_mrr.test File 542 B 0644
order_by_none.test File 609 B 0644
order_by_sortkey.test File 2.16 KB 0644
order_fill_sortbuf-master.opt File 20 B 0644
order_fill_sortbuf.test File 578 B 0644
outfile.test File 4.03 KB 0644
outfile_loaddata.test File 10.18 KB 0644
overflow.test File 577 B 0644
packet.test File 3.49 KB 0644
parser.test File 21.89 KB 0644
parser_bug21114_innodb.test File 11.75 KB 0644
parser_not_embedded.test File 2.53 KB 0644
parser_precedence.test File 12.39 KB 0644
parser_stack.test File 12.07 KB 0644
partition.test File 66.34 KB 0644
partition_archive.test File 4.19 KB 0644
partition_binlog.test File 1.2 KB 0644
partition_binlog_stmt.test File 760 B 0644
partition_blackhole.test File 634 B 0644
partition_bug18198.test File 7.88 KB 0644
partition_cache-master.opt File 21 B 0644
partition_cache.test File 1.41 KB 0644
partition_charset.test File 675 B 0644
partition_column.test File 16.15 KB 0644
partition_column_prune.test File 2.24 KB 0644
partition_csv.test File 2.45 KB 0644
partition_datatype.test File 18.97 KB 0644
partition_debug_sync.test File 3.99 KB 0644
partition_disabled-master.opt File 23 B 0644
partition_disabled.test File 3.02 KB 0644
partition_error.test File 61.47 KB 0644
partition_exchange.test File 15.55 KB 0644
partition_explicit_prune.test File 30.93 KB 0644
partition_federated.test File 531 B 0644
partition_grant.test File 2.27 KB 0644
partition_hash.test File 5.57 KB 0644
partition_index_innodb.test File 5.81 KB 0644
partition_index_myisam.test File 3.88 KB 0644
partition_innodb.test File 29.42 KB 0644
partition_innodb_plugin.test File 5 KB 0644
partition_innodb_semi_consistent-master.opt File 61 B 0644
partition_innodb_semi_consistent.test File 4.09 KB 0644
partition_innodb_stmt.test File 1.17 KB 0644
partition_innodb_tablespace.test File 11.93 KB 0644
partition_key_cache.test File 10.82 KB 0644
partition_list.test File 8.04 KB 0644
partition_locking.test File 71.9 KB 0644
partition_locking_4.test File 1.53 KB 0644
partition_mgm.test File 3.67 KB 0644
partition_mgm_err.test File 6.18 KB 0644
partition_mgm_err2.test File 861 B 0644
partition_myisam.test File 8.14 KB 0644
partition_not_blackhole-master.opt File 23 B 0644
partition_not_blackhole.test File 875 B 0644
partition_not_windows-master.opt File 19 B 0644
partition_not_windows.test File 7.59 KB 0644
partition_open_files_limit-master.opt File 62 B 0644
partition_open_files_limit.test File 1.61 KB 0644
partition_order.test File 17.9 KB 0644
partition_pruning.test File 57.82 KB 0644
partition_range.test File 31.14 KB 0644
partition_rename_longfilename.test File 2.02 KB 0644
partition_symlink.test File 7.35 KB 0644
partition_sync.test File 2.15 KB 0644
partition_truncate.test File 806 B 0644
partition_utf8.test File 1.25 KB 0644
partition_windows.test File 1.24 KB 0644
perror-win.test File 915 B 0644
perror.test File 777 B 0644
plugin-master.opt File 20 B 0644
plugin.test File 7.53 KB 0644
plugin_auth-master.opt File 35 B 0644
plugin_auth.test File 19.86 KB 0644
plugin_auth_qa-master.opt File 35 B 0644
plugin_auth_qa.test File 14.16 KB 0644
plugin_auth_qa_1-master.opt File 35 B 0644
plugin_auth_qa_1.test File 15.1 KB 0644
plugin_auth_qa_2-master.opt File 55 B 0644
plugin_auth_qa_2.test File 8.31 KB 0644
plugin_auth_qa_3-master.opt File 49 B 0644
plugin_auth_qa_3.test File 1.51 KB 0644
plugin_auth_sha256-master.opt File 170 B 0644
plugin_auth_sha256.test File 4.76 KB 0644
plugin_auth_sha256_2-master.opt File 217 B 0644
plugin_auth_sha256_2.test File 2.06 KB 0644
plugin_auth_sha256_server_default-master.opt File 224 B 0644
plugin_auth_sha256_server_default.test File 3.06 KB 0644
plugin_auth_sha256_server_default_tls-master.opt File 48 B 0644
plugin_auth_sha256_server_default_tls.test File 3.42 KB 0644
plugin_auth_sha256_tls.test File 2.29 KB 0644
plugin_load-master.opt File 76 B 0644
plugin_load.test File 125 B 0644
plugin_load_option-master.opt File 85 B 0644
plugin_load_option.test File 265 B 0644
plugin_not_embedded-master.opt File 20 B 0644
plugin_not_embedded.test File 896 B 0644
preload.test File 2.43 KB 0644
profiling.test File 8.83 KB 0644
ps-master.opt File 73 B 0644
ps.test File 92.9 KB 0644
ps_10nestset.test File 2.75 KB 0644
ps_11bugs.test File 7.05 KB 0644
ps_1general.test File 28.22 KB 0644
ps_2myisam.test File 1.15 KB 0644
ps_3innodb-master.opt File 32 B 0644
ps_3innodb.test File 760 B 0644
ps_4heap.test File 1.53 KB 0644
ps_5merge.test File 2.71 KB 0644
ps_ddl.test File 52.87 KB 0644
ps_ddl1.test File 11.04 KB 0644
ps_grant.test File 3.9 KB 0644
ps_not_windows.test File 755 B 0644
query_cache-master.opt File 21 B 0644
query_cache.test File 43.88 KB 0644
query_cache_28249-master.opt File 21 B 0644
query_cache_28249.test File 4.2 KB 0644
query_cache_debug-master.opt File 21 B 0644
query_cache_debug.test File 10.7 KB 0644
query_cache_disabled-master.opt File 21 B 0644
query_cache_disabled.test File 496 B 0644
query_cache_merge-master.opt File 21 B 0644
query_cache_merge.test File 4.47 KB 0644
query_cache_notembedded-master.opt File 21 B 0644
query_cache_notembedded.test File 6.97 KB 0644
query_cache_ps_no_prot-master.opt File 21 B 0644
query_cache_ps_no_prot.test File 906 B 0644
query_cache_ps_ps_prot-master.opt File 21 B 0644
query_cache_ps_ps_prot.test File 840 B 0644
query_cache_size_functionality.test File 10.85 KB 0644
query_cache_type_functionality.test File 10.93 KB 0644
query_cache_with_views-master.opt File 21 B 0644
query_cache_with_views.test File 3.98 KB 0644
range_all.test File 490 B 0644
range_icp.test File 563 B 0644
range_icp_mrr.test File 536 B 0644
range_mrr.test File 561 B 0644
range_mrr_cost.test File 571 B 0644
range_none.test File 603 B 0644
read_many_rows_innodb.test File 417 B 0644
read_only.test File 8.16 KB 0644
read_only_innodb.test File 5.38 KB 0644
rename.test File 2.26 KB 0644
renamedb.test File 1.25 KB 0644
repair.test File 5.46 KB 0644
replace.test File 1.21 KB 0644
rewrite_general_log.test File 5.08 KB 0644
rewrite_slow_log.test File 3.23 KB 0644
rollback.test File 490 B 0644
round.test File 4.67 KB 0644
row.test File 9.01 KB 0644
rowid_order_innodb.test File 382 B 0644
rpl_mysqldump_slave.test File 1.06 KB 0644
schema.test File 4.68 KB 0644
secure_file_priv_win-master.opt File 34 B 0644
secure_file_priv_win.test File 2.77 KB 0644
select_all.test File 591 B 0644
select_all_bka.test File 268 B 0644
select_all_bka_nixbnl.test File 290 B 0644
select_found.test File 5.53 KB 0644
select_icp_mrr.test File 637 B 0644
select_icp_mrr_bka.test File 276 B 0644
select_icp_mrr_bka_nixbnl.test File 298 B 0644
select_none.test File 704 B 0644
select_none_bka.test File 270 B 0644
select_none_bka_nixbnl.test File 292 B 0644
select_safe.test File 2.31 KB 0644
server_uuid.test File 2.53 KB 0644
server_uuid_embedded.test File 1.13 KB 0644
shm-master.opt File 173 B 0644
shm.test File 1.46 KB 0644
show_check-master.opt File 93 B 0644
show_check.test File 32.42 KB 0644
show_processlist.test File 2.51 KB 0644
show_processlist_state.test File 208 B 0644
show_profile.test File 495 B 0644
signal.test File 55.55 KB 0644
signal_code.test File 854 B 0644
signal_demo1.test File 6.9 KB 0644
signal_demo2.test File 3.34 KB 0644
signal_demo3-master.opt File 33 B 0644
signal_demo3.test File 2.67 KB 0644
signal_sqlmode.test File 1.85 KB 0644
single_delete_update.test File 13.33 KB 0644
skip_grants-master.opt File 20 B 0644
skip_grants.test File 2.74 KB 0644
skip_log_bin-master.opt File 21 B 0644
skip_log_bin.test File 645 B 0644
skip_name_resolve-master.opt File 20 B 0644
skip_name_resolve.test File 1.56 KB 0644
sort_buffer_size_functionality.test File 9.2 KB 0644
sp-big.test File 2.15 KB 0644
sp-bugs.test File 5.3 KB 0644
sp-code.test File 20.71 KB 0644
sp-destruct.test File 8.06 KB 0644
sp-dynamic.test File 9.19 KB 0644
sp-error.test File 85.68 KB 0644
sp-fib-master.opt File 33 B 0644
sp-fib.test File 1.33 KB 0644
sp-lock-master.opt File 33 B 0644
sp-lock.test File 31.39 KB 0644
sp-master.opt File 54 B 0644
sp-no-code.test File 216 B 0644
sp-prelocking-master.opt File 33 B 0644
sp-prelocking.test File 8.43 KB 0644
sp-security.test File 25.06 KB 0644
sp-threads.test File 4 KB 0644
sp-ucs2.test File 3.38 KB 0644
sp-vars.test File 28.21 KB 0644
sp.test File 191.47 KB 0644
sp_debug.test File 1.03 KB 0644
sp_gis.test File 754 B 0644
sp_notembedded-master.opt File 21 B 0644
sp_notembedded.test File 13.09 KB 0644
sp_stress_case.test File 2.07 KB 0644
sp_sync.test File 4.88 KB 0644
sp_trans.test File 17.08 KB 0644
sp_trans_log.test File 1.35 KB 0644
sp_validation.test File 40.13 KB 0644
sql_mode.test File 12.7 KB 0644
ssl-big.test File 1.68 KB 0644
ssl-sha512-master.opt File 164 B 0644
ssl-sha512.test File 371 B 0644
ssl.test File 1.57 KB 0644
ssl_8k_key-master.opt File 118 B 0644
ssl_8k_key.test File 546 B 0644
ssl_and_innodb.test File 261 B 0644
ssl_ca-master.opt File 160 B 0644
ssl_ca.test File 2.07 KB 0644
ssl_cipher-master.opt File 24 B 0644
ssl_cipher.test File 588 B 0644
ssl_compress.test File 1.04 KB 0644
ssl_connect.test File 339 B 0644
ssl_crl-master.opt File 218 B 0644
ssl_crl.test File 2.47 KB 0644
ssl_crl_clients-master.opt File 234 B 0644
ssl_crl_clients.test File 1.85 KB 0644
ssl_crl_clients_valid-master.opt File 218 B 0644
ssl_crl_clients_valid.test File 1.24 KB 0644
ssl_crl_crlpath-master.opt File 206 B 0644
ssl_crl_crlpath.test File 1.4 KB 0644
ssl_mode.test File 1.78 KB 0644
ssl_mode_no_ssl-master.opt File 11 B 0644
ssl_mode_no_ssl.test File 1.29 KB 0644
ssl_verify_identity-master.opt File 181 B 0644
ssl_verify_identity.test File 4.04 KB 0644
status-master.opt File 24 B 0644
status.test File 12.91 KB 0644
status2.test File 1.54 KB 0644
status_bug17954.test File 1.7 KB 0644
status_debug.test File 1.42 KB 0644
strict-master.opt File 32 B 0644
strict.test File 43.22 KB 0644
strict_autoinc_1myisam.test File 117 B 0644
strict_autoinc_2innodb.test File 152 B 0644
strict_autoinc_3heap.test File 117 B 0644
subquery_all.test File 496 B 0644
subquery_all_bka.test File 173 B 0644
subquery_all_bka_nixbnl.test File 195 B 0644
subquery_bugs.test File 1.7 KB 0644
subquery_mat.test File 576 B 0644
subquery_mat_all.test File 484 B 0644
subquery_mat_none.test File 617 B 0644
subquery_nomat_nosj.test File 564 B 0644
subquery_nomat_nosj_bka.test File 187 B 0644
subquery_nomat_nosj_bka_nixbnl.test File 209 B 0644
subquery_none.test File 609 B 0644
subquery_none_bka.test File 175 B 0644
subquery_none_bka_nixbnl.test File 197 B 0644
subquery_sj_all-master.opt File 22 B 0644
subquery_sj_all.test File 502 B 0644
subquery_sj_all_bka-master.opt File 22 B 0644
subquery_sj_all_bka.test File 179 B 0644
subquery_sj_all_bka_nixbnl-master.opt File 22 B 0644
subquery_sj_all_bka_nixbnl.test File 201 B 0644
subquery_sj_all_bkaunique-master.opt File 22 B 0644
subquery_sj_all_bkaunique.test File 252 B 0644
subquery_sj_dupsweed-master.opt File 22 B 0644
subquery_sj_dupsweed.test File 809 B 0644
subquery_sj_dupsweed_bka-master.opt File 22 B 0644
subquery_sj_dupsweed_bka.test File 189 B 0644
subquery_sj_dupsweed_bka_nixbnl-master.opt File 22 B 0644
subquery_sj_dupsweed_bka_nixbnl.test File 211 B 0644
subquery_sj_dupsweed_bkaunique-master.opt File 22 B 0644
subquery_sj_dupsweed_bkaunique.test File 262 B 0644
subquery_sj_firstmatch-master.opt File 22 B 0644
subquery_sj_firstmatch.test File 2.36 KB 0644
subquery_sj_firstmatch_bka-master.opt File 22 B 0644
subquery_sj_firstmatch_bka.test File 193 B 0644
subquery_sj_firstmatch_bka_nixbnl.test File 215 B 0644
subquery_sj_firstmatch_bkaunique.test File 266 B 0644
subquery_sj_innodb_all.test File 550 B 0644
subquery_sj_innodb_all_bka.test File 193 B 0644
subquery_sj_innodb_all_bka_nixbnl.test File 215 B 0644
subquery_sj_innodb_all_bkaunique.test File 266 B 0644
subquery_sj_innodb_none.test File 663 B 0644
subquery_sj_innodb_none_bka.test File 195 B 0644
subquery_sj_innodb_none_bka_nixbnl.test File 217 B 0644
subquery_sj_innodb_none_bkaunique.test File 268 B 0644
subquery_sj_loosescan.test File 755 B 0644
subquery_sj_loosescan_bka.test File 191 B 0644
subquery_sj_loosescan_bka_nixbnl.test File 213 B 0644
subquery_sj_loosescan_bkaunique.test File 264 B 0644
subquery_sj_mat.test File 761 B 0644
subquery_sj_mat_bka.test File 179 B 0644
subquery_sj_mat_bka_nixbnl.test File 201 B 0644
subquery_sj_mat_bkaunique.test File 252 B 0644
subquery_sj_mat_nosj.test File 595 B 0644
subquery_sj_none.test File 615 B 0644
subquery_sj_none_bka.test File 181 B 0644
subquery_sj_none_bka_nixbnl.test File 203 B 0644
subquery_sj_none_bkaunique.test File 254 B 0644
subselect_debug.test File 508 B 0644
subselect_gis.test File 455 B 0644
subselect_innodb.test File 24.35 KB 0644
subselect_notembedded-master.opt File 33 B 0644
subselect_notembedded.test File 1.73 KB 0644
sum_distinct-big.test File 2 KB 0644
sum_distinct.test File 3.43 KB 0644
symlink.test File 9.68 KB 0644
symlink_windows.test File 2.21 KB 0644
synchronization.test File 1 KB 0644
sysdate_is_now-master.opt File 17 B 0644
sysdate_is_now.test File 297 B 0644
system_mysql_db.test File 452 B 0644
system_mysql_db_fix30020-master.opt File 30 B 0644
system_mysql_db_fix40123-master.opt File 30 B 0644
system_mysql_db_fix40123.test File 9.61 KB 0644
system_mysql_db_fix50030-master.opt File 30 B 0644
system_mysql_db_fix50030.test File 14.11 KB 0644
system_mysql_db_fix50117-master.opt File 30 B 0644
system_mysql_db_fix50117.test File 14.87 KB 0644
system_mysql_db_refs.test File 3.29 KB 0644
table_definition_cache_functionality.test File 8.56 KB 0644
table_open_cache_functionality.test File 12.95 KB 0644
tablelock.test File 1.37 KB 0644
tablespace.test File 5.17 KB 0644
temp_pool-master.opt File 31 B 0644
temp_pool.test File 1.05 KB 0644
temp_table-master.opt File 32 B 0644
temp_table.test File 7.45 KB 0644
temporal_literal.test File 6.05 KB 0644
timezone-master.opt File 15 B 0644
timezone.test File 1.83 KB 0644
timezone2.test File 9.73 KB 0644
timezone3-master.opt File 49 B 0644
timezone3.test File 2.54 KB 0644
timezone4-master.opt File 18 B 0644
timezone4.test File 310 B 0644
timezone_grant.test File 4.51 KB 0644
trans_read_only-master.opt File 29 B 0644
trans_read_only.test File 1.25 KB 0644
trigger-compat.test File 8.38 KB 0644
trigger-trans.test File 7 KB 0644
trigger.test File 73.28 KB 0644
trigger_notembedded.test File 24.73 KB 0644
truncate.test File 3.36 KB 0644
truncate_coverage.test File 5.58 KB 0644
type_binary.test File 3.19 KB 0644
type_bit.test File 12.96 KB 0644
type_bit_innodb.test File 4.53 KB 0644
type_blob.test File 22.43 KB 0644
type_date.test File 13.89 KB 0644
type_datetime.test File 21.45 KB 0644
type_decimal.test File 29.53 KB 0644
type_enum.test File 88.85 KB 0644
type_float.test File 9.26 KB 0644
type_nchar.test File 650 B 0644
type_newdecimal-big.test File 977 B 0644
type_newdecimal.test File 40.46 KB 0644
type_ranges.test File 8.93 KB 0644
type_set.test File 3.27 KB 0644
type_temporal_fractional.test File 287.94 KB 0644
type_temporal_upgrade.test File 3.51 KB 0644
type_time.test File 11.61 KB 0644
type_timestamp-master.opt File 36 B 0644
type_timestamp.test File 18.32 KB 0644
type_timestamp_explicit-master.opt File 34 B 0644
type_timestamp_explicit.test File 1.97 KB 0644
type_uint.test File 294 B 0644
type_varchar.test File 6.63 KB 0644
type_year.test File 4.64 KB 0644
udf-master.opt File 42 B 0644
udf.test File 15.87 KB 0644
udf_services-master.opt File 21 B 0644
udf_services.test File 765 B 0644
udf_skip_grants-master.opt File 41 B 0644
udf_skip_grants.test File 1.25 KB 0644
union-master.opt File 49 B 0644
union.test File 41.49 KB 0644
unsafe_binlog_innodb-master.opt File 67 B 0644
unsafe_binlog_innodb.test File 432 B 0644
update.test File 15.61 KB 0644
upgrade.test File 5.09 KB 0644
user_limits.test File 5.4 KB 0644
user_var-binlog.test File 924 B 0644
user_var.test File 12.64 KB 0644
validate_password_plugin-master.opt File 23 B 0644
validate_password_plugin.test File 11.44 KB 0644
varbinary.test File 2.85 KB 0644
variables-big.test File 1.93 KB 0644
variables-master.opt File 21 B 0644
variables-notembedded-master.opt File 47 B 0644
variables-notembedded.test File 10.74 KB 0644
variables-win.test File 393 B 0644
variables.test File 48.46 KB 0644
variables_community.test File 241 B 0644
variables_debug.test File 2.75 KB 0644
view.test File 114.56 KB 0644
view_alias.test File 4.03 KB 0644
view_grant.test File 63.28 KB 0644
wait_timeout.test File 5.31 KB 0644
warnings-master.opt File 34 B 0644
warnings.test File 5.53 KB 0644
warnings_engine_disabled.test File 762 B 0644
windows.test File 2.21 KB 0644
wl4435_generated.inc File 10.43 KB 0644
wl6219-csv.test File 109 B 0644
wl6219-innodb.test File 112 B 0644
wl6219-memory.test File 112 B 0644
wl6219-merge.test File 111 B 0644
wl6219-myisam.test File 112 B 0644
wl6219-upgrade.test File 3.92 KB 0644
wl6301_1_not_windows-master.opt File 20 B 0644
wl6301_1_not_windows.test File 455 B 0644
wl6301_2_not_windows-master.opt File 43 B 0644
wl6301_2_not_windows.test File 493 B 0644
wl6301_3-master.opt File 52 B 0644
wl6301_3.test File 903 B 0644
wl6443_deprecation-master.opt File 23 B 0644
wl6443_deprecation.test File 3.85 KB 0644
xa.test File 7.87 KB 0644
xml.test File 24.9 KB 0644