mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
db36a2aa5d
The problem happened because those tests were using "cp932" and "ucs2" without checking whether these character sets are available. This fix moves test parts to make character set specific parts be tested only if they are: - some parts were moved to "ctype_ucs.test" and "ctype_cp932.test" - some parts were moved to the newly added tests "innodb-ucs2.test", "mysqlbinglog-cp932.test" and "sp-ucs2.test" mysql-test/r/ctype_cp932.result: Moved cp932-specific test case from mysql.test mysql-test/r/innodb.result: Moved ucs2-specific test cases to innodb-ucs2.test mysql-test/r/mysql.result: Move cp932-specific test cases to ctype_cp932.test mysql-test/r/mysqlbinlog.result: Moved cp932-specific test case to mysqlbinlog-cp932.test mysql-test/r/sp.result: Moved ucs2-specific test case to sp-ucs2.test mysql-test/t/ctype_cp932.test: Moved cp932-specific test case from mysql.test mysql-test/t/ctype_ucs2_def-master.opt: Use the comma-separated list of character sets to avoid mysql-test errors when ucs2 is not available in the server mysql-test/t/ctype_ucs2_def.test: Added requirement for ucs2 in the server mysql-test/t/innodb.test: Moved ucs2-specific test cases to innodb-ucs2.test mysql-test/t/mysql.test: Move cp932-specific test cases to ctype_cp932.test mysql-test/t/mysqlbinlog.test: Moved cp932-specific test case to mysqlbinlog-cp932.test mysql-test/t/sp.test: Moved ucs2-specific test case to sp-ucs2.test sql/mysqld.cc: Allow specifying several character sets for test purposes, to make "mysqld" start even if the character set being tested is not compiled: mysqld --default-character-set=ucs2,latin1 The first available character set will be chosen. mysql-test/r/innodb-ucs2.result: New BitKeeper file ``mysql-test/r/innodb-ucs2.result'' mysql-test/r/mysqlbinlog-cp932.result: New BitKeeper file ``mysql-test/r/mysqlbinlog-cp932.result'' mysql-test/r/sp-ucs2.result: New BitKeeper file ``mysql-test/r/sp-ucs2.result'' mysql-test/t/innodb-ucs2.test: New BitKeeper file ``mysql-test/t/innodb-ucs2.test'' mysql-test/t/mysqlbinlog-cp932.test: New BitKeeper file ``mysql-test/t/mysqlbinlog-cp932.test'' mysql-test/t/sp-ucs2.test: New BitKeeper file ``mysql-test/t/sp-ucs2.test''
248 lines
12 KiB
Text
248 lines
12 KiB
Text
# This test should work in embedded server after we fix mysqltest
|
|
-- source include/not_embedded.inc
|
|
#
|
|
# Testing the MySQL command line client(mysql)
|
|
#
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
#
|
|
# Test the "delimiter" functionality
|
|
# Bug#9879
|
|
#
|
|
create table t1(a int);
|
|
insert into t1 values(1);
|
|
|
|
# Test delimiters
|
|
--exec $MYSQL test 2>&1 < "./t/mysql_delimiter.sql"
|
|
|
|
--disable_query_log
|
|
# Test delimiter : supplied on the command line
|
|
select "Test delimiter : from command line" as "_";
|
|
--exec $MYSQL test --delimiter=":" -e "select * from t1:"
|
|
# Test delimiter :; supplied on the command line
|
|
select "Test delimiter :; from command line" as "_";
|
|
--exec $MYSQL test --delimiter=":;" -e "select * from t1:;"
|
|
# Test 'go' command (vertical output) \G
|
|
select "Test 'go' command(vertical output) \G" as "_";
|
|
--exec $MYSQL test -e "select * from t1\G"
|
|
# Test 'go' command \g
|
|
select "Test 'go' command \g" as "_";
|
|
--exec $MYSQL test -e "select * from t1\g"
|
|
--enable_query_log
|
|
drop table t1;
|
|
|
|
#
|
|
# BUG9998 - MySQL client hangs on USE "database"
|
|
#
|
|
create table t1(a int);
|
|
lock tables t1 write;
|
|
--exec $MYSQL -e "use test; select database();"
|
|
unlock tables;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug#16859 -- NULLs in columns must not truncate data as if a C-language "string".
|
|
#
|
|
--exec $MYSQL -t test -e "create table t1 (col1 binary(4), col2 varchar(10), col3 int); insert into t1 values ('a', 'b', 123421),('a ', '0123456789', 4), ('abcd', '', 4); select concat('>',col1,'<'), col2, col3 from t1; drop table t1;" 2>&1
|
|
|
|
#
|
|
# Bug#17939 Wrong table format when using UTF8 strings
|
|
#
|
|
--exec $MYSQL --default-character-set=utf8 --table -e "SELECT 'John Doe' as '__tañgè Ñãmé'" 2>&1
|
|
--exec $MYSQL --default-character-set=utf8 --table -e "SELECT '__tañgè Ñãmé' as 'John Doe'" 2>&1
|
|
|
|
#
|
|
# Bug#18265 -- mysql client: No longer right-justifies numeric columns
|
|
#
|
|
--exec $MYSQL -t --default-character-set utf8 test -e "create table t1 (i int, j int, k char(25) charset utf8); insert into t1 (i) values (1); insert into t1 (k) values ('<----------------------->'); insert into t1 (k) values ('<-----'); insert into t1 (k) values ('Τη γλώσσα'); insert into t1 (k) values ('ᛖᚴ ᚷᛖᛏ'); select * from t1; DROP TABLE t1;"
|
|
|
|
#
|
|
# "DESCRIBE" commands may return strange NULLness flags.
|
|
#
|
|
--exec $MYSQL --default-character-set utf8 test -e "create table t1 (i int, j int not null, k int); insert into t1 values (null, 1, null); select * from t1; describe t1; drop table t1;"
|
|
--exec $MYSQL -t --default-character-set utf8 test -e "create table t1 (i int, j int not null, k int); insert into t1 values (null, 1, null); select * from t1; describe t1; drop table t1;"
|
|
|
|
#
|
|
# Bug#19564: mysql displays NULL instead of space
|
|
#
|
|
--exec $MYSQL test -e "create table b19564 (i int, s1 char(1)); insert into b19564 values (1, 'x'); insert into b19564 values (2, NULL); insert into b19564 values (3, ' '); select * from b19564 order by i; drop table b19564;"
|
|
--exec $MYSQL -t test -e "create table b19564 (i int, s1 char(1)); insert into b19564 values (1, 'x'); insert into b19564 values (2, NULL); insert into b19564 values (3, ' '); select * from b19564 order by i; drop table b19564;"
|
|
|
|
#
|
|
# Bug#21618: NULL shown as empty string in client
|
|
#
|
|
--exec $MYSQL test -e "select unhex('zz');"
|
|
--exec $MYSQL -t test -e "select unhex('zz');"
|
|
|
|
# Bug#19265 describe command does not work from mysql prompt
|
|
#
|
|
|
|
create table t1(a int, b varchar(255), c int);
|
|
--exec $MYSQL test -e "desc t1"
|
|
--exec $MYSQL test -e "desc t1\g"
|
|
drop table t1;
|
|
|
|
--disable_parsing
|
|
#
|
|
# Bug#21042 mysql client segfaults on importing a mysqldump export
|
|
#
|
|
--error 1
|
|
--exec $MYSQL test -e "connect verylongdatabasenamethatshouldblowthe256byteslongbufferincom_connectfunctionxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxendcccccccdxxxxxxxxxxxxxxxxxkskskskskkskskskskskskskskskskkskskskskkskskskskskskskskskend" 2>&1
|
|
--enable_parsing
|
|
|
|
|
|
#
|
|
# Bug #20432: mysql client interprets commands in comments
|
|
#
|
|
|
|
# if the client sees the 'use' within the comment, we haven't fixed
|
|
--exec echo "/*" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec echo "use" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec echo "*/" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
|
|
|
# SQL can have embedded comments => workie
|
|
--exec echo "select /*" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec echo "use" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec echo "*/ 1" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
|
|
|
# client commands on the other hand must be at BOL => error
|
|
--exec echo "/*" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec echo "xxx" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec echo "*/ use" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--error 1
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
|
|
|
# client comment recognized, but parameter missing => error
|
|
--exec echo "use" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
|
|
|
#
|
|
# Bug #20328: mysql client interprets commands in comments
|
|
#
|
|
--exec $MYSQL -e 'help' > $MYSQLTEST_VARDIR/tmp/bug20328_1.result
|
|
--exec $MYSQL -e 'help ' > $MYSQLTEST_VARDIR/tmp/bug20328_2.result
|
|
--exec diff $MYSQLTEST_VARDIR/tmp/bug20328_1.result $MYSQLTEST_VARDIR/tmp/bug20328_2.result
|
|
|
|
#
|
|
# Bug #19216: Client crashes on long SELECT
|
|
#
|
|
--exec echo "select" > $MYSQLTEST_VARDIR/tmp/b19216.tmp
|
|
# 3400 * 20 makes 68000 columns that is more than the max number that can fit
|
|
# in a 16 bit number.
|
|
let $i= 3400;
|
|
while ($i)
|
|
{
|
|
--exec echo "'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a'," >> $MYSQLTEST_VARDIR/tmp/b19216.tmp
|
|
dec $i;
|
|
}
|
|
|
|
--exec echo "'b';" >> $MYSQLTEST_VARDIR/tmp/b19216.tmp
|
|
--disable_query_log
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/b19216.tmp >/dev/null
|
|
--enable_query_log
|
|
|
|
#
|
|
# Bug #20103: Escaping with backslash does not work
|
|
#
|
|
--exec echo "SET SQL_MODE = 'NO_BACKSLASH_ESCAPES';" > $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
|
--exec echo "SELECT '\';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
|
|
|
--exec echo "SET SQL_MODE = '';" > $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
|
--exec echo "SELECT '\';';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
|
|
|
#
|
|
# Bug#17583: mysql drops connection when stdout is not writable
|
|
#
|
|
create table t17583 (a int);
|
|
insert into t17583 (a) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
# Close to the minimal data needed to exercise bug.
|
|
select count(*) from t17583;
|
|
--exec echo "select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; select count(*) from t17583; " |$MYSQL test >&-
|
|
drop table t17583;
|
|
|
|
#
|
|
# Bug#20984: Reproducible MySQL client segmentation fault
|
|
# + additional tests for the "com_connect" function in mysql
|
|
#
|
|
#
|
|
--echo Test connect without db- or host-name => reconnect
|
|
--exec $MYSQL test -e "\r" 2>&1
|
|
--exec $MYSQL test -e "connect" 2>&1
|
|
|
|
--echo Test connect with dbname only => new dbname, old hostname
|
|
--exec $MYSQL test -e "\r test" 2>&1
|
|
--exec $MYSQL test -e "connect test" 2>&1
|
|
--exec $MYSQL test -e "\rtest" 2>&1
|
|
--error 1
|
|
--exec $MYSQL test -e "connecttest" 2>&1
|
|
|
|
--echo Test connect with _invalid_ dbname only => new invalid dbname, old hostname
|
|
--error 1
|
|
--exec $MYSQL test -e "\r invalid" 2>&1
|
|
--error 1
|
|
--exec $MYSQL test -e "connect invalid" 2>&1
|
|
|
|
--echo Test connect with dbname + hostname
|
|
--exec $MYSQL test -e "\r test localhost" 2>&1
|
|
--exec $MYSQL test -e "connect test localhost" 2>&1
|
|
|
|
--echo Test connect with dbname + _invalid_ hostname
|
|
# Mask the errno of the error message
|
|
--replace_regex /\([0-9]*\)/(errno)/
|
|
--error 1
|
|
--exec $MYSQL test -e "\r test invalid_hostname" 2>&1
|
|
--replace_regex /\([0-9]*\)/(errno)/
|
|
--error 1
|
|
--exec $MYSQL test -e "connect test invalid_hostname" 2>&1
|
|
|
|
--echo The commands reported in the bug report
|
|
--replace_regex /\([0-9]*\)/(errno)/
|
|
--error 1
|
|
--exec $MYSQL test -e "\r\r\n\r\n cyril\ has\ found\ a\ bug\ :)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 2>&1
|
|
|
|
#--replace_regex /\([0-9]*\)/(errno)/
|
|
#--error 1
|
|
#--exec echo '\r\r\n\r\n cyril\ has\ found\ a\ bug\ :)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' | $MYSQL 2>&1
|
|
|
|
--echo Too long dbname
|
|
--error 1
|
|
--exec $MYSQL test -e "\r test_really_long_dbnamexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx localhost" 2>&1
|
|
|
|
--echo Too long hostname
|
|
--replace_regex /\([0-9]*\)/(errno)/
|
|
--error 1
|
|
--exec $MYSQL test -e "\r test cyrils_superlonghostnameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 2>&1
|
|
|
|
#
|
|
# Bug #21412: mysql cmdline client allows backslash(es)
|
|
# as delimiter but can't recognize them
|
|
#
|
|
|
|
# This should work just fine...
|
|
--exec echo "DELIMITER /" > $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
|
--exec echo "SELECT 1/" >> $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
|
|
|
|
# This should give an error...
|
|
--exec echo "DELIMITER \\" > $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
|
|
|
|
# As should this...
|
|
--exec echo "DELIMITER \\\\" > $MYSQLTEST_VARDIR/tmp/bug21412.sql
|
|
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
|
|
|
|
--echo End of 5.0 tests
|