diff options
author | Michael Widenius <monty@mariadb.org> | 2018-03-09 14:05:35 +0200 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2018-03-29 13:59:44 +0300 |
commit | a7abddeffa6a760ce948c2dfb007cdf3f1a369d5 (patch) | |
tree | 70eb743fa965a17380bbc0ac88ae79ca1075b896 /mysql-test/t/ps_1general.test | |
parent | ab1941266c59a19703a74b5593cf3f508a5752d7 (diff) | |
download | mariadb-git-a7abddeffa6a760ce948c2dfb007cdf3f1a369d5.tar.gz |
Create 'main' test directory and move 't' and 'r' there
Diffstat (limited to 'mysql-test/t/ps_1general.test')
-rw-r--r-- | mysql-test/t/ps_1general.test | 944 |
1 files changed, 0 insertions, 944 deletions
diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test deleted file mode 100644 index 01a0164722d..00000000000 --- a/mysql-test/t/ps_1general.test +++ /dev/null @@ -1,944 +0,0 @@ -###################### ps_general.test ####################### -# # -# basic and miscellaneous tests for prepared statements # -# # -############################################################## - -# -# NOTE: PLEASE SEE THE DETAILED DESCRIPTION AT THE BOTTOM OF THIS FILE -# BEFORE ADDING NEW TEST CASES HERE !!! - ---disable_warnings -drop table if exists t5, t6, t7, t8; -drop database if exists mysqltest ; - -# Cleanup from other tests -drop database if exists client_test_db; -drop database if exists testtets; -drop table if exists t1Aa,t2Aa,v1Aa,v2Aa; -drop view if exists t1Aa,t2Aa,v1Aa,v2Aa; ---enable_warnings - ---disable_query_log -select '------ basic tests ------' as test_sequence ; ---enable_query_log - -let $type= 'MYISAM' ; -# create the tables (t1 and t9) 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 ER_PARSE_ERROR -prepare ; ---error ER_PARSE_ERROR -prepare stmt1 ; ---error ER_PARSE_ERROR -prepare stmt1 from ; ---error ER_PARSE_ERROR -prepare_garbage stmt1 from ' select 1 ' ; ---error ER_PARSE_ERROR -prepare stmt1 from_garbage ' select 1 ' ; ---error ER_PARSE_ERROR -prepare stmt1 from ' select_garbage 1 ' ; ---error ER_PARSE_ERROR -prepare from ' select 1 ' ; ---error ER_PARSE_ERROR -prepare stmt1 ' select 1 ' ; ---error ER_PARSE_ERROR -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 ER_EMPTY_QUERY -prepare stmt1 from @arg00; -set @arg00=NULL; -# prepare must fail (query variable is NULL) ---error ER_PARSE_ERROR -prepare stmt1 from @arg01; - -prepare stmt1 from ' select * from t1 where a <= 2 ' ; -# prepare must fail (column x does not exist) ---error ER_BAD_FIELD_ERROR -prepare stmt1 from ' select * from t1 where x <= 2 ' ; -# cases derived from client_test.c: test_null() -# prepare must fail (column x does not exist) ---error ER_BAD_FIELD_ERROR -prepare stmt1 from ' insert into t1(a,x) values(?,?) ' ; ---error ER_BAD_FIELD_ERROR -prepare stmt1 from ' insert into t1(x,a) values(?,?) ' ; ---disable_warnings -drop table if exists not_exist ; ---enable_warnings -# prepare must fail (table does not exist) ---error ER_NO_SUCH_TABLE -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 ER_PARSE_ERROR -prepare stmt1 from ' insert into t1 values(? ' ; ---error ER_PARSE_ERROR -prepare stmt1 from ' select a, b from t1 - where a=? and where ' ; - -################ EXECUTE ################ -# execute must fail (statement never_prepared never prepared) ---error ER_UNKNOWN_STMT_HANDLER -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 ER_NO_SUCH_TABLE -prepare stmt1 from ' select * from not_exist where a <= 2 ' ; ---error ER_UNKNOWN_STMT_HANDLER -execute stmt1 ; - -# drop the table between prepare and execute -create table t5 -( - a int primary key, - b char(30), - c int -); -insert into t5( a, b, c) values( 1, 'original table', 1); -prepare stmt2 from ' select * from t5 ' ; -execute stmt2 ; -drop table t5 ; -# execute must fail (table was dropped after prepare) ---error ER_NO_SUCH_TABLE -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 t5 -( - a int primary key, - b char(30), - c int -); -insert into t5( a, b, c) values( 9, 'recreated table', 9); -execute stmt2 ; -drop table t5 ; -# 2. drop + create table (same column names/types but different order) -# between prepare and execute -create table t5 -( - a int primary key, - c int, - b char(30) -); -insert into t5( a, b, c) values( 9, 'recreated table', 9); -execute stmt2 ; -drop table t5 ; -# 3. drop + create table (same column names/types/order+extra column) -# between prepare and execute -create table t5 -( - a int primary key, - b char(30), - c int, - d timestamp default '2008-02-23 09:23:45' -); -insert into t5( a, b, c) values( 9, 'recreated table', 9); -execute stmt2 ; -drop table t5 ; -# 4. drop + create table (same column names/types, different order + -# additional column) between prepare and execute -create table t5 -( - a int primary key, - d timestamp default '2008-02-23 09:23:45', - b char(30), - c int -); -insert into t5( a, b, c) values( 9, 'recreated table', 9); -execute stmt2 ; -drop table t5 ; -# 5. drop + create table (same column names/order, different types) -# between prepare and execute -create table t5 -( - a timestamp default '2004-02-29 18:01:59', - b char(30), - c int -); -insert into t5( b, c) values( 'recreated table', 9); -execute stmt2 ; -drop table t5 ; -# 6. drop + create table (same column types/order, different names) -# between prepare and execute -create table t5 -( - f1 int primary key, - f2 char(30), - f3 int -); -insert into t5( f1, f2, f3) values( 9, 'recreated table', 9); -execute stmt2 ; -drop table t5 ; - -# 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 ER_WRONG_ARGUMENTS -execute stmt1 ; -# execute must fail (too big number of parameters) ---error ER_WRONG_ARGUMENTS -execute stmt1 using @arg00, @arg01; -# execute must fail (parameter is not set) -execute stmt1 using @not_set; - -################ DEALLOCATE ################ -# deallocate must fail (the statement 'never_prepared' was never prepared) ---error ER_UNKNOWN_STMT_HANDLER -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 ER_NO_SUCH_TABLE -prepare stmt1 from ' select * from not_exist where a <= 2 ' ; ---error ER_UNKNOWN_STMT_HANDLER -deallocate prepare stmt1; -create table t5 -( - a int primary key, - b char(10) -); -prepare stmt2 from ' select a,b from t5 where a <= 2 ' ; -drop table t5 ; -# 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 where field in (select ?) '; -SET @arg00="a"; -execute stmt4 using @arg00; -SET @arg00="b"; -execute stmt4 using @arg00; -SET @arg00=1; -execute stmt4 using @arg00; - -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 8 # 12 # 13 # 14 # 19 # -# 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 ''t9%'' '; -# egalize date and time values ---replace_column 8 # 12 # 13 # 14 # 19 # -# Bug#4288 -execute stmt4; -prepare stmt4 from ' show status like ''Threads_running'' '; ---replace_column 2 # -execute stmt4; -prepare stmt4 from ' show variables like ''sql_mode'' '; -execute stmt4; -prepare stmt4 from ' show engine myisam logs '; -execute stmt4; -prepare stmt4 from ' show grants for user '; -prepare stmt4 from ' show create table t2 '; -prepare stmt4 from ' show master status '; -prepare stmt4 from ' show master logs '; -prepare stmt4 from ' show slave status '; -prepare stmt4 from ' show warnings limit 20 '; -prepare stmt4 from ' show errors limit 20 '; -prepare stmt4 from ' show storage engines '; -# The output depends upon the precise order in which -# storage engines are registered, so we switch off the output. ---disable_result_log -execute stmt4; ---enable_result_log - -################ MISC STUFF ################ -## get a warning and an error -# cases derived from client_test.c: test_warnings(), test_errors() ---disable_warnings -drop table if exists t5; ---enable_warnings -prepare stmt1 from ' drop table if exists t5 ' ; -execute stmt1 ; -prepare stmt1 from ' drop table t5 ' ; ---error ER_BAD_TABLE_ERROR -execute stmt1 ; - -## SELECT @@version -# cases derived from client_test.c: test_select_version() -# -# TODO: Metadata check is temporary disabled here, because metadata of -# this statement also depends on @@version contents and you can't apply -# replace_column and replace_result to it. It will be enabled again when -# support of replace_column and replace_result on metadata will be -# implemented. -# -#--enable_metadata -prepare stmt1 from ' SELECT @@version ' ; -# egalize the version ---replace_column 1 <version> -execute stmt1 ; -#--disable_metadata - -## do @var:= and set @var= -# cases derived from client_test.c: test_do_set() -prepare stmt_do from ' do @var:= (1 in (select a from t1)) ' ; -prepare stmt_set from ' set @var= (1 in (select a from t1)) ' ; -let $1= 3 ; -while ($1) -{ - execute stmt_do ; - --disable_query_log - select @var as 'content of @var is:' ; - --enable_query_log - execute stmt_set ; - --disable_query_log - select @var as 'content of @var is:' ; - --enable_query_log - dec $1 ; -} -# the same test with a table containing one column and 'select *' ---disable_warnings -drop table if exists t5 ; ---enable_warnings -create table t5 (a int) ; -prepare stmt_do from ' do @var:= (1 in (select a from t5)) ' ; -prepare stmt_set from ' set @var= (1 in (select a from t5)) ' ; -let $1= 3 ; -while ($1) -{ - execute stmt_do ; - --disable_query_log - select @var as 'content of @var is:' ; - --enable_query_log - execute stmt_set ; - --disable_query_log - select @var as 'content of @var is:' ; - --enable_query_log - dec $1 ; -} -drop table t5 ; -deallocate prepare stmt_do ; -deallocate prepare stmt_set ; - -## nonsense like prepare of prepare,execute or deallocate ---error ER_UNSUPPORTED_PS -prepare stmt1 from ' prepare stmt2 from '' select 1 '' ' ; ---error ER_UNSUPPORTED_PS -prepare stmt1 from ' execute stmt2 ' ; ---error ER_UNSUPPORTED_PS -prepare stmt1 from ' deallocate prepare never_prepared ' ; - -## We don't support alter view as prepared statements ---error ER_UNSUPPORTED_PS -prepare stmt1 from 'alter view v1 as select 2'; - -## switch the database connection ---error ER_UNSUPPORTED_PS -prepare stmt4 from ' use test ' ; - -## create/drop database -prepare stmt3 from ' create database mysqltest '; -create database mysqltest ; -prepare stmt3 from ' drop database mysqltest '; -drop database mysqltest ; - -#### table related commands -## describe -prepare stmt3 from ' describe t2 '; -execute stmt3; -drop table t2 ; ---error ER_NO_SUCH_TABLE -execute stmt3; -## lock/unlock ---error ER_UNSUPPORTED_PS -prepare stmt3 from ' lock tables t1 read ' ; ---error ER_UNSUPPORTED_PS -prepare stmt3 from ' unlock tables ' ; -## Load/Unload table contents - ---let $datafile = $MYSQLTEST_VARDIR/tmp/data.txt ---error 0,1 ---remove_file $datafile - ---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR> ---error ER_UNSUPPORTED_PS -eval prepare stmt1 from ' load data infile ''$datafile'' - into table t1 fields terminated by ''\t'' '; ---replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR> -eval prepare stmt1 from ' select * into outfile ''$datafile'' from t1 '; - execute stmt1 ; -## -prepare stmt1 from ' optimize table t1 ' ; -prepare stmt1 from ' analyze table t1 ' ; -prepare stmt1 from ' checksum table t1 ' ; -prepare stmt1 from ' repair table t1 ' ; - ---remove_file $datafile - -## handler ---error ER_UNSUPPORTED_PS -prepare stmt1 from ' handler t1 open '; - - -## commit/rollback -prepare stmt3 from ' commit ' ; -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 '2' || '3' ; -# Will a switch of the sqlmode affect the execution of already prepared -# statements ? -prepare stmt5 from ' select ''2'' || ''3'' ' ; -execute stmt5; -SET sql_mode=ansi; -execute stmt5; -SET sql_mode=""; - -prepare stmt1 from ' flush local privileges ' ; -prepare stmt1 from ' reset query cache ' ; -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 '; -# PS protocol gives slightly different metadata ---disable_ps_protocol ---enable_metadata ---replace_result 4096 4_OR_8_K 8192 4_OR_8_K -execute stmt1; ---disable_metadata -SET @arg00=1 ; -prepare stmt1 from ' explain select a from t1 where a > ? order by b '; ---enable_metadata ---replace_result 4096 4_OR_8_K 8192 4_OR_8_K -execute stmt1 using @arg00; ---disable_metadata ---enable_ps_protocol - -## parameters with probably problematic characters (quote, double quote) -# cases derived from client_test.c: test_logs() -# try if ---disable_warnings -drop table if exists t2; ---enable_warnings -create table t2 (id smallint, name varchar(20)) ; -prepare stmt1 from ' insert into t2 values(?, ?) ' ; -set @id= 9876 ; -set @arg00= 'MySQL - Open Source Database' ; -set @arg01= "'" ; -set @arg02= '"' ; -set @arg03= "my'sql'" ; -set @arg04= 'my"sql"' ; -insert into t2 values ( @id , @arg00 ); -insert into t2 values ( @id , @arg01 ); -insert into t2 values ( @id , @arg02 ); -insert into t2 values ( @id , @arg03 ); -insert into t2 values ( @id , @arg04 ); -prepare stmt1 from ' select * from t2 where id= ? and name= ? '; -execute stmt1 using @id, @arg00 ; -execute stmt1 using @id, @arg01 ; -execute stmt1 using @id, @arg02 ; -execute stmt1 using @id, @arg03 ; -execute stmt1 using @id, @arg04 ; -drop table t2; - -################ CREATE/DROP/ALTER/RENAME TESTS ################ ---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 - -## DROP TABLE -prepare stmt_drop from ' drop table if exists t2 ' ; ---disable_warnings -execute stmt_drop; ---enable_warnings - -## CREATE TABLE -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; - -## CREATE TABLE .. SELECT -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; - -prepare stmt3 from ' create index t2_idx on t2(b) '; -prepare stmt3 from ' drop index t2_idx on t2 ' ; -prepare stmt3 from ' alter table t2 drop primary key '; - -## RENAME TABLE ---disable_warnings -drop table if exists new_t2; ---enable_warnings -prepare stmt3 from ' rename table t2 to new_t2 '; -execute stmt3; ---error ER_TABLE_EXISTS_ERROR -execute stmt3; -rename table new_t2 to t2; -drop table t2; -## RENAME more than on TABLE within one statement -# cases derived from client_test.c: test_rename() -prepare stmt1 from ' rename table t5 to t6, t7 to t8 ' ; -create table t5 (a int) ; ---error ER_NO_SUCH_TABLE -execute stmt1 ; -create table t7 (a int) ; -# rename, t5 -> t6 and t7 -> t8 -execute stmt1 ; -# rename must fail, t5 and t7 does not exist t6 and t8 already exist ---error ER_TABLE_EXISTS_ERROR -execute stmt1 ; -rename table t6 to t5, t8 to t7 ; -# rename, t5 -> t6 and t7 -> t8 -execute stmt1 ; -drop table t6, t8 ; - - -################ BIG STATEMENT TESTS ################ ---disable_query_log -select '------ big statement tests ------' as test_sequence ; ---enable_query_log -# The following tests use huge numbers of lines, characters or parameters -# per prepared statement. -# I assume the server and also the client (mysqltest) are stressed. -# -# Attention: The limits used are NOT derived from the manual -# or other sources. - -## many lines ( 50 ) -let $my_stmt= 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 ; -eval ($my_stmt) ; -eval prepare stmt1 from "$my_stmt" ; -execute stmt1 ; -execute stmt1 ; - -## many characters ( about 1400 ) - -let $my_stmt= 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' ; -eval ($my_stmt) ; -eval prepare stmt1 from "$my_stmt" ; -execute stmt1 ; -execute stmt1 ; - - -## many parameters ( 50 ) ---disable_query_log -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; ---enable_query_log - -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 ; - -# cases derived from client_test.c: test_mem_overun() ---disable_warnings -drop table if exists t5 ; ---enable_warnings - -set @col_num= 1000 ; - ---disable_query_log -set @string= 'create table t5( ' ; -let $1=`select @col_num - 1` ; -while ($1) -{ - eval set @string= concat(@string, 'c$1 int,') ; - dec $1 ; -} -set @string= concat(@string, 'c0 int)' ); ---enable_query_log -select @string as "" ; -prepare stmt1 from @string ; -execute stmt1 ; - ---disable_query_log -set @string= 'insert into t5 values(' ; -let $1=`select @col_num - 1` ; -while ($1) -{ - eval set @string= concat(@string, '1 ,') ; - dec $1 ; -} -eval set @string= concat(@string, '1 )') ; ---enable_query_log -select @string as "" ; -prepare stmt1 from @string ; -execute stmt1 ; - -prepare stmt1 from ' select * from t5 ' ; ---enable_metadata -# prevent too long lines ---vertical_results ---disable_result_log -execute stmt1 ; ---enable_result_log ---disable_metadata ---horizontal_results - -drop table t1, t5, t9; - ---echo # ---echo # testcase for bug#11765413 - Crash with dependent subquery and ---echo # prepared statement -create table t1 (c1 int); -insert into t1 values (1); -prepare stmt1 from "select 1 from t1 where 1=(select 1 from t1 having c1)"; -execute stmt1; -drop prepare stmt1; -drop table t1; - -##### RULES OF THUMB TO PRESERVE THE SYSTEMATICS OF THE PS TEST CASES ##### -# -# 0. You don't have the time to -# - read and pay attention to these rules of thumb -# - accept that QA may move your test case to a different place -# (I will not change your code!!) . -# Please append your test case to -# t/ps.test -# -# 1. You have more time and want to get as much value from you test case as -# possible. Please try to make the following decisions: -# -# Will the execution or result of the sub test case depend on the -# properties of a storage engine ? -# -# NO --> alter t/ps_1general.test (Example: Command with syntax error) -# If you need a table, please try to use -# t1 - very simple table -# t9 - table with nearly all available column types -# whenever possible. -# -# The structure and the content of these tables can be found in -# include/ps_create.inc CREATE TABLE ... -# include/ps_renew.inc DELETE all rows and INSERT some rows -# -# Both tables are managed by the same storage engine. -# The type of the storage engine is stored in the variable -# '$type' . In ps_1general.test $type is set to 'MYISAM'. -# -# Please feel free to source ps_create.inc or ps_renew.inc -# whenever you think it helps. But please restore the original -# state of these tables after your tests, because the following -# statements may depend on it. -# -# YES -# | -# | -# Is it possible to apply the sub test case to all table types ? -# YES --> alter include/ps_query.inc (for SELECTs) -# include/ps_modify.inc (for INSERT/UPDATE/DELETE) -# include/ps_modify1.inc (also for INSERT/UPDATE/DELETE, -# but t/ps_5merge.test will not source that file) -# Please try to find an appropriate place within the file. -# It would be nice if we have some systematics in the -# order of the sub test cases (if possible). -# -# Please be aware, that -# include: ps_query.inc, ps_modify.inc, ps_modify1.inc -# will be sourced by several test case files stored within the -# subdirectory 't'. So every change here will affect several test -# cases. -# -# NO -# | -# | -# Append the sub test case to the appropriate -# ps_<number><table type>.test . -# -# 2. The current structure of the PS tests -# -# t/ps_1general.test Check of basic PS features, SHOW commands and DDL -# The tests should not depend on the table type. -# -# t/ps_2myisam Check of PS on tables of type MYISAM . -# t/ps_3innodb Check of PS on tables of type InnoDB . -# ... -# t/ps_6bdb Check of PS on tables of type BDB . -# All storage engine related tests use the variable $type to hold the -# name of the storage engine. -# -# include/ps_query.inc test cases with SELECT/... -# These test cases should not modify the content or -# the structure (DROP/ALTER..) of the tables -# 't1' and 't9'. -# include/ps_modify.inc test cases with INSERT/UPDATE/... -# These test cases should not modify the structure -# (DROP/ALTER..) of the tables -# 't1' and 't9'. -# These two test sequences will be applied to all table types . -# -# include/ps_modify1.inc test cases with INSERT/UPDATE/... -# This test sequences will be applied to all table types -# except MERGE tables. -# -# include/ps_create.inc DROP and CREATE of the tables -# 't1' and 't9' . -# include/ps_renew.inc DELETE all rows and INSERT some rows, that means -# recreate the original content of these tables. -# Please do not alter the commands concerning these two tables. -# -# Please feel free and encouraged to exploit the current code sharing -# mechanism of the 'ps_<number><table type>' test cases. It is an convenient -# way to check all storage engines. -# -# Thank you for reading these rules of thumb. -# -# Matthias - -# End of 4.1 tests - -# -# MDEV-10318 unset params in --ps --embedded -# ---error ER_PARSE_ERROR,2031 -select ?+1; - |