mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge 48863,49269,49345,49672,49761
This commit is contained in:
@ -97,7 +97,7 @@ static my_bool sp_protocol= 0, sp_protocol_enabled= 0;
|
|||||||
static my_bool view_protocol= 0, view_protocol_enabled= 0;
|
static my_bool view_protocol= 0, view_protocol_enabled= 0;
|
||||||
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
|
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
|
||||||
static my_bool parsing_disabled= 0;
|
static my_bool parsing_disabled= 0;
|
||||||
static my_bool display_result_vertically= FALSE,
|
static my_bool display_result_vertically= FALSE, display_result_lower= FALSE,
|
||||||
display_metadata= FALSE, display_result_sorted= FALSE;
|
display_metadata= FALSE, display_result_sorted= FALSE;
|
||||||
static my_bool disable_query_log= 0, disable_result_log= 0;
|
static my_bool disable_query_log= 0, disable_result_log= 0;
|
||||||
static my_bool disable_warnings= 0;
|
static my_bool disable_warnings= 0;
|
||||||
@ -230,6 +230,8 @@ struct st_connection
|
|||||||
char *name;
|
char *name;
|
||||||
size_t name_len;
|
size_t name_len;
|
||||||
MYSQL_STMT* stmt;
|
MYSQL_STMT* stmt;
|
||||||
|
/* Set after send to disallow other queries before reap */
|
||||||
|
my_bool pending;
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
const char *cur_query;
|
const char *cur_query;
|
||||||
@ -273,6 +275,7 @@ enum enum_commands {
|
|||||||
Q_DISABLE_ABORT_ON_ERROR, Q_ENABLE_ABORT_ON_ERROR,
|
Q_DISABLE_ABORT_ON_ERROR, Q_ENABLE_ABORT_ON_ERROR,
|
||||||
Q_DISPLAY_VERTICAL_RESULTS, Q_DISPLAY_HORIZONTAL_RESULTS,
|
Q_DISPLAY_VERTICAL_RESULTS, Q_DISPLAY_HORIZONTAL_RESULTS,
|
||||||
Q_QUERY_VERTICAL, Q_QUERY_HORIZONTAL, Q_SORTED_RESULT,
|
Q_QUERY_VERTICAL, Q_QUERY_HORIZONTAL, Q_SORTED_RESULT,
|
||||||
|
Q_LOWERCASE,
|
||||||
Q_START_TIMER, Q_END_TIMER,
|
Q_START_TIMER, Q_END_TIMER,
|
||||||
Q_CHARACTER_SET, Q_DISABLE_PS_PROTOCOL, Q_ENABLE_PS_PROTOCOL,
|
Q_CHARACTER_SET, Q_DISABLE_PS_PROTOCOL, Q_ENABLE_PS_PROTOCOL,
|
||||||
Q_DISABLE_RECONNECT, Q_ENABLE_RECONNECT,
|
Q_DISABLE_RECONNECT, Q_ENABLE_RECONNECT,
|
||||||
@ -344,6 +347,7 @@ const char *command_names[]=
|
|||||||
"query_vertical",
|
"query_vertical",
|
||||||
"query_horizontal",
|
"query_horizontal",
|
||||||
"sorted_result",
|
"sorted_result",
|
||||||
|
"lowercase_result",
|
||||||
"start_timer",
|
"start_timer",
|
||||||
"end_timer",
|
"end_timer",
|
||||||
"character_set",
|
"character_set",
|
||||||
@ -4651,7 +4655,8 @@ void do_close_connection(struct st_command *command)
|
|||||||
if (con->util_mysql)
|
if (con->util_mysql)
|
||||||
mysql_close(con->util_mysql);
|
mysql_close(con->util_mysql);
|
||||||
con->util_mysql= 0;
|
con->util_mysql= 0;
|
||||||
|
con->pending= FALSE;
|
||||||
|
|
||||||
my_free(con->name, MYF(0));
|
my_free(con->name, MYF(0));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -6483,6 +6488,9 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
|||||||
|
|
||||||
if (flags & QUERY_SEND_FLAG)
|
if (flags & QUERY_SEND_FLAG)
|
||||||
{
|
{
|
||||||
|
if (cn->pending)
|
||||||
|
die ("Cannot run query on connection between send and reap");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Send the query
|
Send the query
|
||||||
*/
|
*/
|
||||||
@ -6502,8 +6510,11 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
|||||||
wait_query_thread_end(cn);
|
wait_query_thread_end(cn);
|
||||||
#endif /*EMBEDDED_LIBRARY*/
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
if (!(flags & QUERY_REAP_FLAG))
|
if (!(flags & QUERY_REAP_FLAG))
|
||||||
|
{
|
||||||
|
cn->pending= TRUE;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -6587,6 +6598,7 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
|||||||
|
|
||||||
end:
|
end:
|
||||||
|
|
||||||
|
cn->pending= FALSE;
|
||||||
/*
|
/*
|
||||||
We save the return code (mysql_errno(mysql)) from the last call sent
|
We save the return code (mysql_errno(mysql)) from the last call sent
|
||||||
to the server into the mysqltest builtin variable $mysql_errno. This
|
to the server into the mysqltest builtin variable $mysql_errno. This
|
||||||
@ -7841,6 +7853,13 @@ int main(int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
display_result_sorted= TRUE;
|
display_result_sorted= TRUE;
|
||||||
break;
|
break;
|
||||||
|
case Q_LOWERCASE:
|
||||||
|
/*
|
||||||
|
Turn on lowercasing of result, will be reset after next
|
||||||
|
command
|
||||||
|
*/
|
||||||
|
display_result_lower= TRUE;
|
||||||
|
break;
|
||||||
case Q_LET: do_let(command); break;
|
case Q_LET: do_let(command); break;
|
||||||
case Q_EVAL_RESULT:
|
case Q_EVAL_RESULT:
|
||||||
die("'eval_result' command is deprecated");
|
die("'eval_result' command is deprecated");
|
||||||
@ -8056,8 +8075,9 @@ int main(int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
free_all_replace();
|
free_all_replace();
|
||||||
|
|
||||||
/* Also reset "sorted_result" */
|
/* Also reset "sorted_result" and "lowercase"*/
|
||||||
display_result_sorted= FALSE;
|
display_result_sorted= FALSE;
|
||||||
|
display_result_lower= FALSE;
|
||||||
}
|
}
|
||||||
last_command_executed= command_executed;
|
last_command_executed= command_executed;
|
||||||
|
|
||||||
@ -9461,6 +9481,18 @@ void replace_dynstr_append_mem(DYNAMIC_STRING *ds,
|
|||||||
fix_win_paths(val, len);
|
fix_win_paths(val, len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (display_result_lower)
|
||||||
|
{
|
||||||
|
/* Convert to lower case, and do this first */
|
||||||
|
char lower[512];
|
||||||
|
char *c= lower;
|
||||||
|
for (const char *v= val; *v; v++)
|
||||||
|
*c++= my_tolower(charset_info, *v);
|
||||||
|
*c= '\0';
|
||||||
|
/* Copy from this buffer instead */
|
||||||
|
val= lower;
|
||||||
|
}
|
||||||
|
|
||||||
if (glob_replace_regex)
|
if (glob_replace_regex)
|
||||||
{
|
{
|
||||||
/* Regex replace */
|
/* Regex replace */
|
||||||
|
@ -20,43 +20,20 @@
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
# These are not to be prefixed with "mtr_"
|
sub gprof_collect ($@) {
|
||||||
|
my ($exe_mysqld, @gprof_dirs)= @_;
|
||||||
|
|
||||||
sub gprof_prepare ();
|
print ("Collecting gprof reports.....\n");
|
||||||
sub gprof_collect ();
|
|
||||||
|
|
||||||
##############################################################################
|
foreach my $datadir (@gprof_dirs)
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
sub gprof_prepare () {
|
|
||||||
|
|
||||||
rmtree($::opt_gprof_dir);
|
|
||||||
mkdir($::opt_gprof_dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIXME what about master1 and slave1?!
|
|
||||||
sub gprof_collect () {
|
|
||||||
|
|
||||||
if ( -f "$::master->[0]->{'path_myddir'}/gmon.out" )
|
|
||||||
{
|
{
|
||||||
# FIXME check result code?!
|
my $gprof_msg= "$datadir/gprof.msg";
|
||||||
mtr_run("gprof",
|
my $gprof_err= "$datadir/gprof.err";
|
||||||
[$::exe_master_mysqld,
|
if ( -f "$datadir/gmon.out" )
|
||||||
"$::master->[0]->{'path_myddir'}/gmon.out"],
|
{
|
||||||
$::opt_gprof_master, "", "", "");
|
system("gprof $exe_mysqld $datadir/gmon.out 2>$gprof_err >$gprof_msg");
|
||||||
print "Master execution profile has been saved in $::opt_gprof_master\n";
|
print ("GPROF output in $gprof_msg, errors in $gprof_err\n");
|
||||||
}
|
}
|
||||||
if ( -f "$::slave->[0]->{'path_myddir'}/gmon.out" )
|
|
||||||
{
|
|
||||||
# FIXME check result code?!
|
|
||||||
mtr_run("gprof",
|
|
||||||
[$::exe_slave_mysqld,
|
|
||||||
"$::slave->[0]->{'path_myddir'}/gmon.out"],
|
|
||||||
$::opt_gprof_slave, "", "", "");
|
|
||||||
print "Slave execution profile has been saved in $::opt_gprof_slave\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +87,7 @@ use IO::Select;
|
|||||||
require "lib/mtr_process.pl";
|
require "lib/mtr_process.pl";
|
||||||
require "lib/mtr_io.pl";
|
require "lib/mtr_io.pl";
|
||||||
require "lib/mtr_gcov.pl";
|
require "lib/mtr_gcov.pl";
|
||||||
|
require "lib/mtr_gprof.pl";
|
||||||
require "lib/mtr_misc.pl";
|
require "lib/mtr_misc.pl";
|
||||||
|
|
||||||
$SIG{INT}= sub { mtr_error("Got ^C signal"); };
|
$SIG{INT}= sub { mtr_error("Got ^C signal"); };
|
||||||
@ -167,6 +168,9 @@ our $opt_gcov_exe= "gcov";
|
|||||||
our $opt_gcov_err= "mysql-test-gcov.msg";
|
our $opt_gcov_err= "mysql-test-gcov.msg";
|
||||||
our $opt_gcov_msg= "mysql-test-gcov.err";
|
our $opt_gcov_msg= "mysql-test-gcov.err";
|
||||||
|
|
||||||
|
our $opt_gprof;
|
||||||
|
our %gprof_dirs;
|
||||||
|
|
||||||
our $glob_debugger= 0;
|
our $glob_debugger= 0;
|
||||||
our $opt_gdb;
|
our $opt_gdb;
|
||||||
our $opt_client_gdb;
|
our $opt_client_gdb;
|
||||||
@ -745,6 +749,9 @@ sub run_worker ($) {
|
|||||||
if ($opt_valgrind_mysqld) {
|
if ($opt_valgrind_mysqld) {
|
||||||
valgrind_exit_reports();
|
valgrind_exit_reports();
|
||||||
}
|
}
|
||||||
|
if ( $opt_gprof ) {
|
||||||
|
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
||||||
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -857,6 +864,7 @@ sub command_line_setup {
|
|||||||
|
|
||||||
# Coverage, profiling etc
|
# Coverage, profiling etc
|
||||||
'gcov' => \$opt_gcov,
|
'gcov' => \$opt_gcov,
|
||||||
|
'gprof' => \$opt_gprof,
|
||||||
'valgrind|valgrind-all' => \$opt_valgrind,
|
'valgrind|valgrind-all' => \$opt_valgrind,
|
||||||
'valgrind-mysqltest' => \$opt_valgrind_mysqltest,
|
'valgrind-mysqltest' => \$opt_valgrind_mysqltest,
|
||||||
'valgrind-mysqld' => \$opt_valgrind_mysqld,
|
'valgrind-mysqld' => \$opt_valgrind_mysqld,
|
||||||
@ -1249,7 +1257,7 @@ sub command_line_setup {
|
|||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Gcov flag
|
# Gcov flag
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
if ( $opt_gcov and ! $source_dist )
|
if ( ($opt_gcov or $opt_gprof) and ! $source_dist )
|
||||||
{
|
{
|
||||||
mtr_error("Coverage test needs the source - please use source dist");
|
mtr_error("Coverage test needs the source - please use source dist");
|
||||||
}
|
}
|
||||||
@ -3549,7 +3557,7 @@ sub run_testcase ($) {
|
|||||||
{
|
{
|
||||||
# mysqltest failed, probably crashed
|
# mysqltest failed, probably crashed
|
||||||
$tinfo->{comment}=
|
$tinfo->{comment}=
|
||||||
"mysqltest failed with unexpected return code $res";
|
"mysqltest failed with unexpected return code $res\n";
|
||||||
report_failure_and_restart($tinfo);
|
report_failure_and_restart($tinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4140,6 +4148,20 @@ sub report_failure_and_restart ($) {
|
|||||||
# about what failed has been saved to file. Save the report
|
# about what failed has been saved to file. Save the report
|
||||||
# in tinfo
|
# in tinfo
|
||||||
$tinfo->{logfile}= mtr_fromfile($logfile);
|
$tinfo->{logfile}= mtr_fromfile($logfile);
|
||||||
|
# If no newlines in the test log:
|
||||||
|
# (it will contain the CURRENT_TEST written by mtr, so is not empty)
|
||||||
|
if ($tinfo->{logfile} !~ /\n/)
|
||||||
|
{
|
||||||
|
# Show how far it got before suddenly failing
|
||||||
|
$tinfo->{comment}.= "mysqltest failed but provided no output\n";
|
||||||
|
my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log";
|
||||||
|
if (-e $log_file_name) {
|
||||||
|
$tinfo->{comment}.=
|
||||||
|
"The result from queries just before the failure was:".
|
||||||
|
"\n< snip >\n".
|
||||||
|
mtr_lastlinesfromfile($log_file_name, 20)."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4351,6 +4373,8 @@ sub mysqld_start ($$) {
|
|||||||
}
|
}
|
||||||
# Remember this log file for valgrind error report search
|
# Remember this log file for valgrind error report search
|
||||||
$mysqld_logs{$output}= 1 if $opt_valgrind;
|
$mysqld_logs{$output}= 1 if $opt_valgrind;
|
||||||
|
# Remember data dir for gmon.out files if using gprof
|
||||||
|
$gprof_dirs{$mysqld->value('datadir')}= 1 if $opt_gprof;
|
||||||
|
|
||||||
if ( defined $exe )
|
if ( defined $exe )
|
||||||
{
|
{
|
||||||
|
@ -523,6 +523,26 @@ a D
|
|||||||
1 1
|
1 1
|
||||||
1 4
|
1 4
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 ( f1 char(10));
|
||||||
|
insert into t1 values ("Abcd");
|
||||||
|
select * from t1;
|
||||||
|
f1
|
||||||
|
Abcd
|
||||||
|
select * from t2;;
|
||||||
|
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||||
|
select * from t1;
|
||||||
|
f1
|
||||||
|
Abcd
|
||||||
|
select * from t1;;
|
||||||
|
Result coming up
|
||||||
|
f1
|
||||||
|
Abcd
|
||||||
|
select * from t1;;
|
||||||
|
f1
|
||||||
|
Abcd
|
||||||
|
mysqltest: At line 2: Cannot run query on connection between send and reap
|
||||||
|
select * from t1;;
|
||||||
|
drop table t1;
|
||||||
mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file'
|
mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file'
|
||||||
mysqltest: At line 1: Missing required argument 'filename' to command 'write_file'
|
mysqltest: At line 1: Missing required argument 'filename' to command 'write_file'
|
||||||
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
|
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
|
||||||
@ -682,6 +702,29 @@ INSERT INTO t1 SELECT f1 - 256 FROM t1;
|
|||||||
INSERT INTO t1 SELECT f1 - 512 FROM t1;
|
INSERT INTO t1 SELECT f1 - 512 FROM t1;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
select "500g bl<62>b<EFBFBD>rsyltet<65>y" as "will be lower cased";
|
||||||
|
will be lower cased
|
||||||
|
500g bl<62>b<EFBFBD>rsyltet<65>y
|
||||||
|
SELECT "UPPER" AS "WILL NOT BE lower cased";
|
||||||
|
WILL NOT BE lower cased
|
||||||
|
UPPER
|
||||||
|
UP
|
||||||
|
SELECT 0 as "UP AGAIN";
|
||||||
|
UP AGAIN
|
||||||
|
0
|
||||||
|
select "abcdef" as "uvwxyz";
|
||||||
|
uvwxyz
|
||||||
|
abcdef
|
||||||
|
select "xyz" as name union select "abc" as name order by name desc;
|
||||||
|
name
|
||||||
|
abc
|
||||||
|
xyz
|
||||||
|
select 1 as "some new text";
|
||||||
|
some new text
|
||||||
|
1
|
||||||
|
select 0 as "will not lower case <20><><EFBFBD>";
|
||||||
|
will not lower case <20><><EFBFBD>
|
||||||
|
0
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
a int, b varchar(255), c datetime
|
a int, b varchar(255), c datetime
|
||||||
);
|
);
|
||||||
|
@ -1605,6 +1605,57 @@ insert into t1 values (2,4);
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Tests of send
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
create table t1 ( f1 char(10));
|
||||||
|
insert into t1 values ("Abcd");
|
||||||
|
|
||||||
|
# 1. Basic test
|
||||||
|
|
||||||
|
send select * from t1;
|
||||||
|
reap;
|
||||||
|
|
||||||
|
# 2. Test with error
|
||||||
|
|
||||||
|
--send select * from t2;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
--reap
|
||||||
|
|
||||||
|
# 3. test send of next stmt
|
||||||
|
|
||||||
|
--send
|
||||||
|
select * from t1;
|
||||||
|
--reap
|
||||||
|
|
||||||
|
# 4. Non-query stmt betwen send and reap allowed
|
||||||
|
|
||||||
|
--send select * from t1;
|
||||||
|
--sleep 0.05
|
||||||
|
--echo Result coming up
|
||||||
|
--reap
|
||||||
|
|
||||||
|
# 5. Test of send_eval
|
||||||
|
|
||||||
|
--let $my_stmt= select * from t1;
|
||||||
|
--send_eval $my_stmt
|
||||||
|
--reap
|
||||||
|
|
||||||
|
# 6. Test that mysqltest does not allow query stmt between send and reap
|
||||||
|
# Untestable directly as it causes mysqltest to fail
|
||||||
|
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/mysqltest.in
|
||||||
|
--send select * from t1;
|
||||||
|
select 1;
|
||||||
|
--reap
|
||||||
|
EOF
|
||||||
|
--error 1
|
||||||
|
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.in 2>&1
|
||||||
|
remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.in;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# test for remove_file
|
# test for remove_file
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
@ -2059,6 +2110,44 @@ INSERT INTO t1 SELECT f1 - 512 FROM t1;
|
|||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
--enable_result_log
|
--enable_result_log
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# test for lowercase_result
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 1. Basic test
|
||||||
|
--lowercase_result
|
||||||
|
SELECT "500g BL<42>B<EFBFBD>RSYLTET<45>Y" AS "WILL BE lower cased";
|
||||||
|
|
||||||
|
# 2. test that it does not apply to next statement
|
||||||
|
SELECT "UPPER" AS "WILL NOT BE lower cased";
|
||||||
|
|
||||||
|
# 3. test that it does not affect non-SQL or the following statement
|
||||||
|
--lowercase_result
|
||||||
|
--echo UP
|
||||||
|
SELECT 0 as "UP AGAIN";
|
||||||
|
|
||||||
|
# 4. test that it works with eval and variables
|
||||||
|
let $lower_stmt=SELECT "ABCdef" AS "uvwXYZ";
|
||||||
|
--lowercase_result
|
||||||
|
eval $lower_stmt;
|
||||||
|
|
||||||
|
# 5. test that it works in combination with sort
|
||||||
|
sorted_result;
|
||||||
|
lowercase_result;
|
||||||
|
SELECT "Xyz" AS Name UNION SELECT "Abc" as Name ORDER BY Name DESC;
|
||||||
|
|
||||||
|
# 6. Test combination with replace, and that lower casing is done first
|
||||||
|
--lowercase_result
|
||||||
|
--replace_result old new
|
||||||
|
SELECT 1 as "SOME OLD TEXT";
|
||||||
|
|
||||||
|
# 7. Test missing lower casing of "unknown" characters
|
||||||
|
--character_set utf8
|
||||||
|
--lowercase_result
|
||||||
|
SELECT 0 as "WILL NOT lower case <20><><EFBFBD>";
|
||||||
|
--character_set latin1
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Some coverage tests
|
# Some coverage tests
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user