mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
WL#1564 Intensive test of prepared statements via 'mysqltest'
BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
parent
b694101fce
commit
f2e036aa5f
18 changed files with 10062 additions and 0 deletions
|
@ -40,6 +40,7 @@ georg@beethoven.local
|
|||
gerberb@ou800.zenez.com
|
||||
gluh@gluh.(none)
|
||||
gluh@gluh.mysql.r18.ru
|
||||
gordon@zero.local.lan
|
||||
greg@gcw.ath.cx
|
||||
greg@mysql.com
|
||||
guilhem@mysql.com
|
||||
|
|
29
mysql-test/include/ps_create.inc
Normal file
29
mysql-test/include/ps_create.inc
Normal file
|
@ -0,0 +1,29 @@
|
|||
############### include/ps_create.inc ##################
|
||||
# #
|
||||
# drop + create the tables used in most PS test cases #
|
||||
# #
|
||||
########################################################
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t_many_col_types ;
|
||||
--enable_warnings
|
||||
|
||||
eval create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = $type ;
|
||||
|
||||
eval create table t_many_col_types
|
||||
(
|
||||
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(14), 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'),
|
||||
primary key(c1)
|
||||
) engine = $type ;
|
207
mysql-test/include/ps_modify.inc
Normal file
207
mysql-test/include/ps_modify.inc
Normal file
|
@ -0,0 +1,207 @@
|
|||
###################### ps_modify.inc #########################
|
||||
# #
|
||||
# Tests for prepared statements: INSERT/DELETE/UPDATE... #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
--disable_query_log
|
||||
select '------ delete tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## delete without parameter
|
||||
prepare stmt1 from 'delete from t1 where a=2' ;
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
# delete with row not found
|
||||
execute stmt1;
|
||||
|
||||
## delete with one parameter in the where clause
|
||||
insert into t1 values(0,NULL);
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from 'delete from t1 where b=?' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b is NULL ;
|
||||
set @arg00='one';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b=@arg00;
|
||||
|
||||
## truncate a table
|
||||
--error 1295
|
||||
prepare stmt1 from 'truncate table t1' ;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ update tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## update without parameter
|
||||
prepare stmt1 from 'update t1 set b=''a=two'' where a=2' ;
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
# dummy update
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
|
||||
## update with one parameter in the set clause
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from 'update t1 set b=? where a=2' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=2;
|
||||
set @arg00='two';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=2;
|
||||
|
||||
## update with one parameter in the where cause
|
||||
set @arg00=2;
|
||||
prepare stmt1 from 'update t1 set b=NULL where a=?' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
update t1 set b='two' where a=@arg00;
|
||||
# row not found in update
|
||||
set @arg00=2000;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
|
||||
## update on primary key column (two parameters)
|
||||
set @arg00=2;
|
||||
set @arg01=22;
|
||||
prepare stmt1 from 'update t1 set a=? where a=?' ;
|
||||
# dummy update
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
execute stmt1 using @arg01, @arg00;
|
||||
select a,b from t1 where a=@arg01;
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select a,b from t1 where a=@arg00;
|
||||
set @arg00=NULL;
|
||||
set @arg01=2;
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select a,b from t1;
|
||||
set @arg00=0;
|
||||
execute stmt1 using @arg01, @arg00;
|
||||
select a,b from t1;
|
||||
|
||||
## update with subquery and several parameters
|
||||
set @arg00=23;
|
||||
set @arg01='two';
|
||||
set @arg02=2;
|
||||
set @arg03='two';
|
||||
set @arg04=2;
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
create table t2 as select a,b from t1 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04 ;
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a not in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
|
||||
select a,b from t1 ;
|
||||
drop table t2 ;
|
||||
|
||||
## update with parameters in limit
|
||||
set @arg00=1;
|
||||
prepare stmt1 from 'update t1 set b=''bla''
|
||||
where a=2
|
||||
limit 1';
|
||||
execute stmt1 ;
|
||||
select a,b from t1 where b = 'bla' ;
|
||||
# currently (May 2004, Version 4.1) it is impossible
|
||||
-- error 1064
|
||||
prepare stmt1 from 'update t1 set b=''bla''
|
||||
where a=2
|
||||
limit ?';
|
||||
|
||||
--disable_query_log
|
||||
select '------ insert tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## insert without parameter
|
||||
prepare stmt1 from 'insert into t1 values(5, ''five'' )';
|
||||
execute stmt1;
|
||||
select a,b from t1 where a = 5;
|
||||
|
||||
## insert with one parameter in values part
|
||||
set @arg00='six' ;
|
||||
prepare stmt1 from 'insert into t1 values(6, ? )';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b = @arg00;
|
||||
# the second insert fails, because the first column is primary key
|
||||
--error 1062
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=NULL ;
|
||||
prepare stmt1 from 'insert into t1 values(0, ? )';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b is NULL;
|
||||
|
||||
## insert with two parameter in values part
|
||||
set @arg00=8 ;
|
||||
set @arg01='eight' ;
|
||||
prepare stmt1 from 'insert into t1 values(?, ? )';
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
select a,b from t1 where b = @arg01;
|
||||
|
||||
## insert with two rows in values part
|
||||
set @arg00=81 ;
|
||||
set @arg01='8-1' ;
|
||||
set @arg02=82 ;
|
||||
set @arg03='8-2' ;
|
||||
prepare stmt1 from 'insert into t1 values(?,?),(?,?)';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
select a,b from t1 where a in (@arg00,@arg02) ;
|
||||
|
||||
## insert with two parameter in the set part
|
||||
set @arg00=9 ;
|
||||
set @arg01='nine' ;
|
||||
prepare stmt1 from 'insert into t1 set a=?, b=? ';
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
|
||||
## insert with parameters in the ON DUPLICATE KEY part
|
||||
set @arg00=6 ;
|
||||
set @arg01=1 ;
|
||||
prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
|
||||
on duplicate key update a=a + ?, b=concat(b,''modified'') ';
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select * from t1;
|
||||
set @arg00=81 ;
|
||||
set @arg01=1 ;
|
||||
--error 1062
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
|
||||
## many parameters
|
||||
set @1000=1000 ;
|
||||
set @x1000_2="x1000_2" ;
|
||||
set @x1000_3="x1000_3" ;
|
||||
|
||||
set @x1000="x1000" ;
|
||||
set @1100=1100 ;
|
||||
set @x1100="x1100" ;
|
||||
set @100=100 ;
|
||||
set @updated="updated" ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
|
||||
on duplicate key update a = a + @100, b = concat(b,@updated) ;
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
prepare stmt1 from ' insert into t1 values(?,?),(?,?)
|
||||
on duplicate key update a = a + ?, b = concat(b,?) ';
|
||||
execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
|
||||
## replace
|
||||
--error 1295
|
||||
prepare stmt1 from ' replace into t1 (a,b) select 100, ''hundred'' ';
|
60
mysql-test/include/ps_modify1.inc
Normal file
60
mysql-test/include/ps_modify1.inc
Normal file
|
@ -0,0 +1,60 @@
|
|||
###################### ps_modify1.inc ########################
|
||||
# #
|
||||
# Tests for prepared statements: big INSERT .. SELECTs #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
## big insert select statements
|
||||
set @duplicate='duplicate ' ;
|
||||
set @1000=1000 ;
|
||||
set @5=5 ;
|
||||
select a,b from t1 where a < 5 ;
|
||||
--enable_info
|
||||
insert into t1 select a + @1000, concat(@duplicate,b) from t1
|
||||
where a < @5 ;
|
||||
--disable_info
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
prepare stmt1 from ' insert into t1 select a + ?, concat(?,b) from t1
|
||||
where a < ? ' ;
|
||||
--enable_info
|
||||
execute stmt1 using @1000, @duplicate, @5;
|
||||
--disable_info
|
||||
select a,b from t1 where a >= 1000 ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
create table t2 like t1 ;
|
||||
--enable_info
|
||||
insert into t2 (b,a)
|
||||
select @duplicate, sum(first.a) from t1 first, t1 second
|
||||
where first.a <> @5 and second.b = first.b
|
||||
and second.b <> @five
|
||||
group by second.b
|
||||
having sum(second.a) > @2
|
||||
union
|
||||
select b, a + @100 from t1
|
||||
where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b
|
||||
from t1);
|
||||
--disable_info
|
||||
select a,b from t2;
|
||||
delete from t2 ;
|
||||
prepare stmt1 from ' insert into t2 (b,a)
|
||||
select ?, sum(first.a)
|
||||
from t1 first, t1 second
|
||||
where first.a <> ? and second.b = first.b and second.b <> ?
|
||||
group by second.b
|
||||
having sum(second.a) > ?
|
||||
union
|
||||
select b, a + ? from t1
|
||||
where (a,b) in ( select sqrt(a+?)+CAST(? AS signed),b
|
||||
from t1 ) ' ;
|
||||
--enable_info
|
||||
execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
|
||||
--disable_info
|
||||
select a,b from t2;
|
||||
drop table t2;
|
587
mysql-test/include/ps_query.inc
Normal file
587
mysql-test/include/ps_query.inc
Normal file
|
@ -0,0 +1,587 @@
|
|||
####################### ps_query.inc #########################
|
||||
# #
|
||||
# Tests for prepared statements: SELECTs #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
|
||||
# Please do not modify (INSERT/UPDATE/DELETE) the content of the tables
|
||||
# t1 and t_many_col_types.
|
||||
# Such tests should be done in include/ps_modify.inc
|
||||
|
||||
--disable_query_log
|
||||
select '------ simple select tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
##### parameter used for keyword like SELECT (must fail)
|
||||
set @arg00='SELECT' ;
|
||||
# mysqltest gives no output for the next statement, Why ??
|
||||
--error 1064
|
||||
@arg00 a from t1 where a=1;
|
||||
--error 1064
|
||||
prepare stmt1 from ' ? a from t1 where a=1 ';
|
||||
|
||||
##### parameter in select column list
|
||||
## parameter is not NULL
|
||||
set @arg00=1 ;
|
||||
select @arg00, b from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, b from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='lion' ;
|
||||
select @arg00, b from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, b from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## parameter is NULL
|
||||
set @arg00=NULL ;
|
||||
select @arg00, b from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, b from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## parameter within an expression
|
||||
set @arg00=1 ;
|
||||
select b, a - @arg00 from t1 where a=1 ;
|
||||
prepare stmt1 from ' select b, a - ? from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## parameter is within a function
|
||||
# variations on 'substr'
|
||||
set @arg00='MySQL' ;
|
||||
select substr(@arg00,1,2) from t1 where a=1 ;
|
||||
prepare stmt1 from ' select substr(?,1,2) from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00=3 ;
|
||||
select substr('MySQL',@arg00,5) from t1 where a=1 ;
|
||||
prepare stmt1 from ' select substr(''MySQL'',?,5) from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
select substr('MySQL',1,@arg00) from t1 where a=1 ;
|
||||
prepare stmt1 from ' select substr(''MySQL'',1,?) from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# variations on 'concat'
|
||||
set @arg00='MySQL' ;
|
||||
select a , concat(@arg00,b) from t1 ;
|
||||
# BUG#3796
|
||||
prepare stmt1 from ' select a , concat(?,b) from t1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
#
|
||||
select a , concat(b,@arg00) from t1 ;
|
||||
prepare stmt1 from ' select a , concat(b,?) from t1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
# variations on 'group_concat'
|
||||
set @arg00='MySQL' ;
|
||||
select group_concat(@arg00,b) from t1
|
||||
group by 'a' ;
|
||||
prepare stmt1 from ' select group_concat(?,b) from t1
|
||||
group by ''a'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
#
|
||||
select group_concat(b,@arg00) from t1
|
||||
group by 'a' ;
|
||||
prepare stmt1 from ' select group_concat(b,?) from t1
|
||||
group by ''a'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
## two parameters
|
||||
set @arg00='first' ;
|
||||
set @arg01='second' ;
|
||||
set @arg02=NULL;
|
||||
select @arg00, @arg01 from t1 where a=1 ;
|
||||
prepare stmt1 from ' select ?, ? from t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
# NULL as first and/or last parameter
|
||||
execute stmt1 using @arg02, @arg01 ;
|
||||
execute stmt1 using @arg00, @arg02 ;
|
||||
execute stmt1 using @arg02, @arg02 ;
|
||||
# case derived from client_test.c: test_ps_conj_select()
|
||||
# for BUG#3420: select returned all rows of the table
|
||||
--disable_warnings
|
||||
drop table if exists new_tab ;
|
||||
--enable_warnings
|
||||
create table new_tab (id1 int(11) not null default '0',
|
||||
value2 varchar(100), value1 varchar(100)) ;
|
||||
insert into new_tab values (1,'hh','hh'),(2,'hh','hh'),
|
||||
(1,'ii','ii'),(2,'ii','ii') ;
|
||||
prepare stmt1 from ' select id1,value1 from new_tab where id1=? or value1=? ' ;
|
||||
set @arg00=1 ;
|
||||
set @arg01='hh' ;
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
drop table new_tab ;
|
||||
# case derived from client_test.c: test_bug1180()
|
||||
# for BUG#1180 optimized away part of WHERE clause
|
||||
--disable_warnings
|
||||
drop table if exists new_tab ;
|
||||
--enable_warnings
|
||||
create table new_tab(session_id char(9) not null) ;
|
||||
insert into new_tab values ('abc') ;
|
||||
prepare stmt1 from ' select * from new_tab
|
||||
where ?=''1111'' and session_id = ''abc'' ' ;
|
||||
set @arg00='abc' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='1111' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='abc' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
drop table new_tab ;
|
||||
|
||||
|
||||
##### parameter used for keyword FROM (must fail)
|
||||
set @arg00='FROM' ;
|
||||
--error 1064
|
||||
select a @arg00 t1 where a=1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a ? t1 where a=1 ' ;
|
||||
##### parameter used for tablename (must fail)
|
||||
set @arg00='t1' ;
|
||||
--error 1064
|
||||
select a from @arg00 where a=1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a from ? where a=1 ' ;
|
||||
##### parameter used for keyword WHERE tablename (must fail)
|
||||
set @arg00='WHERE' ;
|
||||
--error 1064
|
||||
select a from t1 @arg00 a=1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a from t1 ? a=1 ' ;
|
||||
|
||||
##### parameter used in where clause
|
||||
# parameter is not NULL
|
||||
set @arg00=1 ;
|
||||
select a FROM t1 where a=@arg00 ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00=1000 ;
|
||||
# row not found
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter is NULL
|
||||
set @arg00=NULL ;
|
||||
select a FROM t1 where a=@arg00 ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter is not NULL within a function
|
||||
set @arg00=4 ;
|
||||
select a FROM t1 where a=sqrt(@arg00) ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=sqrt(?) ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter is NULL within a function
|
||||
set @arg00=NULL ;
|
||||
select a FROM t1 where a=sqrt(@arg00) ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=sqrt(?) ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
# parameter in IN
|
||||
set @arg00=2 ;
|
||||
set @arg01=3 ;
|
||||
select a FROM t1 where a in (@arg00,@arg01);
|
||||
prepare stmt1 from ' select a FROM t1 where a in (?,?) ';
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
# parameter in LIKE
|
||||
prepare stmt1 from ' select b FROM t1 where b like ? ';
|
||||
set @arg00='two' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='tw%' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
set @arg00='%wo' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
|
||||
##### parameter used for operator in WHERE clause (must fail)
|
||||
set @arg00='>' ;
|
||||
--error 1064
|
||||
select a FROM t1 where a @arg00 1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a FROM t1 where a ? 1 ' ;
|
||||
|
||||
##### parameter used in group by clause
|
||||
set @arg00=1 ;
|
||||
select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL group by a - @arg00 ;
|
||||
prepare stmt1 from ' select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL group by a - ? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
|
||||
##### parameter used in having clause
|
||||
set @arg00='two' ;
|
||||
select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL having b <> @arg00 ;
|
||||
prepare stmt1 from ' select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL having b <> ? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
|
||||
##### parameter used in order clause
|
||||
set @arg00=1 ;
|
||||
select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL order by a - @arg00 ;
|
||||
prepare stmt1 from ' select a,b FROM t1 where a is not NULL
|
||||
AND b is not NULL order by a - ? ' ;
|
||||
execute stmt1 using @arg00 ;
|
||||
## What is the semantic of a single parameter (integer >0)
|
||||
# after order by? column number or constant
|
||||
set @arg00=2 ;
|
||||
select a,b from t1 order by 2 ;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
order by ? ';
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
##### parameter used in limit clause
|
||||
set @arg00=1;
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit 1 ';
|
||||
execute stmt1 ;
|
||||
# currently (May 2004, Version 4.1) it is impossible
|
||||
-- error 1064
|
||||
prepare stmt1 from ' select a,b from t1
|
||||
limit ? ';
|
||||
|
||||
##### parameter used in many places
|
||||
set @arg00='b' ;
|
||||
set @arg01=0 ;
|
||||
set @arg02=2 ;
|
||||
set @arg03=2 ;
|
||||
select sum(a), @arg00 from t1 where a > @arg01
|
||||
and b is not null group by substr(b,@arg02)
|
||||
having sum(a) <> @arg03 ;
|
||||
prepare stmt1 from ' select sum(a), ? from t1 where a > ?
|
||||
and b is not null group by substr(b,?)
|
||||
having sum(a) <> ? ';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ join tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
# no parameter
|
||||
select first.a as a1, second.a as a2
|
||||
from t1 first, t1 second
|
||||
where first.a = second.a ;
|
||||
prepare stmt1 from ' select first.a as a1, second.a as a2
|
||||
from t1 first, t1 second
|
||||
where first.a = second.a ';
|
||||
execute stmt1 ;
|
||||
|
||||
# some parameters
|
||||
set @arg00='ABC';
|
||||
set @arg01='two';
|
||||
set @arg02='one';
|
||||
select first.a, @arg00, second.a FROM t1 first, t1 second
|
||||
where @arg01 = first.b or first.a = second.a or second.b = @arg02;
|
||||
prepare stmt1 from ' select first.a, ?, second.a FROM t1 first, t1 second
|
||||
where ? = first.b or first.a = second.a or second.b = ? ';
|
||||
execute stmt1 using @arg00, @arg01, @arg02;
|
||||
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ subquery tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = ''two'') ';
|
||||
execute stmt1 ;
|
||||
|
||||
###### parameter in the outer part
|
||||
set @arg00='two' ;
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = 'two' ) and b=@arg00 ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = ''two'') and b=? ';
|
||||
execute stmt1 using @arg00;
|
||||
###### parameter in the inner part
|
||||
set @arg00='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = @arg00 ) and b='two' ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = ? ) and b=''two'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=3 ;
|
||||
set @arg01='three' ;
|
||||
select a,b FROM t1 where (a,b) in (select 3, 'three');
|
||||
select a FROM t1 where (a,b) in (select @arg00,@arg01);
|
||||
prepare stmt1 from ' select a FROM t1 where (a,b) in (select ?, ?) ';
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
|
||||
###### parameters in the both parts
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
set @arg02=2 ;
|
||||
set @arg03='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, @arg00, b FROM t1 outer_table where
|
||||
b=@arg01 and a = (select @arg02 from t1 where b = @arg03 ) ;
|
||||
prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
||||
b=? and a = (select ? from t1 where b = ? ) ' ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
|
||||
######## correlated subquery
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) ';
|
||||
# also Bug#4000 (only BDB tables) ??
|
||||
execute stmt1 ;
|
||||
|
||||
###### parameter in the outer part
|
||||
set @arg00='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b ) and b=@arg00 ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where b = outer_table.b) and b=? ';
|
||||
# also Bug#4000 (only BDB tables) ??
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
###### parameter in the inner part
|
||||
set @arg00=2 ;
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where a = @arg00 and b = outer_table.b) and b='two' ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where a = ? and b = outer_table.b) and b=''two'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
set @arg00=2 ;
|
||||
select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where outer_table.a = @arg00 and a=2) and b='two' ;
|
||||
prepare stmt1 from ' select a, b FROM t1 outer_table where
|
||||
a = (select a from t1 where outer_table.a = ? and a=2) and b=''two'' ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
###### parameters in the both parts
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
set @arg02=2 ;
|
||||
set @arg03='two' ;
|
||||
# Bug#4000 (only BDB tables)
|
||||
select a, @arg00, b FROM t1 outer_table where
|
||||
b=@arg01 and a = (select @arg02 from t1 where outer_table.b = @arg03
|
||||
and outer_table.a=a ) ;
|
||||
prepare stmt1 from ' select a, ?, b FROM t1 outer_table where
|
||||
b=? and a = (select ? from t1 where outer_table.b = ?
|
||||
and outer_table.a=a ) ' ;
|
||||
# also Bug#4000 (only BDB tables) ??
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
|
||||
###### subquery after from
|
||||
set @arg00=1 ;
|
||||
set @arg01=0 ;
|
||||
select a, @arg00
|
||||
from ( select a - @arg00 as a from t1 where a=@arg00 ) as t2
|
||||
where a=@arg01;
|
||||
prepare stmt1 from ' select a, ?
|
||||
from ( select a - ? as a from t1 where a=? ) as t2
|
||||
where a=? ';
|
||||
execute stmt1 using @arg00, @arg00, @arg00, @arg01 ;
|
||||
|
||||
###### heavy modified case derived from client_test.c: test_distinct()
|
||||
## no parameters
|
||||
--disable_warnings
|
||||
drop table if exists t2 ;
|
||||
--enable_warnings
|
||||
create table t2 as select * from t_many_col_types;
|
||||
#insert into t2 select * from t_many_col_types;
|
||||
set @stmt= ' SELECT
|
||||
(SELECT SUM(c1 + c12 + 0.0) FROM t2
|
||||
where (t_many_col_types.c2 - 0e-3) = t2.c2
|
||||
GROUP BY t_many_col_types.c15 LIMIT 1) as scalar_s,
|
||||
exists (select 1.0e+0 from t2
|
||||
where t2.c3 * 9.0000000000 = t_many_col_types.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 t_many_col_types,
|
||||
(select c25 x, c32 y from t2) tt WHERE x = c25 ' ;
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 ;
|
||||
--disable_metadata
|
||||
execute stmt1 ;
|
||||
set @stmt= concat('explain ',@stmt);
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 ;
|
||||
--disable_metadata
|
||||
execute stmt1 ;
|
||||
## many parameters
|
||||
set @stmt= ' SELECT
|
||||
(SELECT SUM(c1+c12+?) FROM t2 where (t_many_col_types.c2-?)=t2.c2
|
||||
GROUP BY t_many_col_types.c15 LIMIT 1) as scalar_s,
|
||||
exists (select ? from t2
|
||||
where t2.c3*?=t_many_col_types.c4) as exists_s,
|
||||
c5*? in (select c6+? from t2) as in_s,
|
||||
(c7-?, c8-?) in (select c9+?, c10+? from t2) as in_row_s
|
||||
FROM t_many_col_types,
|
||||
(select c25 x, c32 y from t2) tt WHERE x =c25 ' ;
|
||||
set @arg00= 0.0 ;
|
||||
set @arg01= 0e-3 ;
|
||||
set @arg02= 1.0e+0 ;
|
||||
set @arg03= 9.0000000000 ;
|
||||
set @arg04= 4 ;
|
||||
set @arg05= 0.3e+1 ;
|
||||
set @arg06= 4 ;
|
||||
set @arg07= 4 ;
|
||||
set @arg08= 4.0 ;
|
||||
set @arg09= 40e-1 ;
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
--disable_metadata
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
set @stmt= concat('explain ',@stmt);
|
||||
--enable_metadata
|
||||
prepare stmt1 from @stmt ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
--disable_metadata
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06,
|
||||
@arg07, @arg08, @arg09 ;
|
||||
drop table t2 ;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ union tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
# no parameter
|
||||
prepare stmt1 from ' select a FROM t1 where a=1
|
||||
union distinct
|
||||
select a FROM t1 where a=1 ';
|
||||
execute stmt1 ;
|
||||
# Bug#3577: the second execute crashes mysqld
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' select a FROM t1 where a=1
|
||||
union all
|
||||
select a FROM t1 where a=1 ';
|
||||
execute stmt1 ;
|
||||
|
||||
##### everything in the first table
|
||||
# one parameter as constant in the first table
|
||||
set @arg00=1 ;
|
||||
select @arg00 FROM t1 where a=1
|
||||
union distinct
|
||||
select 1 FROM t1 where a=1;
|
||||
prepare stmt1 from ' select ? FROM t1 where a=1
|
||||
union distinct
|
||||
select 1 FROM t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
##### everything in the second table
|
||||
# one parameter as constant
|
||||
set @arg00=1 ;
|
||||
select 1 FROM t1 where a=1
|
||||
union distinct
|
||||
select @arg00 FROM t1 where a=1;
|
||||
prepare stmt1 from ' select 1 FROM t1 where a=1
|
||||
union distinct
|
||||
select ? FROM t1 where a=1 ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
# one parameter in every table
|
||||
set @arg00='a' ;
|
||||
select @arg00 FROM t1 where a=1
|
||||
union distinct
|
||||
select @arg00 FROM t1 where a=1;
|
||||
prepare stmt1 from ' select ? FROM t1 where a=1
|
||||
union distinct
|
||||
select ? FROM t1 where a=1 ';
|
||||
# BUG#3811 wrong result, prepared statement, union,
|
||||
# parameter in result column list
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
prepare stmt1 from ' select ?
|
||||
union distinct
|
||||
select ? ';
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
|
||||
# many parameters
|
||||
set @arg00='a' ;
|
||||
set @arg01=1 ;
|
||||
set @arg02='a' ;
|
||||
set @arg03=2 ;
|
||||
select @arg00 FROM t1 where a=@arg01
|
||||
union distinct
|
||||
select @arg02 FROM t1 where a=@arg03;
|
||||
prepare stmt1 from ' select ? FROM t1 where a=?
|
||||
union distinct
|
||||
select ? FROM t1 where a=? ' ;
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03;
|
||||
|
||||
## increased complexity
|
||||
|
||||
set @arg00=1 ;
|
||||
# Bug#3686 the wrong server response was 1140 Mixing of GROUP columns ..
|
||||
prepare stmt1 from ' select sum(a) + 200, ? from t1
|
||||
union distinct
|
||||
select sum(a) + 200, 1 from t1
|
||||
group by b ' ;
|
||||
execute stmt1 using @arg00;
|
||||
|
||||
set @Oporto='Oporto' ;
|
||||
set @Lisboa='Lisboa' ;
|
||||
set @0=0 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @3=3 ;
|
||||
set @4=4 ;
|
||||
select @Oporto,@Lisboa,@0,@1,@2,@3,@4 ;
|
||||
|
||||
## union + group by
|
||||
select sum(a) + 200 as the_sum, @Oporto as the_town from t1
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, @Lisboa from t1
|
||||
group by b ;
|
||||
|
||||
prepare stmt1 from ' select sum(a) + 200 as the_sum, ? as the_town from t1
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, ? from t1
|
||||
group by b ' ;
|
||||
execute stmt1 using @Oporto, @Lisboa;
|
||||
|
||||
|
||||
## union + where + group by
|
||||
select sum(a) + 200 as the_sum, @Oporto as the_town from t1
|
||||
where a > @1
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, @Lisboa from t1
|
||||
where a > @2
|
||||
group by b ;
|
||||
|
||||
prepare stmt1 from ' select sum(a) + 200 as the_sum, ? as the_town from t1
|
||||
where a > ?
|
||||
group by b
|
||||
union distinct
|
||||
select sum(a) + 200, ? from t1
|
||||
where a > ?
|
||||
group by b ' ;
|
||||
execute stmt1 using @Oporto, @1, @Lisboa, @2;
|
||||
|
||||
## union + where + group by + having
|
||||
select sum(a) + 200 as the_sum, @Oporto as the_town from t1
|
||||
where a > @1
|
||||
group by b
|
||||
having avg(a) > @2
|
||||
union distinct
|
||||
select sum(a) + 200, @Lisboa from t1
|
||||
where a > @2
|
||||
group by b
|
||||
having avg(a) > @3;
|
||||
|
||||
prepare stmt1 from ' select sum(a) + 200 as the_sum, ? as the_town from t1
|
||||
where a > ?
|
||||
group by b
|
||||
having avg(a) > ?
|
||||
union distinct
|
||||
select sum(a) + 200, ? from t1
|
||||
where a > ?
|
||||
group by b
|
||||
having avg(a) > ? ';
|
||||
execute stmt1 using @Oporto, @1, @2, @Lisboa, @2, @3;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ explain select tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
prepare stmt1 from ' select * from t_many_col_types ' ;
|
||||
--enable_metadata
|
||||
execute stmt1;
|
||||
--disable_metadata
|
||||
|
||||
|
34
mysql-test/include/ps_renew.inc
Normal file
34
mysql-test/include/ps_renew.inc
Normal file
|
@ -0,0 +1,34 @@
|
|||
################ include/ps_renew.inc #################
|
||||
# #
|
||||
# renew the content of t1 and t_many_col_types #
|
||||
# #
|
||||
#######################################################
|
||||
|
||||
# truncate could not be used, because it is not supported
|
||||
# in tables of type MERGE
|
||||
delete from t1 ;
|
||||
insert into t1 values (1,'one');
|
||||
insert into t1 values (2,'two');
|
||||
insert into t1 values (3,'three');
|
||||
insert into t1 values (4,'four');
|
||||
commit ;
|
||||
|
||||
delete from t_many_col_types ;
|
||||
insert into t_many_col_types
|
||||
set c1= 1, c2= 1, c3= 1, c4= 1, c5= 1, c6= 1, c7= 1, c8= 1, c9= 1,
|
||||
c10= 1, c11= 1, c12 = 1,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=true, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='one', c32= 'monday';
|
||||
insert into t_many_col_types
|
||||
set c1= 9, c2= 9, c3= 9, c4= 9, c5= 9, c6= 9, c7= 9, c8= 9, c9= 9,
|
||||
c10= 9, c11= 9, c12 = 9,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=false, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='two', c32= 'tuesday';
|
745
mysql-test/r/ps_1general.result
Normal file
745
mysql-test/r/ps_1general.result
Normal file
|
@ -0,0 +1,745 @@
|
|||
use test;
|
||||
test_sequence
|
||||
------ basic tests ------
|
||||
drop table if exists t1, t_many_col_types ;
|
||||
create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = 'MYISAM' ;
|
||||
create table t_many_col_types
|
||||
(
|
||||
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(14), 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'),
|
||||
primary key(c1)
|
||||
) engine = 'MYISAM' ;
|
||||
delete from t1 ;
|
||||
insert into t1 values (1,'one');
|
||||
insert into t1 values (2,'two');
|
||||
insert into t1 values (3,'three');
|
||||
insert into t1 values (4,'four');
|
||||
commit ;
|
||||
delete from t_many_col_types ;
|
||||
insert into t_many_col_types
|
||||
set c1= 1, c2= 1, c3= 1, c4= 1, c5= 1, c6= 1, c7= 1, c8= 1, c9= 1,
|
||||
c10= 1, c11= 1, c12 = 1,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=true, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='one', c32= 'monday';
|
||||
insert into t_many_col_types
|
||||
set c1= 9, c2= 9, c3= 9, c4= 9, c5= 9, c6= 9, c7= 9, c8= 9, c9= 9,
|
||||
c10= 9, c11= 9, c12 = 9,
|
||||
c13= '2004-02-29', c14= '2004-02-29 11:11:11', c15= '2004-02-29 11:11:11',
|
||||
c16= '11:11:11', c17= '2004',
|
||||
c18= 1, c19=false, c20= 'a', c21= '123456789a',
|
||||
c22= '123456789a123456789b123456789c', c23= 'tinyblob', c24= 'tinytext',
|
||||
c25= 'blob', c26= 'text', c27= 'mediumblob', c28= 'mediumtext',
|
||||
c29= 'longblob', c30= 'longtext', c31='two', c32= 'tuesday';
|
||||
PREPARE stmt FROM ' select * from t1 where a = ? ' ;
|
||||
SET @var= 2 ;
|
||||
EXECUTE stmt USING @var ;
|
||||
a b
|
||||
2 two
|
||||
select * from t1 where a = @var ;
|
||||
a b
|
||||
2 two
|
||||
DEALLOCATE PREPARE stmt ;
|
||||
prepare stmt1 from ' select 1 as my_col ' ;
|
||||
prepare stmt1 from ' select ? as my_col ' ;
|
||||
prepare ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare stmt1 ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare stmt1 from ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare_garbage stmt1 from ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'prepare_garbage stmt1 from ' select 1 '' at line 1
|
||||
prepare stmt1 from_garbage ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from_garbage ' select 1 '' at line 1
|
||||
prepare stmt1 from ' select_garbage 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select_garbage 1' at line 1
|
||||
prepare from ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from ' select 1 '' at line 1
|
||||
prepare stmt1 ' select 1 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' select 1 '' at line 1
|
||||
prepare ? from ' select ? as my_col ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? from ' select ? as my_col '' at line 1
|
||||
set @arg00='select 1 as my_col';
|
||||
prepare stmt1 from @arg00;
|
||||
set @arg00='';
|
||||
prepare stmt1 from @arg00;
|
||||
ERROR 42000: Query was empty
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from @arg01;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
prepare stmt1 from ' select * from t1 where x <= 2 ' ;
|
||||
ERROR 42S22: Unknown column 'x' in 'where clause'
|
||||
drop table if exists not_exist ;
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
ERROR 42S02: Table 'test.not_exist' doesn't exist
|
||||
prepare stmt1 from ' insert into t1 values(? ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
prepare stmt1 from ' select a, b from t1
|
||||
where a=? and where ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where' at line 2
|
||||
execute never_prepared ;
|
||||
ERROR HY000: Unknown prepared statement handler (never_prepared) given to EXECUTE
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
ERROR 42S02: Table 'test.not_exist' doesn't exist
|
||||
execute stmt1 ;
|
||||
ERROR HY000: Unknown prepared statement handler (stmt1) given to EXECUTE
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 1, 'original table', 1);
|
||||
prepare stmt2 from ' select * from to_be_dropped ' ;
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
1 original table 1
|
||||
drop table to_be_dropped ;
|
||||
execute stmt2 ;
|
||||
ERROR 42S02: Table 'test.to_be_dropped' doesn't exist
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
c int,
|
||||
b char(30)
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int,
|
||||
d timestamp default current_timestamp
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
d timestamp default current_timestamp,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
9 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a timestamp default '2004-02-29 18:01:59',
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( b, c) values( 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
a b c
|
||||
2004-02-29 18:01:59 recreated table 9
|
||||
drop table to_be_dropped ;
|
||||
create table to_be_dropped
|
||||
(
|
||||
f1 int primary key,
|
||||
f2 char(30),
|
||||
f3 int
|
||||
);
|
||||
insert into to_be_dropped( f1, f2, f3) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
ERROR 42S22: Unknown column 'to_be_dropped.a' in 'field list'
|
||||
drop table to_be_dropped ;
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
execute stmt1 ;
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
prepare stmt1 from ' select * from t1 where a <= ? ' ;
|
||||
execute stmt1 using @arg00;
|
||||
a b
|
||||
1 one
|
||||
execute stmt1 ;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
ERROR HY000: Incorrect arguments to EXECUTE
|
||||
execute stmt1 using @not_set;
|
||||
a b
|
||||
deallocate prepare never_prepared ;
|
||||
ERROR HY000: Unknown prepared statement handler (never_prepared) given to DEALLOCATE PREPARE
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
ERROR 42S02: Table 'test.not_exist' doesn't exist
|
||||
deallocate prepare stmt1;
|
||||
ERROR HY000: Unknown prepared statement handler (stmt1) given to DEALLOCATE PREPARE
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(10)
|
||||
);
|
||||
prepare stmt2 from ' select a,b from to_be_dropped where a <= 2 ' ;
|
||||
drop table to_be_dropped ;
|
||||
deallocate prepare stmt2;
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select b from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
b
|
||||
one
|
||||
two
|
||||
execute stmt1 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select a from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
execute stmt1 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
deallocate prepare stmt1 ;
|
||||
execute stmt2 ;
|
||||
a
|
||||
1
|
||||
2
|
||||
test_sequence
|
||||
------ show and misc tests ------
|
||||
drop table if exists t2;
|
||||
create table t2
|
||||
(
|
||||
a int primary key, b char(10)
|
||||
);
|
||||
prepare stmt4 from ' show databases ';
|
||||
execute stmt4;
|
||||
Database
|
||||
mysql
|
||||
test
|
||||
prepare stmt4 from ' show tables from test like ''t2%'' ';
|
||||
execute stmt4;
|
||||
Tables_in_test (t2%)
|
||||
t2
|
||||
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
|
||||
execute stmt4;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) PRI 0
|
||||
create index t2_idx on t2(b);
|
||||
prepare stmt4 from ' show index from t2 from test ';
|
||||
execute stmt4;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t2 0 PRIMARY 1 a A 0 NULL NULL BTREE
|
||||
t2 1 t2_idx 1 b A NULL NULL NULL YES BTREE
|
||||
prepare stmt4 from ' show table status from test like ''t2%'' ';
|
||||
execute stmt4;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t2 MyISAM 9 Fixed 0 0 0 64424509439 1024 0 NULL # # # latin1_swedish_ci NULL
|
||||
prepare stmt4 from ' show table status from test like ''t_many_col_types%'' ';
|
||||
execute stmt4;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t_many_col_types MyISAM 9 Dynamic 2 220 440 4294967295 2048 0 NULL # # # latin1_swedish_ci NULL
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
execute stmt4;
|
||||
Variable_name Value
|
||||
Threads_running 1
|
||||
prepare stmt4 from ' show variables like ''sql_mode'' ';
|
||||
execute stmt4;
|
||||
Variable_name Value
|
||||
sql_mode
|
||||
prepare stmt4 from ' show engine bdb logs ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show full processlist ';
|
||||
execute stmt4;
|
||||
Id User Host db Command Time State Info
|
||||
number root localhost test Query 0 NULL show full processlist
|
||||
prepare stmt4 from ' show grants for user ';
|
||||
prepare stmt4 from ' show create table t2 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show master status ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show master logs ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show slave status ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show warnings limit 20 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show errors limit 20 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' show storage engines ';
|
||||
execute stmt4;
|
||||
Engine Support Comment
|
||||
MyISAM YES/NO Default type from 3.23 with great performance
|
||||
HEAP YES/NO Hash based, stored in memory, useful for temporary tables
|
||||
MEMORY YES/NO Alias for HEAP
|
||||
MERGE YES/NO Collection of identical MyISAM tables
|
||||
MRG_MYISAM YES/NO Alias for MERGE
|
||||
ISAM YES/NO Obsolete table type; Is replaced by MyISAM
|
||||
MRG_ISAM YES/NO Obsolete table type; Is replaced by MRG_MYISAM
|
||||
InnoDB YES/NO Supports transactions, row-level locking and foreign keys
|
||||
INNOBASE YES/NO Alias for INNODB
|
||||
BDB YES/NO Supports transactions and page-level locking
|
||||
BERKELEYDB YES/NO Alias for BDB
|
||||
NDBCLUSTER YES/NO Clustered, fault tolerant memory based tables
|
||||
NDB YES/NO Alias for NDBCLUSTER
|
||||
EXAMPLE YES/NO Example storage engine
|
||||
ARCHIVE YES/NO Archive storage engine
|
||||
drop table if exists tx;
|
||||
prepare stmt1 from ' drop table if exists tx ' ;
|
||||
execute stmt1 ;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'tx'
|
||||
prepare stmt1 from ' drop table tx ' ;
|
||||
execute stmt1 ;
|
||||
ERROR 42S02: Unknown table 'tx'
|
||||
prepare stmt1 from ' prepare stmt2 from '' select 1 '' ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' select 1 '' at line 1
|
||||
prepare stmt1 from ' execute stmt2 ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'stmt2' at line 1
|
||||
prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'never_prepared' at line 1
|
||||
prepare stmt4 from ' use test ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' create database drop_me ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
create database drop_me ;
|
||||
prepare stmt3 from ' drop database drop_me ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop database drop_me ;
|
||||
prepare stmt3 from ' grant all on test.t1 to drop_user@localhost
|
||||
identified by ''looser'' ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
grant all on test.t1 to drop_user@localhost
|
||||
identified by 'looser' ;
|
||||
prepare stmt3 from ' revoke all privileges on test.t1 from
|
||||
drop_user@localhost ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
revoke all privileges on test.t1 from drop_user@localhost ;
|
||||
prepare stmt3 from ' drop user drop_user@localhost ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop user drop_user@localhost;
|
||||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) PRI 0
|
||||
b char(10) YES MUL NULL
|
||||
drop table t2 ;
|
||||
execute stmt3;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
prepare stmt3 from ' lock tables t1 read ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' unlock tables ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' load data infile ''data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' optimize table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' analyze table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' checksum table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' repair table t1 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' handler t1 open ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' commit ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' rollback ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt4 from ' SET sql_mode=ansi ';
|
||||
execute stmt4;
|
||||
select 'a' || 'b' ;
|
||||
'a' || 'b'
|
||||
ab
|
||||
prepare stmt4 from ' SET sql_mode="" ';
|
||||
execute stmt4;
|
||||
select 'a' || 'b' ;
|
||||
'a' || 'b'
|
||||
0
|
||||
prepare stmt5 from ' select ''a'' || ''b'' ' ;
|
||||
execute stmt5;
|
||||
'a' || 'b'
|
||||
0
|
||||
SET sql_mode=ansi;
|
||||
execute stmt5;
|
||||
'a' || 'b'
|
||||
0
|
||||
SET sql_mode="";
|
||||
prepare stmt1 from ' flush local privileges ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' reset query cache ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' KILL 0 ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt1 from ' explain select a from t1 order by b ';
|
||||
execute stmt1;
|
||||
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def id 8 3 1 N 32801 0 8
|
||||
def select_type 253 19 6 N 1 31 63
|
||||
def table 253 64 2 N 1 31 63
|
||||
def type 253 10 3 N 1 31 63
|
||||
def possible_keys 253 4096 0 Y 0 31 63
|
||||
def key 253 64 0 Y 0 31 63
|
||||
def key_len 8 3 0 Y 32800 0 8
|
||||
def ref 253 1024 0 Y 0 31 63
|
||||
def rows 8 10 1 N 32801 0 8
|
||||
def Extra 253 255 14 N 1 31 63
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
|
||||
SET @arg00=1 ;
|
||||
prepare stmt1 from ' explain select a from t1 where a > ? order by b ';
|
||||
execute stmt1 using @arg00;
|
||||
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def id 8 3 1 N 32801 0 8
|
||||
def select_type 253 19 6 N 1 31 63
|
||||
def table 253 64 2 N 1 31 63
|
||||
def type 253 10 5 N 1 31 63
|
||||
def possible_keys 253 4096 7 Y 0 31 63
|
||||
def key 253 64 7 Y 0 31 63
|
||||
def key_len 8 3 1 Y 32800 0 8
|
||||
def ref 253 1024 0 Y 0 31 63
|
||||
def rows 8 10 1 N 32801 0 8
|
||||
def Extra 253 255 27 N 1 31 63
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
||||
test_sequence
|
||||
------ create/drop/alter/rename tests ------
|
||||
drop table if exists t2, t3;
|
||||
prepare stmt_drop from ' drop table if exists t2 ' ;
|
||||
execute stmt_drop;
|
||||
prepare stmt_create from ' create table t2 (
|
||||
a int primary key, b char(10)) ';
|
||||
execute stmt_create;
|
||||
prepare stmt3 from ' create table t3 like t2 ';
|
||||
execute stmt3;
|
||||
drop table t3;
|
||||
set @arg00=1;
|
||||
prepare stmt3 from ' create table t3 (m int) select ? as m ' ;
|
||||
execute stmt3 using @arg00;
|
||||
select m from t3;
|
||||
m
|
||||
1
|
||||
drop table t3;
|
||||
prepare stmt3 from ' create index t2_idx on t2(b) ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' drop index t2_idx on t2 ' ;
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
prepare stmt3 from ' alter table t2 drop primary key ';
|
||||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||||
drop table if exists new_t2;
|
||||
prepare stmt3 from ' rename table t2 to new_t2 ';
|
||||
execute stmt3;
|
||||
execute stmt3;
|
||||
ERROR 42S01: Table 'new_t2' already exists
|
||||
rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
test_sequence
|
||||
------ big statement tests ------
|
||||
select 'ABC' as my_const_col from t1 where
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ' ;
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' ';
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
execute stmt1 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
set @arg00= 1;
|
||||
set @arg01= 1;
|
||||
set @arg02= 1;
|
||||
set @arg03= 1;
|
||||
set @arg04= 1;
|
||||
set @arg05= 1;
|
||||
set @arg06= 1;
|
||||
set @arg07= 1;
|
||||
set @arg10= 1;
|
||||
set @arg11= 1;
|
||||
set @arg12= 1;
|
||||
set @arg13= 1;
|
||||
set @arg14= 1;
|
||||
set @arg15= 1;
|
||||
set @arg16= 1;
|
||||
set @arg17= 1;
|
||||
set @arg20= 1;
|
||||
set @arg21= 1;
|
||||
set @arg22= 1;
|
||||
set @arg23= 1;
|
||||
set @arg24= 1;
|
||||
set @arg25= 1;
|
||||
set @arg26= 1;
|
||||
set @arg27= 1;
|
||||
set @arg30= 1;
|
||||
set @arg31= 1;
|
||||
set @arg32= 1;
|
||||
set @arg33= 1;
|
||||
set @arg34= 1;
|
||||
set @arg35= 1;
|
||||
set @arg36= 1;
|
||||
set @arg37= 1;
|
||||
set @arg40= 1;
|
||||
set @arg41= 1;
|
||||
set @arg42= 1;
|
||||
set @arg43= 1;
|
||||
set @arg44= 1;
|
||||
set @arg45= 1;
|
||||
set @arg46= 1;
|
||||
set @arg47= 1;
|
||||
set @arg50= 1;
|
||||
set @arg51= 1;
|
||||
set @arg52= 1;
|
||||
set @arg53= 1;
|
||||
set @arg54= 1;
|
||||
set @arg55= 1;
|
||||
set @arg56= 1;
|
||||
set @arg57= 1;
|
||||
set @arg60= 1;
|
||||
set @arg61= 1;
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? ' ;
|
||||
execute stmt1 using
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
execute stmt1 using
|
||||
@arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07,
|
||||
@arg10, @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17,
|
||||
@arg20, @arg21, @arg22, @arg23, @arg24, @arg25, @arg26, @arg27,
|
||||
@arg30, @arg31, @arg32, @arg33, @arg34, @arg35, @arg36, @arg37,
|
||||
@arg40, @arg41, @arg42, @arg43, @arg44, @arg45, @arg46, @arg47,
|
||||
@arg50, @arg51, @arg52, @arg53, @arg54, @arg55, @arg56, @arg57,
|
||||
@arg60, @arg61 ;
|
||||
my_const_col
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
ABC
|
||||
drop table t1 ;
|
1269
mysql-test/r/ps_2myisam.result
Normal file
1269
mysql-test/r/ps_2myisam.result
Normal file
File diff suppressed because it is too large
Load diff
1269
mysql-test/r/ps_3innodb.result
Normal file
1269
mysql-test/r/ps_3innodb.result
Normal file
File diff suppressed because it is too large
Load diff
1270
mysql-test/r/ps_4heap.result
Normal file
1270
mysql-test/r/ps_4heap.result
Normal file
File diff suppressed because it is too large
Load diff
2410
mysql-test/r/ps_5merge.result
Normal file
2410
mysql-test/r/ps_5merge.result
Normal file
File diff suppressed because it is too large
Load diff
1269
mysql-test/r/ps_6bdb.result
Normal file
1269
mysql-test/r/ps_6bdb.result
Normal file
File diff suppressed because it is too large
Load diff
739
mysql-test/t/ps_1general.test
Normal file
739
mysql-test/t/ps_1general.test
Normal file
|
@ -0,0 +1,739 @@
|
|||
###################### ps_general.test #######################
|
||||
# #
|
||||
# basic and miscellaneous tests for prepared statements #
|
||||
# #
|
||||
##############################################################
|
||||
|
||||
|
||||
# Please do not
|
||||
# - modify (INSERT/UPDATE/DELETE) the content of the tables
|
||||
# t1 and t_many_col_types. Such tests should be done in
|
||||
# include/ps_modify.inc
|
||||
# - insert test cases where the results depend on the
|
||||
# table type. Such tests should be done in the files
|
||||
# include/ps_query.inc, include/ps_modify ...
|
||||
#
|
||||
|
||||
use test;
|
||||
--disable_query_log
|
||||
select '------ basic tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
let $type= 'MYISAM' ;
|
||||
# create the tables (t1 and t_many_col_types) used in many tests
|
||||
--source include/ps_create.inc
|
||||
# insert data into these tables
|
||||
--source include/ps_renew.inc
|
||||
|
||||
|
||||
##### The basic functions ####
|
||||
|
||||
# 1. PREPARE stmt_name FROM <preparable statement>;
|
||||
# <preparable statement> ::=
|
||||
# 'literal_stmt' |
|
||||
# @variable_ref_stmt.
|
||||
# The statement may contain question marks as placeholders for parameters.
|
||||
#
|
||||
# Bind a statement name to a string containing a SQL statement and
|
||||
# send it to the server. The server will parse the statement and
|
||||
# reply with "Query Ok" or an error message.
|
||||
#
|
||||
PREPARE stmt FROM ' select * from t1 where a = ? ' ;
|
||||
|
||||
# 2. EXECUTE stmt_name [USING @var [, @var ]];
|
||||
# Current values of supplied variables are used as parameters.
|
||||
#
|
||||
# Send the server the order to execute the statement and supply values
|
||||
# for the input parameters needed.
|
||||
# If no error occurs the server reply will be identical to the reply for
|
||||
# the query used in PREPARE with question marks replaced with values of
|
||||
# the input variables.
|
||||
#
|
||||
SET @var= 2 ;
|
||||
EXECUTE stmt USING @var ;
|
||||
# The non prepared statement with the same server reply would be:
|
||||
select * from t1 where a = @var ;
|
||||
|
||||
# 3. DEALLOCATE PREPARE stmt_name;
|
||||
#
|
||||
# Send the server the order to drop the parse informations.
|
||||
# The server will reply with "Query Ok" or an error message.
|
||||
DEALLOCATE PREPARE stmt ;
|
||||
|
||||
## prepare
|
||||
# prepare without parameter
|
||||
prepare stmt1 from ' select 1 as my_col ' ;
|
||||
# prepare with parameter
|
||||
prepare stmt1 from ' select ? as my_col ' ;
|
||||
# prepare must fail (incomplete statements/wrong syntax)
|
||||
--error 1064
|
||||
prepare ;
|
||||
--error 1064
|
||||
prepare stmt1 ;
|
||||
--error 1064
|
||||
prepare stmt1 from ;
|
||||
--error 1064
|
||||
prepare_garbage stmt1 from ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from_garbage ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select_garbage 1 ' ;
|
||||
--error 1064
|
||||
prepare from ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 ' select 1 ' ;
|
||||
--error 1064
|
||||
prepare ? from ' select ? as my_col ' ;
|
||||
# statement in variable
|
||||
set @arg00='select 1 as my_col';
|
||||
prepare stmt1 from @arg00;
|
||||
# prepare must fail (query variable is empty)
|
||||
set @arg00='';
|
||||
--error 1065
|
||||
prepare stmt1 from @arg00;
|
||||
set @arg00=NULL;
|
||||
# prepare must fail (query variable is NULL)
|
||||
--error 1064
|
||||
prepare stmt1 from @arg01;
|
||||
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
# prepare must fail (column does not exist)
|
||||
--error 1054
|
||||
prepare stmt1 from ' select * from t1 where x <= 2 ' ;
|
||||
--disable_warnings
|
||||
drop table if exists not_exist ;
|
||||
--enable_warnings
|
||||
# prepare must fail (table does not exist)
|
||||
--error 1146
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
|
||||
# case derived from client_test.c: test_prepare_syntax()
|
||||
# prepare must fail (incomplete statement)
|
||||
--error 1064
|
||||
prepare stmt1 from ' insert into t1 values(? ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' select a, b from t1
|
||||
where a=? and where ' ;
|
||||
|
||||
## execute
|
||||
# execute must fail (statement never_prepared never prepared)
|
||||
--error 1243
|
||||
execute never_prepared ;
|
||||
# execute must fail (prepare stmt1 just failed,
|
||||
# but there was a successful prepare of stmt1 before)
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
--error 1146
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
--error 1243
|
||||
execute stmt1 ;
|
||||
|
||||
# drop the table between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 1, 'original table', 1);
|
||||
prepare stmt2 from ' select * from to_be_dropped ' ;
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# execute must fail (table was dropped after prepare)
|
||||
--error 1146
|
||||
execute stmt2 ;
|
||||
# cases derived from client_test.c: test_select_prepare()
|
||||
# 1. drop + create table (same column names/types/order)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 2. drop + create table (same column names/types but different order)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
c int,
|
||||
b char(30)
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 3. drop + create table (same column names/types/order+extra column)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(30),
|
||||
c int,
|
||||
d timestamp default current_timestamp
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 4. drop + create table (same column names/types, different order +
|
||||
# additional column) between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
d timestamp default current_timestamp,
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( a, b, c) values( 9, 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 5. drop + create table (same column names/order, different types)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
a timestamp default '2004-02-29 18:01:59',
|
||||
b char(30),
|
||||
c int
|
||||
);
|
||||
insert into to_be_dropped( b, c) values( 'recreated table', 9);
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
# 6. drop + create table (same column types/order, different names)
|
||||
# between prepare and execute
|
||||
create table to_be_dropped
|
||||
(
|
||||
f1 int primary key,
|
||||
f2 char(30),
|
||||
f3 int
|
||||
);
|
||||
insert into to_be_dropped( f1, f2, f3) values( 9, 'recreated table', 9);
|
||||
--error 1054
|
||||
execute stmt2 ;
|
||||
drop table to_be_dropped ;
|
||||
|
||||
# execute without parameter
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
execute stmt1 ;
|
||||
# execute with parameter
|
||||
set @arg00=1 ;
|
||||
set @arg01='two' ;
|
||||
prepare stmt1 from ' select * from t1 where a <= ? ' ;
|
||||
execute stmt1 using @arg00;
|
||||
# execute must fail (too small number of parameters)
|
||||
--error 1210
|
||||
execute stmt1 ;
|
||||
# execute must fail (too big number of parameters)
|
||||
--error 1210
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
# execute must fail (parameter is not set)
|
||||
execute stmt1 using @not_set;
|
||||
|
||||
## deallocate
|
||||
# deallocate must fail (never_prepared was never prepared)
|
||||
--error 1243
|
||||
deallocate prepare never_prepared ;
|
||||
# deallocate must fail (prepare stmt1 just failed,
|
||||
# but there was a successful prepare before)
|
||||
prepare stmt1 from ' select * from t1 where a <= 2 ' ;
|
||||
--error 1146
|
||||
prepare stmt1 from ' select * from not_exist where a <= 2 ' ;
|
||||
--error 1243
|
||||
deallocate prepare stmt1;
|
||||
create table to_be_dropped
|
||||
(
|
||||
a int primary key,
|
||||
b char(10)
|
||||
);
|
||||
prepare stmt2 from ' select a,b from to_be_dropped where a <= 2 ' ;
|
||||
drop table to_be_dropped ;
|
||||
# deallocate prepared statement where the table was dropped after prepare
|
||||
deallocate prepare stmt2;
|
||||
|
||||
## parallel use of more than one prepared statement handlers
|
||||
# switch between different queries
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select b from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
execute stmt1 ;
|
||||
# switch between statement handlers of the same query
|
||||
prepare stmt1 from ' select a from t1 where a <= 2 ' ;
|
||||
prepare stmt2 from ' select a from t1 where a <= 2 ' ;
|
||||
execute stmt2 ;
|
||||
execute stmt1 ;
|
||||
deallocate prepare stmt1 ;
|
||||
# Will the deallocate of stmt1 with the same query affect stmt2 ?
|
||||
execute stmt2 ;
|
||||
|
||||
--disable_query_log
|
||||
select '------ show and misc tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
create table t2
|
||||
(
|
||||
a int primary key, b char(10)
|
||||
);
|
||||
|
||||
###### SHOW COMMANDS
|
||||
prepare stmt4 from ' show databases ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show tables from test like ''t2%'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
|
||||
execute stmt4;
|
||||
create index t2_idx on t2(b);
|
||||
prepare stmt4 from ' show index from t2 from test ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show table status from test like ''t2%'' ';
|
||||
# egalize date and time values
|
||||
--replace_column 12 # 13 # 14 #
|
||||
# Bug#4288 : prepared statement 'show table status ..', wrong output on execute
|
||||
execute stmt4;
|
||||
# try the same with the big table
|
||||
prepare stmt4 from ' show table status from test like ''t_many_col_types%'' ';
|
||||
# egalize date and time values
|
||||
--replace_column 12 # 13 # 14 #
|
||||
# Bug#4288
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show variables like ''sql_mode'' ';
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show engine bdb logs ';
|
||||
# The output depends on the history (actions of the bdb engine).
|
||||
# That is the reason why, we switch the output here off.
|
||||
# (The real output will be tested in ps_6bdb.test)
|
||||
# --replace_result $MYSQL_TEST_DIR TEST_DIR
|
||||
--disable_result_log
|
||||
execute stmt4;
|
||||
--enable_result_log
|
||||
prepare stmt4 from ' show full processlist ';
|
||||
--replace_column 1 number
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show grants for user ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show create table t2 ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show master status ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show master logs ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show slave status ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show warnings limit 20 ';
|
||||
--error 1295
|
||||
prepare stmt4 from ' show errors limit 20 ';
|
||||
prepare stmt4 from ' show storage engines ';
|
||||
--replace_column 2 YES/NO
|
||||
execute stmt4;
|
||||
|
||||
###### MISC STUFF
|
||||
## get a warning and an error
|
||||
# cases derived from client_test.c: test_warnings(), test_errors()
|
||||
--disable_warnings
|
||||
drop table if exists tx;
|
||||
--enable_warnings
|
||||
prepare stmt1 from ' drop table if exists tx ' ;
|
||||
execute stmt1 ;
|
||||
prepare stmt1 from ' drop table tx ' ;
|
||||
--error 1051
|
||||
execute stmt1 ;
|
||||
|
||||
## nonsense like prepare of prepare,execute or deallocate
|
||||
--error 1064
|
||||
prepare stmt1 from ' prepare stmt2 from '' select 1 '' ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' execute stmt2 ' ;
|
||||
--error 1064
|
||||
prepare stmt1 from ' deallocate prepare never_prepared ' ;
|
||||
|
||||
## switch the database connection
|
||||
--error 1295
|
||||
prepare stmt4 from ' use test ' ;
|
||||
|
||||
## create/drop database
|
||||
--error 1295
|
||||
prepare stmt3 from ' create database drop_me ';
|
||||
create database drop_me ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' drop database drop_me ';
|
||||
drop database drop_me ;
|
||||
|
||||
## grant/revoke + drop user
|
||||
--error 1295
|
||||
prepare stmt3 from ' grant all on test.t1 to drop_user@localhost
|
||||
identified by ''looser'' ';
|
||||
grant all on test.t1 to drop_user@localhost
|
||||
identified by 'looser' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' revoke all privileges on test.t1 from
|
||||
drop_user@localhost ';
|
||||
revoke all privileges on test.t1 from drop_user@localhost ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' drop user drop_user@localhost ';
|
||||
drop user drop_user@localhost;
|
||||
--error 1141
|
||||
|
||||
#### table related commands
|
||||
## describe
|
||||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
drop table t2 ;
|
||||
--error 1146
|
||||
execute stmt3;
|
||||
## lock/unlock
|
||||
--error 1295
|
||||
prepare stmt3 from ' lock tables t1 read ' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' unlock tables ' ;
|
||||
## Load/Unload table contents
|
||||
--error 1295
|
||||
prepare stmt1 from ' load data infile ''data.txt''
|
||||
into table t1 fields terminated by ''\t'' ';
|
||||
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
|
||||
execute stmt1 ;
|
||||
##
|
||||
--error 1295
|
||||
prepare stmt1 from ' optimize table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' analyze table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' checksum table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' repair table t1 ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
|
||||
## handler
|
||||
--error 1295
|
||||
prepare stmt1 from ' handler t1 open ';
|
||||
|
||||
|
||||
## commit/rollback
|
||||
--error 1295
|
||||
prepare stmt3 from ' commit ' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' rollback ' ;
|
||||
|
||||
|
||||
## switch the sql_mode
|
||||
prepare stmt4 from ' SET sql_mode=ansi ';
|
||||
execute stmt4;
|
||||
# check if the sql_mode is now ansi
|
||||
select 'a' || 'b' ;
|
||||
prepare stmt4 from ' SET sql_mode="" ';
|
||||
execute stmt4;
|
||||
# check if the sql_mode is not ansi
|
||||
select 'a' || 'b' ;
|
||||
# Will a switch of the sqlmode affect the execution of already prepared
|
||||
# statements ?
|
||||
prepare stmt5 from ' select ''a'' || ''b'' ' ;
|
||||
execute stmt5;
|
||||
SET sql_mode=ansi;
|
||||
execute stmt5;
|
||||
SET sql_mode="";
|
||||
|
||||
--error 1295
|
||||
prepare stmt1 from ' flush local privileges ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' reset query cache ' ;
|
||||
--error 1295
|
||||
prepare stmt1 from ' KILL 0 ';
|
||||
|
||||
## simple explain
|
||||
# cases derived from client_test.c: test_explain_bug()
|
||||
prepare stmt1 from ' explain select a from t1 order by b ';
|
||||
--enable_metadata
|
||||
execute stmt1;
|
||||
--disable_metadata
|
||||
SET @arg00=1 ;
|
||||
prepare stmt1 from ' explain select a from t1 where a > ? order by b ';
|
||||
--enable_metadata
|
||||
execute stmt1 using @arg00;
|
||||
--disable_metadata
|
||||
|
||||
--disable_query_log
|
||||
select '------ create/drop/alter/rename tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t2, t3;
|
||||
--enable_warnings
|
||||
|
||||
prepare stmt_drop from ' drop table if exists t2 ' ;
|
||||
--disable_warnings
|
||||
execute stmt_drop;
|
||||
--enable_warnings
|
||||
|
||||
prepare stmt_create from ' create table t2 (
|
||||
a int primary key, b char(10)) ';
|
||||
execute stmt_create;
|
||||
prepare stmt3 from ' create table t3 like t2 ';
|
||||
execute stmt3;
|
||||
drop table t3;
|
||||
|
||||
set @arg00=1;
|
||||
prepare stmt3 from ' create table t3 (m int) select ? as m ' ;
|
||||
# Bug#4280 server hangs, prepared "create table .. as select ? .."
|
||||
execute stmt3 using @arg00;
|
||||
select m from t3;
|
||||
drop table t3;
|
||||
|
||||
--error 1295
|
||||
prepare stmt3 from ' create index t2_idx on t2(b) ';
|
||||
--error 1295
|
||||
prepare stmt3 from ' drop index t2_idx on t2 ' ;
|
||||
--error 1295
|
||||
prepare stmt3 from ' alter table t2 drop primary key ';
|
||||
--disable_warnings
|
||||
drop table if exists new_t2;
|
||||
--enable_warnings
|
||||
prepare stmt3 from ' rename table t2 to new_t2 ';
|
||||
execute stmt3;
|
||||
--error 1050
|
||||
execute stmt3;
|
||||
rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
|
||||
--disable_query_log
|
||||
select '------ big statement tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
# Attention: The limits used are NOT derived from the manual
|
||||
# or other sources.
|
||||
|
||||
## many lines ( 50 )
|
||||
select 'ABC' as my_const_col from t1 where
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ;
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 AND
|
||||
1 = 1 ' ;
|
||||
execute stmt1 ;
|
||||
execute stmt1 ;
|
||||
|
||||
## many characters ( about 1400 )
|
||||
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' AND
|
||||
'1234567890123456789012345678901234567890123456789012345678901234567890'
|
||||
= '1234567890123456789012345678901234567890123456789012345678901234567890' ;
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' AND
|
||||
''1234567890123456789012345678901234567890123456789012345678901234567890''
|
||||
= ''1234567890123456789012345678901234567890123456789012345678901234567890'' ';
|
||||
execute stmt1 ;
|
||||
execute stmt1 ;
|
||||
|
||||
|
||||
## many parameters ( 50 )
|
||||
set @arg00= 1;
|
||||
set @arg01= 1;
|
||||
set @arg02= 1;
|
||||
set @arg03= 1;
|
||||
set @arg04= 1;
|
||||
set @arg05= 1;
|
||||
set @arg06= 1;
|
||||
set @arg07= 1;
|
||||
set @arg10= 1;
|
||||
set @arg11= 1;
|
||||
set @arg12= 1;
|
||||
set @arg13= 1;
|
||||
set @arg14= 1;
|
||||
set @arg15= 1;
|
||||
set @arg16= 1;
|
||||
set @arg17= 1;
|
||||
set @arg20= 1;
|
||||
set @arg21= 1;
|
||||
set @arg22= 1;
|
||||
set @arg23= 1;
|
||||
set @arg24= 1;
|
||||
set @arg25= 1;
|
||||
set @arg26= 1;
|
||||
set @arg27= 1;
|
||||
set @arg30= 1;
|
||||
set @arg31= 1;
|
||||
set @arg32= 1;
|
||||
set @arg33= 1;
|
||||
set @arg34= 1;
|
||||
set @arg35= 1;
|
||||
set @arg36= 1;
|
||||
set @arg37= 1;
|
||||
set @arg40= 1;
|
||||
set @arg41= 1;
|
||||
set @arg42= 1;
|
||||
set @arg43= 1;
|
||||
set @arg44= 1;
|
||||
set @arg45= 1;
|
||||
set @arg46= 1;
|
||||
set @arg47= 1;
|
||||
set @arg50= 1;
|
||||
set @arg51= 1;
|
||||
set @arg52= 1;
|
||||
set @arg53= 1;
|
||||
set @arg54= 1;
|
||||
set @arg55= 1;
|
||||
set @arg56= 1;
|
||||
set @arg57= 1;
|
||||
set @arg60= 1;
|
||||
set @arg61= 1;
|
||||
|
||||
select 'ABC' as my_const_col FROM t1 WHERE
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and @arg00=@arg00 and
|
||||
@arg00=@arg00 ;
|
||||
prepare stmt1 from ' select ''ABC'' as my_const_col FROM t1 WHERE
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? and ? = ? and ? = ? and ? = ? and
|
||||
? = ? ' ;
|
||||
execute stmt1 using
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00;
|
||||
execute stmt1 using
|
||||
@arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07,
|
||||
@arg10, @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17,
|
||||
@arg20, @arg21, @arg22, @arg23, @arg24, @arg25, @arg26, @arg27,
|
||||
@arg30, @arg31, @arg32, @arg33, @arg34, @arg35, @arg36, @arg37,
|
||||
@arg40, @arg41, @arg42, @arg43, @arg44, @arg45, @arg46, @arg47,
|
||||
@arg50, @arg51, @arg52, @arg53, @arg54, @arg55, @arg56, @arg57,
|
||||
@arg60, @arg61 ;
|
||||
|
||||
drop table t1 ;
|
17
mysql-test/t/ps_2myisam.test
Normal file
17
mysql-test/t/ps_2myisam.test
Normal file
|
@ -0,0 +1,17 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on MYISAM tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
use test;
|
||||
|
||||
let $type= 'MYISAM' ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
17
mysql-test/t/ps_3innodb.test
Normal file
17
mysql-test/t/ps_3innodb.test
Normal file
|
@ -0,0 +1,17 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on InnoDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
use test;
|
||||
|
||||
let $type= 'InnoDB' ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
43
mysql-test/t/ps_4heap.test
Normal file
43
mysql-test/t/ps_4heap.test
Normal file
|
@ -0,0 +1,43 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on HEAP tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
use test;
|
||||
|
||||
let $type= 'HEAP' ;
|
||||
--disable_warnings
|
||||
drop table if exists t1, t_many_col_types ;
|
||||
--enable_warnings
|
||||
eval create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = $type ;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t_many_col_types;
|
||||
--enable_warnings
|
||||
# The used table type doesn't support BLOB/TEXT columns (error 1163)
|
||||
# So we use char(100) instead.
|
||||
eval create table t_many_col_types
|
||||
(
|
||||
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(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 char(100), c24 char(100),
|
||||
c25 char(100), c26 char(100), c27 char(100), c28 char(100),
|
||||
c29 char(100), c30 char(100), c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) engine = $type ;
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
78
mysql-test/t/ps_5merge.test
Normal file
78
mysql-test/t/ps_5merge.test
Normal file
|
@ -0,0 +1,78 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on MERGE tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
use test;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t1_1, t1_2,
|
||||
t_many_col_types, t_many_col_types_1, t_many_col_types_2;
|
||||
--enable_warnings
|
||||
let $type= 'MYISAM' ;
|
||||
-- source include/ps_create.inc
|
||||
rename table t1 to t1_1, t_many_col_types to t_many_col_types_1 ;
|
||||
-- source include/ps_create.inc
|
||||
rename table t1 to t1_2, t_many_col_types to t_many_col_types_2 ;
|
||||
|
||||
create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) ENGINE = MERGE UNION=(t1_1,t1_2)
|
||||
INSERT_METHOD=FIRST;
|
||||
create table t_many_col_types
|
||||
(
|
||||
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(14), 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'),
|
||||
primary key(c1)
|
||||
) ENGINE = MERGE UNION=(t_many_col_types_1,t_many_col_types_2)
|
||||
INSERT_METHOD=FIRST;
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
# no test of ps_modify1, because insert .. select
|
||||
# is not allowed on MERGE tables
|
||||
# -- source include/ps_modify1.inc
|
||||
|
||||
# Lets's try the same tests with INSERT_METHOD=LAST
|
||||
drop table t1, t_many_col_types ;
|
||||
create table t1
|
||||
(
|
||||
a int, b varchar(30),
|
||||
primary key(a)
|
||||
) ENGINE = MERGE UNION=(t1_1,t1_2)
|
||||
INSERT_METHOD=LAST;
|
||||
create table t_many_col_types
|
||||
(
|
||||
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(14), 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'),
|
||||
primary key(c1)
|
||||
) ENGINE = MERGE UNION=(t_many_col_types_1,t_many_col_types_2)
|
||||
INSERT_METHOD=LAST;
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
# no test of ps_modify1, because insert .. select
|
||||
# is not allowed on MERGE tables
|
||||
# -- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t1_1, t1_2,
|
||||
t_many_col_types_1, t_many_col_types_2, t_many_col_types;
|
18
mysql-test/t/ps_6bdb.test
Normal file
18
mysql-test/t/ps_6bdb.test
Normal file
|
@ -0,0 +1,18 @@
|
|||
###############################################
|
||||
# #
|
||||
# Prepared Statements test on BDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
use test;
|
||||
|
||||
-- source include/have_bdb.inc
|
||||
let $type= 'BDB' ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
|
||||
drop table t1, t_many_col_types;
|
Loading…
Reference in a new issue