mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge mskold@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/usr/local/home/marty/MySQL/mysql-4.1
This commit is contained in:
@ -322,6 +322,10 @@ SOURCE=..\mysys\mulalloc.c
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\mysys\my_access.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\mysys\my_alloc.c
|
SOURCE=..\mysys\my_alloc.c
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -295,6 +295,10 @@ SOURCE=..\mysys\mulalloc.c
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\mysys\my_access.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\mysys\my_alloc.c
|
SOURCE=..\mysys\my_alloc.c
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -989,7 +989,8 @@ static int read_lines(bool execute_commands)
|
|||||||
a nil, it still needs the space in the linebuffer for it. This is,
|
a nil, it still needs the space in the linebuffer for it. This is,
|
||||||
naturally, undocumented.
|
naturally, undocumented.
|
||||||
*/
|
*/
|
||||||
} while (linebuffer[0] <= linebuffer[1] + 1);
|
} while ((unsigned char)linebuffer[0] <=
|
||||||
|
(unsigned char)linebuffer[1] + 1);
|
||||||
line= buffer.c_ptr();
|
line= buffer.c_ptr();
|
||||||
#endif /* __NETWARE__ */
|
#endif /* __NETWARE__ */
|
||||||
#else
|
#else
|
||||||
|
@ -398,7 +398,7 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query,
|
|||||||
Hack: instead of init_queue, we'll use reinit queue to be able
|
Hack: instead of init_queue, we'll use reinit queue to be able
|
||||||
to alloc queue with alloc_root()
|
to alloc queue with alloc_root()
|
||||||
*/
|
*/
|
||||||
res=ftb->queue.max_elements=1+query_len/(min(ft_min_word_len,2)+1);
|
res=ftb->queue.max_elements=1+query_len/2;
|
||||||
if (!(ftb->queue.root=
|
if (!(ftb->queue.root=
|
||||||
(byte **)alloc_root(&ftb->mem_root, (res+1)*sizeof(void*))))
|
(byte **)alloc_root(&ftb->mem_root, (res+1)*sizeof(void*))))
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
# and is part of the translation of the Bourne shell script with the
|
# and is part of the translation of the Bourne shell script with the
|
||||||
# same name.
|
# same name.
|
||||||
|
|
||||||
|
use File::Basename;
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
sub collect_test_cases ($);
|
sub collect_test_cases ($);
|
||||||
@ -39,6 +40,7 @@ sub collect_test_cases ($) {
|
|||||||
if ( @::opt_cases )
|
if ( @::opt_cases )
|
||||||
{
|
{
|
||||||
foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort
|
foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort
|
||||||
|
$tname= basename($tname, ".test");
|
||||||
my $elem= "$tname.test";
|
my $elem= "$tname.test";
|
||||||
if ( ! -f "$testdir/$elem")
|
if ( ! -f "$testdir/$elem")
|
||||||
{
|
{
|
||||||
@ -161,52 +163,73 @@ sub collect_one_test_case($$$$$) {
|
|||||||
my $slave_sh= "$testdir/$tname-slave.sh";
|
my $slave_sh= "$testdir/$tname-slave.sh";
|
||||||
my $disabled= "$testdir/$tname.disabled";
|
my $disabled= "$testdir/$tname.disabled";
|
||||||
|
|
||||||
$tinfo->{'master_opt'}= ["--default-time-zone=+3:00"];
|
$tinfo->{'master_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : [];
|
||||||
$tinfo->{'slave_opt'}= ["--default-time-zone=+3:00"];
|
$tinfo->{'slave_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : [];
|
||||||
$tinfo->{'slave_mi'}= [];
|
$tinfo->{'slave_mi'}= [];
|
||||||
|
|
||||||
if ( -f $master_opt_file )
|
if ( -f $master_opt_file )
|
||||||
{
|
{
|
||||||
$tinfo->{'master_restart'}= 1; # We think so for now
|
$tinfo->{'master_restart'}= 1; # We think so for now
|
||||||
# This is a dirty hack from old mysql-test-run, we use the opt file
|
|
||||||
# to flag other things as well, it is not a opt list at all
|
|
||||||
$tinfo->{'master_opt'}= mtr_get_opts_from_file($master_opt_file);
|
|
||||||
|
|
||||||
foreach my $opt (@{$tinfo->{'master_opt'}})
|
MASTER_OPT:
|
||||||
{
|
{
|
||||||
my $value;
|
my $master_opt= mtr_get_opts_from_file($master_opt_file);
|
||||||
|
|
||||||
$value= mtr_match_prefix($opt, "--timezone=");
|
foreach my $opt ( @$master_opt )
|
||||||
|
|
||||||
if ( defined $value )
|
|
||||||
{
|
{
|
||||||
$tinfo->{'timezone'}= $value;
|
my $value;
|
||||||
$tinfo->{'master_opt'}= [];
|
|
||||||
$tinfo->{'master_restart'}= 0;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
|
|
||||||
$value= mtr_match_prefix($opt, "--result-file=");
|
# This is a dirty hack from old mysql-test-run, we use the opt
|
||||||
|
# file to flag other things as well, it is not a opt list at
|
||||||
|
# all
|
||||||
|
|
||||||
if ( defined $value )
|
$value= mtr_match_prefix($opt, "--timezone=");
|
||||||
{
|
if ( defined $value )
|
||||||
$tinfo->{'result_file'}= "r/$value.result";
|
|
||||||
if ( $::opt_result_ext and $::opt_record or
|
|
||||||
-f "$tinfo->{'result_file'}$::opt_result_ext")
|
|
||||||
{
|
{
|
||||||
$tinfo->{'result_file'}.= $::opt_result_ext;
|
$tinfo->{'timezone'}= $value;
|
||||||
|
$tinfo->{'skip'}= 1 if $::glob_win32; # FIXME server unsets TZ
|
||||||
|
last MASTER_OPT;
|
||||||
}
|
}
|
||||||
$tinfo->{'master_opt'}= [];
|
|
||||||
$tinfo->{'master_restart'}= 0;
|
$value= mtr_match_prefix($opt, "--result-file=");
|
||||||
last;
|
if ( defined $value )
|
||||||
|
{
|
||||||
|
$tinfo->{'result_file'}= "r/$value.result";
|
||||||
|
if ( $::opt_result_ext and $::opt_record or
|
||||||
|
-f "$tinfo->{'result_file'}$::opt_result_ext")
|
||||||
|
{
|
||||||
|
$tinfo->{'result_file'}.= $::opt_result_ext;
|
||||||
|
}
|
||||||
|
$tinfo->{'master_restart'}= 0;
|
||||||
|
last MASTER_OPT;
|
||||||
|
}
|
||||||
|
|
||||||
|
# If we set default time zone, remove the one we have
|
||||||
|
$value= mtr_match_prefix($opt, "--default-time-zone=");
|
||||||
|
if ( defined $value )
|
||||||
|
{
|
||||||
|
$tinfo->{'master_opt'}= [];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ok, this was a real option list, add it
|
||||||
|
push(@{$tinfo->{'master_opt'}}, @$master_opt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( -f $slave_opt_file )
|
if ( -f $slave_opt_file )
|
||||||
{
|
{
|
||||||
$tinfo->{'slave_opt'}= mtr_get_opts_from_file($slave_opt_file);
|
|
||||||
$tinfo->{'slave_restart'}= 1;
|
$tinfo->{'slave_restart'}= 1;
|
||||||
|
my $slave_opt= mtr_get_opts_from_file($slave_opt_file);
|
||||||
|
|
||||||
|
foreach my $opt ( @$slave_opt )
|
||||||
|
{
|
||||||
|
# If we set default time zone, remove the one we have
|
||||||
|
my $value= mtr_match_prefix($opt, "--default-time-zone=");
|
||||||
|
$tinfo->{'slave_opt'}= [] if defined $value;
|
||||||
|
}
|
||||||
|
push(@{$tinfo->{'slave_opt'}}, @$slave_opt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( -f $slave_mi_file )
|
if ( -f $slave_mi_file )
|
||||||
|
@ -9,6 +9,9 @@ use strict;
|
|||||||
sub mtr_full_hostname ();
|
sub mtr_full_hostname ();
|
||||||
sub mtr_init_args ($);
|
sub mtr_init_args ($);
|
||||||
sub mtr_add_arg ($$);
|
sub mtr_add_arg ($$);
|
||||||
|
sub mtr_path_exists(@);
|
||||||
|
sub mtr_script_exists(@);
|
||||||
|
sub mtr_exe_exists(@);
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
@ -47,4 +50,53 @@ sub mtr_add_arg ($$) {
|
|||||||
push(@$args, sprintf($format, @fargs));
|
push(@$args, sprintf($format, @fargs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
sub mtr_path_exists (@) {
|
||||||
|
foreach my $path ( @_ )
|
||||||
|
{
|
||||||
|
return $path if -e $path;
|
||||||
|
}
|
||||||
|
if ( @_ == 1 )
|
||||||
|
{
|
||||||
|
mtr_error("Could not find $_[0]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_error("Could not find any of " . join(" ", @_));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mtr_script_exists (@) {
|
||||||
|
foreach my $path ( @_ )
|
||||||
|
{
|
||||||
|
return $path if -x $path;
|
||||||
|
}
|
||||||
|
if ( @_ == 1 )
|
||||||
|
{
|
||||||
|
mtr_error("Could not find $_[0]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_error("Could not find any of " . join(" ", @_));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mtr_exe_exists (@) {
|
||||||
|
foreach my $path ( @_ )
|
||||||
|
{
|
||||||
|
$path.= ".exe" if $::opt_win32;
|
||||||
|
return $path if -x $path;
|
||||||
|
}
|
||||||
|
if ( @_ == 1 )
|
||||||
|
{
|
||||||
|
mtr_error("Could not find $_[0]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_error("Could not find any of " . join(" ", @_));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -38,6 +38,13 @@ sub mtr_show_failed_diff ($) {
|
|||||||
my $result_file= "r/$tname.result";
|
my $result_file= "r/$tname.result";
|
||||||
my $eval_file= "r/$tname.eval";
|
my $eval_file= "r/$tname.eval";
|
||||||
|
|
||||||
|
if ( $::opt_suite ne "main" )
|
||||||
|
{
|
||||||
|
$reject_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$reject_file";
|
||||||
|
$result_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$result_file";
|
||||||
|
$eval_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$eval_file";
|
||||||
|
}
|
||||||
|
|
||||||
if ( -f $eval_file )
|
if ( -f $eval_file )
|
||||||
{
|
{
|
||||||
$result_file= $eval_file;
|
$result_file= $eval_file;
|
||||||
|
@ -264,6 +264,7 @@ our $opt_warnings;
|
|||||||
|
|
||||||
our $opt_udiff;
|
our $opt_udiff;
|
||||||
|
|
||||||
|
our $opt_skip_ndbcluster;
|
||||||
our $opt_with_ndbcluster;
|
our $opt_with_ndbcluster;
|
||||||
our $opt_with_openssl;
|
our $opt_with_openssl;
|
||||||
|
|
||||||
@ -463,6 +464,7 @@ sub command_line_setup () {
|
|||||||
# Control what test suites or cases to run
|
# Control what test suites or cases to run
|
||||||
'force' => \$opt_force,
|
'force' => \$opt_force,
|
||||||
'with-ndbcluster' => \$opt_with_ndbcluster,
|
'with-ndbcluster' => \$opt_with_ndbcluster,
|
||||||
|
'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,
|
||||||
'do-test=s' => \$opt_do_test,
|
'do-test=s' => \$opt_do_test,
|
||||||
'suite=s' => \$opt_suite,
|
'suite=s' => \$opt_suite,
|
||||||
'skip-rpl' => \$opt_skip_rpl,
|
'skip-rpl' => \$opt_skip_rpl,
|
||||||
@ -662,6 +664,11 @@ sub command_line_setup () {
|
|||||||
$opt_ndbconnectstring= "host=localhost:$opt_ndbcluster_port";
|
$opt_ndbconnectstring= "host=localhost:$opt_ndbcluster_port";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $opt_skip_ndbcluster )
|
||||||
|
{
|
||||||
|
$opt_with_ndbcluster= 0;
|
||||||
|
}
|
||||||
|
|
||||||
# FIXME
|
# FIXME
|
||||||
|
|
||||||
#if ( $opt_valgrind or $opt_valgrind_all )
|
#if ( $opt_valgrind or $opt_valgrind_all )
|
||||||
@ -763,146 +770,83 @@ sub executable_setup () {
|
|||||||
|
|
||||||
if ( $opt_source_dist )
|
if ( $opt_source_dist )
|
||||||
{
|
{
|
||||||
|
if ( $glob_win32 )
|
||||||
|
{
|
||||||
|
$path_client_bindir= mtr_path_exists("$glob_basedir/client_release");
|
||||||
|
$exe_mysqld= mtr_exe_exists ("$path_client_bindir/mysqld-nt");
|
||||||
|
$path_language= mtr_path_exists("$glob_basedir/share/english/");
|
||||||
|
$path_charsetsdir= mtr_path_exists("$glob_basedir/share/charsets");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$path_client_bindir= mtr_path_exists("$glob_basedir/client");
|
||||||
|
$exe_mysqld= mtr_exe_exists ("$glob_basedir/sql/mysqld");
|
||||||
|
$path_language= mtr_path_exists("$glob_basedir/sql/share/english/");
|
||||||
|
$path_charsetsdir= mtr_path_exists("$glob_basedir/sql/share/charsets");
|
||||||
|
}
|
||||||
|
|
||||||
if ( $glob_use_embedded_server )
|
if ( $glob_use_embedded_server )
|
||||||
{
|
{
|
||||||
if ( -f "$glob_basedir/libmysqld/examples/mysqltest" )
|
my $path_examples= "$glob_basedir/libmysqld/examples";
|
||||||
{
|
$exe_mysqltest= mtr_exe_exists("$path_examples/mysqltest");
|
||||||
$exe_mysqltest= "$glob_basedir/libmysqld/examples/mysqltest";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mtr_error("Can't find embedded server 'mysqltest'");
|
|
||||||
}
|
|
||||||
$exe_mysql_client_test=
|
$exe_mysql_client_test=
|
||||||
"$glob_basedir/libmysqld/examples/mysql_client_test_embedded";
|
mtr_exe_exists("$path_examples/mysql_client_test_embedded");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( -f "$glob_basedir/client/.libs/lt-mysqltest" )
|
$exe_mysqltest= mtr_exe_exists("$glob_basedir/client/mysqltest");
|
||||||
{
|
|
||||||
$exe_mysqltest= "$glob_basedir/client/.libs/lt-mysqltest";
|
|
||||||
}
|
|
||||||
elsif ( -f "$glob_basedir/client/.libs/mysqltest" )
|
|
||||||
{
|
|
||||||
$exe_mysqltest= "$glob_basedir/client/.libs/mysqltest";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$exe_mysqltest= "$glob_basedir/client/mysqltest";
|
|
||||||
}
|
|
||||||
$exe_mysql_client_test=
|
$exe_mysql_client_test=
|
||||||
"$glob_basedir/tests/mysql_client_test";
|
mtr_exe_exists("$glob_basedir/tests/mysql_client_test");
|
||||||
}
|
}
|
||||||
if ( -f "$glob_basedir/client/.libs/mysqldump" )
|
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
|
||||||
{
|
$exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow");
|
||||||
$exe_mysqldump= "$glob_basedir/client/.libs/mysqldump";
|
$exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog");
|
||||||
}
|
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
|
||||||
else
|
$exe_mysql= mtr_exe_exists("$path_client_bindir/mysql");
|
||||||
{
|
$exe_mysql_fix_system_tables=
|
||||||
$exe_mysqldump= "$glob_basedir/client/mysqldump";
|
mtr_script_exists("$glob_basedir/scripts/mysql_fix_privilege_tables");
|
||||||
}
|
$path_ndb_tools_dir= mtr_path_exists("$glob_basedir/ndb/tools");
|
||||||
if ( -f "$glob_basedir/client/.libs/mysqlshow" )
|
$exe_ndb_mgm= "$glob_basedir/ndb/src/mgmclient/ndb_mgm";
|
||||||
{
|
|
||||||
$exe_mysqlshow= "$glob_basedir/client/.libs/mysqlshow";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$exe_mysqlshow= "$glob_basedir/client/mysqlshow";
|
|
||||||
}
|
|
||||||
if ( -f "$glob_basedir/client/.libs/mysqlbinlog" )
|
|
||||||
{
|
|
||||||
$exe_mysqlbinlog= "$glob_basedir/client/.libs/mysqlbinlog";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$exe_mysqlbinlog= "$glob_basedir/client/mysqlbinlog";
|
|
||||||
}
|
|
||||||
|
|
||||||
$path_client_bindir= "$glob_basedir/client";
|
|
||||||
$exe_mysqld= "$glob_basedir/sql/mysqld";
|
|
||||||
$exe_mysqladmin= "$path_client_bindir/mysqladmin";
|
|
||||||
$exe_mysql= "$path_client_bindir/mysql";
|
|
||||||
$exe_mysql_fix_system_tables= "$glob_basedir/scripts/mysql_fix_privilege_tables";
|
|
||||||
$path_language= "$glob_basedir/sql/share/english/";
|
|
||||||
$path_charsetsdir= "$glob_basedir/sql/share/charsets";
|
|
||||||
|
|
||||||
$path_ndb_tools_dir= "$glob_basedir/ndb/tools";
|
|
||||||
$exe_ndb_mgm= "$glob_basedir/ndb/src/mgmclient/ndb_mgm";
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my $path_tests_bindir= "$glob_basedir/tests";
|
$path_client_bindir= mtr_path_exists("$glob_basedir/bin");
|
||||||
|
$exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest");
|
||||||
|
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
|
||||||
|
$exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow");
|
||||||
|
$exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog");
|
||||||
|
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
|
||||||
|
$exe_mysql= mtr_exe_exists("$path_client_bindir/mysql");
|
||||||
|
$exe_mysql_fix_system_tables=
|
||||||
|
mtr_script_exists("$path_client_bindir/mysql_fix_privilege_tables");
|
||||||
|
|
||||||
$path_client_bindir= "$glob_basedir/bin";
|
$path_language= mtr_path_exists("$glob_basedir/share/mysql/english/",
|
||||||
$exe_mysqltest= "$path_client_bindir/mysqltest";
|
"$glob_basedir/share/english/");
|
||||||
$exe_mysqldump= "$path_client_bindir/mysqldump";
|
$path_charsetsdir= mtr_path_exists("$glob_basedir/share/mysql/charsets",
|
||||||
$exe_mysqlshow= "$path_client_bindir/mysqlshow";
|
"$glob_basedir/share/charsets");
|
||||||
$exe_mysqlbinlog= "$path_client_bindir/mysqlbinlog";
|
$exe_mysqld= mtr_exe_exists ("$glob_basedir/libexec/mysqld",
|
||||||
$exe_mysqladmin= "$path_client_bindir/mysqladmin";
|
"$glob_basedir/bin/mysqld");
|
||||||
$exe_mysql= "$path_client_bindir/mysql";
|
|
||||||
$exe_mysql_fix_system_tables= "$path_client_bindir/mysql_fix_privilege_tables";
|
|
||||||
|
|
||||||
if ( -d "$glob_basedir/share/mysql/english" )
|
|
||||||
{
|
|
||||||
$path_language ="$glob_basedir/share/mysql/english/";
|
|
||||||
$path_charsetsdir ="$glob_basedir/share/mysql/charsets";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$path_language ="$glob_basedir/share/english/";
|
|
||||||
$path_charsetsdir ="$glob_basedir/share/charsets";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( -x "$glob_basedir/libexec/mysqld" )
|
|
||||||
{
|
|
||||||
$exe_mysqld= "$glob_basedir/libexec/mysqld";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$exe_mysqld= "$glob_basedir/bin/mysqld";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $glob_use_embedded_server )
|
if ( $glob_use_embedded_server )
|
||||||
{
|
{
|
||||||
if ( -f "$path_client_bindir/mysqltest_embedded" )
|
$exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest_embedded");
|
||||||
{
|
$exe_mysql_client_test=
|
||||||
# FIXME valgrind?
|
mtr_exe_exists("$glob_basedir/tests/mysql_client_test_embedded",
|
||||||
$exe_mysqltest="$path_client_bindir/mysqltest_embedded";
|
"$path_client_bindir/mysql_client_test_embedded");
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mtr_error("Cannot find embedded server 'mysqltest_embedded'");
|
|
||||||
}
|
|
||||||
if ( -d "$path_tests_bindir/mysql_client_test_embedded" )
|
|
||||||
{
|
|
||||||
$exe_mysql_client_test=
|
|
||||||
"$path_tests_bindir/mysql_client_test_embedded";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$exe_mysql_client_test=
|
|
||||||
"$path_client_bindir/mysql_client_test_embedded";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$exe_mysqltest="$path_client_bindir/mysqltest";
|
$exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest");
|
||||||
$exe_mysql_client_test="$path_client_bindir/mysql_client_test";
|
$exe_mysql_client_test=
|
||||||
|
mtr_exe_exists("$path_client_bindir/mysql_client_test");
|
||||||
}
|
}
|
||||||
|
|
||||||
$path_ndb_tools_dir= "$glob_basedir/bin";
|
$path_ndb_tools_dir= "$glob_basedir/bin";
|
||||||
$exe_ndb_mgm= "$glob_basedir/bin/ndb_mgm";
|
$exe_ndb_mgm= "$glob_basedir/bin/ndb_mgm";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! $exe_master_mysqld )
|
$exe_master_mysqld= $exe_master_mysqld || $exe_mysqld;
|
||||||
{
|
$exe_slave_mysqld= $exe_slave_mysqld || $exe_mysqld;
|
||||||
$exe_master_mysqld= $exe_mysqld;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! $exe_slave_mysqld )
|
|
||||||
{
|
|
||||||
$exe_slave_mysqld= $exe_mysqld;
|
|
||||||
}
|
|
||||||
|
|
||||||
$path_ndb_backup_dir=
|
$path_ndb_backup_dir=
|
||||||
"$opt_vardir/ndbcluster-$opt_ndbcluster_port";
|
"$opt_vardir/ndbcluster-$opt_ndbcluster_port";
|
||||||
@ -921,15 +865,19 @@ sub executable_setup () {
|
|||||||
sub environment_setup () {
|
sub environment_setup () {
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Set LD_LIBRARY_PATH if we are using shared libraries
|
# We might not use a standard installation directory, like /usr/lib.
|
||||||
|
# Set LD_LIBRARY_PATH to make sure we find our installed libraries.
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
$ENV{'LD_LIBRARY_PATH'}=
|
unless ( $opt_source_dist )
|
||||||
"$glob_basedir/lib:$glob_basedir/libmysql/.libs" .
|
{
|
||||||
($ENV{'LD_LIBRARY_PATH'} ? ":$ENV{'LD_LIBRARY_PATH'}" : "");
|
$ENV{'LD_LIBRARY_PATH'}=
|
||||||
$ENV{'DYLD_LIBRARY_PATH'}=
|
"$glob_basedir/lib" .
|
||||||
"$glob_basedir/lib:$glob_basedir/libmysql/.libs" .
|
($ENV{'LD_LIBRARY_PATH'} ? ":$ENV{'LD_LIBRARY_PATH'}" : "");
|
||||||
($ENV{'DYLD_LIBRARY_PATH'} ? ":$ENV{'DYLD_LIBRARY_PATH'}" : "");
|
$ENV{'DYLD_LIBRARY_PATH'}=
|
||||||
|
"$glob_basedir/lib" .
|
||||||
|
($ENV{'DYLD_LIBRARY_PATH'} ? ":$ENV{'DYLD_LIBRARY_PATH'}" : "");
|
||||||
|
}
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Also command lines in .opt files may contain env vars
|
# Also command lines in .opt files may contain env vars
|
||||||
@ -1020,11 +968,6 @@ sub kill_and_cleanup () {
|
|||||||
|
|
||||||
mtr_report("Removing Stale Files");
|
mtr_report("Removing Stale Files");
|
||||||
|
|
||||||
if ( -l $opt_vardir and ! unlink($opt_vardir) )
|
|
||||||
{
|
|
||||||
mtr_error("Can't remove soft link \"$opt_vardir\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
rmtree("$opt_vardir/log");
|
rmtree("$opt_vardir/log");
|
||||||
rmtree("$opt_vardir/ndbcluster-$opt_ndbcluster_port");
|
rmtree("$opt_vardir/ndbcluster-$opt_ndbcluster_port");
|
||||||
rmtree("$opt_vardir/run");
|
rmtree("$opt_vardir/run");
|
||||||
@ -1722,6 +1665,11 @@ sub mysqld_arguments ($$$$$) {
|
|||||||
mtr_add_arg($args, "%s--local-infile", $prefix);
|
mtr_add_arg($args, "%s--local-infile", $prefix);
|
||||||
mtr_add_arg($args, "%s--datadir=%s", $prefix,
|
mtr_add_arg($args, "%s--datadir=%s", $prefix,
|
||||||
$master->[$idx]->{'path_myddir'});
|
$master->[$idx]->{'path_myddir'});
|
||||||
|
|
||||||
|
if ( $opt_skip_ndbcluster )
|
||||||
|
{
|
||||||
|
mtr_add_arg($args, "%s--skip-ndbcluster", $prefix);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $type eq 'slave' )
|
if ( $type eq 'slave' )
|
||||||
@ -1862,19 +1810,11 @@ sub mysqld_arguments ($$$$$) {
|
|||||||
mtr_add_arg($args, "%s--rpl-recovery-rank=1", $prefix);
|
mtr_add_arg($args, "%s--rpl-recovery-rank=1", $prefix);
|
||||||
mtr_add_arg($args, "%s--init-rpl-role=master", $prefix);
|
mtr_add_arg($args, "%s--init-rpl-role=master", $prefix);
|
||||||
}
|
}
|
||||||
else
|
elsif ( $type eq 'master' )
|
||||||
{
|
{
|
||||||
mtr_add_arg($args, "%s--exit-info=256", $prefix);
|
mtr_add_arg($args, "%s--exit-info=256", $prefix);
|
||||||
mtr_add_arg($args, "%s--open-files-limit=1024", $prefix);
|
mtr_add_arg($args, "%s--open-files-limit=1024", $prefix);
|
||||||
|
mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'});
|
||||||
if ( $type eq 'master' )
|
|
||||||
{
|
|
||||||
mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'});
|
|
||||||
}
|
|
||||||
if ( $type eq 'slave' )
|
|
||||||
{
|
|
||||||
mtr_add_arg($args, "%s--log=%s", $prefix, $slave->[0]->{'path_mylog'});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $args;
|
return $args;
|
||||||
|
@ -338,7 +338,7 @@ insert into t2 values (3, 1, 'xxbuz');
|
|||||||
select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
|
select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
|
||||||
t1_id name t2_id t1_id name
|
t1_id name t2_id t1_id name
|
||||||
1 data1 1 1 xxfoo
|
1 data1 1 1 xxfoo
|
||||||
select * from t2 where match name against ('a* b* c* d* e* f*' in boolean mode);
|
select * from t2 where match name against ('*a*b*c*d*e*f*' in boolean mode);
|
||||||
t2_id t1_id name
|
t2_id t1_id name
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
create table t1 (a text, fulltext key (a));
|
create table t1 (a text, fulltext key (a));
|
||||||
|
@ -722,3 +722,22 @@ WHERE hostname LIKE '%aol%'
|
|||||||
GROUP BY hostname;
|
GROUP BY hostname;
|
||||||
hostname no
|
hostname no
|
||||||
cache-dtc-af05.proxy.aol.com 1
|
cache-dtc-af05.proxy.aol.com 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a int, b int);
|
||||||
|
INSERT INTO t1 VALUES (1,2), (1,3);
|
||||||
|
SELECT a, b FROM t1 GROUP BY 'const';
|
||||||
|
a b
|
||||||
|
1 2
|
||||||
|
SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
|
||||||
|
a b
|
||||||
|
1 2
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (id INT, dt DATETIME);
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f;
|
||||||
|
f id
|
||||||
|
20050501123000 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -253,9 +253,9 @@ insert into t2 values (3, 1, 'xxbuz');
|
|||||||
select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
|
select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
|
||||||
|
|
||||||
#
|
#
|
||||||
# bug with many short (< ft_min_word_len) words in boolean search
|
# Bug #7858: bug with many short (< ft_min_word_len) words in boolean search
|
||||||
#
|
#
|
||||||
select * from t2 where match name against ('a* b* c* d* e* f*' in boolean mode);
|
select * from t2 where match name against ('*a*b*c*d*e*f*' in boolean mode);
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
# Initialise
|
# Initialise
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1,t2,t3;
|
drop table if exists t1,t2,t3;
|
||||||
@ -524,7 +525,7 @@ select min(b) from t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test for bug #11088: GROUP BY a BLOB colimn with COUNT(DISTINCT column1)
|
# Test for bug #11088: GROUP BY a BLOB column with COUNT(DISTINCT column1)
|
||||||
#
|
#
|
||||||
|
|
||||||
CREATE TABLE t1 (id int PRIMARY KEY, user_id int, hostname longtext);
|
CREATE TABLE t1 (id int PRIMARY KEY, user_id int, hostname longtext);
|
||||||
@ -539,3 +540,28 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1
|
|||||||
WHERE hostname LIKE '%aol%'
|
WHERE hostname LIKE '%aol%'
|
||||||
GROUP BY hostname;
|
GROUP BY hostname;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for bug #8614: GROUP BY 'const' with DISTINCT
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int, b int);
|
||||||
|
INSERT INTO t1 VALUES (1,2), (1,3);
|
||||||
|
SELECT a, b FROM t1 GROUP BY 'const';
|
||||||
|
SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for bug #11385: GROUP BY for datetime converted to decimals
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (id INT, dt DATETIME);
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
|
||||||
|
SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -104,8 +104,8 @@ DEFS = -DMYSQL_SERVER \
|
|||||||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||||
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" \
|
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" \
|
||||||
@DEFS@
|
@DEFS@
|
||||||
# Don't put lex_hash.h in BUILT_SOURCES as this will give infinite recursion
|
|
||||||
BUILT_SOURCES = sql_yacc.cc sql_yacc.h
|
BUILT_SOURCES = sql_yacc.cc sql_yacc.h lex_hash.h
|
||||||
EXTRA_DIST = udf_example.cc $(BUILT_SOURCES)
|
EXTRA_DIST = udf_example.cc $(BUILT_SOURCES)
|
||||||
AM_YFLAGS = -d
|
AM_YFLAGS = -d
|
||||||
|
|
||||||
@ -123,9 +123,6 @@ link_sources: mysql_tzinfo_to_sql.cc
|
|||||||
rm -f my_time.c
|
rm -f my_time.c
|
||||||
@LN_CP_F@ ../sql-common/my_time.c my_time.c
|
@LN_CP_F@ ../sql-common/my_time.c my_time.c
|
||||||
|
|
||||||
gen_lex_hash.o: gen_lex_hash.cc lex.h
|
|
||||||
$(CXXCOMPILE) -c $(INCLUDES) $<
|
|
||||||
|
|
||||||
mysql_tzinfo_to_sql.o: $(mysql_tzinfo_to_sql_SOURCES)
|
mysql_tzinfo_to_sql.o: $(mysql_tzinfo_to_sql_SOURCES)
|
||||||
$(CXXCOMPILE) -c $(INCLUDES) -DTZINFO2SQL $<
|
$(CXXCOMPILE) -c $(INCLUDES) -DTZINFO2SQL $<
|
||||||
|
|
||||||
@ -140,13 +137,9 @@ sql_yacc.o: sql_yacc.cc sql_yacc.h $(HEADERS)
|
|||||||
@echo "If it fails, re-run configure with --with-low-memory"
|
@echo "If it fails, re-run configure with --with-low-memory"
|
||||||
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
|
$(CXXCOMPILE) $(LM_CFLAGS) -c $<
|
||||||
|
|
||||||
lex_hash.h: lex.h gen_lex_hash.cc sql_yacc.h
|
lex_hash.h: gen_lex_hash$(EXEEXT)
|
||||||
$(MAKE) gen_lex_hash$(EXEEXT)
|
|
||||||
./gen_lex_hash$(EXEEXT) > $@
|
./gen_lex_hash$(EXEEXT) > $@
|
||||||
|
|
||||||
# Hack to ensure that lex_hash.h is built early
|
|
||||||
sql_lex.o: lex_hash.h
|
|
||||||
|
|
||||||
# For testing of udf_example.so; Works on platforms with gcc
|
# For testing of udf_example.so; Works on platforms with gcc
|
||||||
# (This is not part of our build process but only provided as an example)
|
# (This is not part of our build process but only provided as an example)
|
||||||
udf_example.so: udf_example.cc
|
udf_example.so: udf_example.cc
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define NOT_FIXED_DEC 31
|
#define NOT_FIXED_DEC 31
|
||||||
|
#define DATETIME_DEC 6
|
||||||
|
|
||||||
class Send_field;
|
class Send_field;
|
||||||
class Protocol;
|
class Protocol;
|
||||||
@ -861,6 +862,7 @@ public:
|
|||||||
enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONGLONG; }
|
enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONGLONG; }
|
||||||
#endif
|
#endif
|
||||||
enum Item_result cmp_type () const { return INT_RESULT; }
|
enum Item_result cmp_type () const { return INT_RESULT; }
|
||||||
|
uint decimals() const { return DATETIME_DEC; }
|
||||||
int store(const char *to,uint length,CHARSET_INFO *charset);
|
int store(const char *to,uint length,CHARSET_INFO *charset);
|
||||||
int store(double nr);
|
int store(double nr);
|
||||||
int store(longlong nr);
|
int store(longlong nr);
|
||||||
|
@ -678,9 +678,14 @@ JOIN::optimize()
|
|||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
simple_group= 0;
|
simple_group= 0;
|
||||||
group_list= remove_const(this, group_list, conds,
|
{
|
||||||
rollup.state == ROLLUP::STATE_NONE,
|
ORDER *old_group_list;
|
||||||
&simple_group);
|
group_list= remove_const(this, (old_group_list= group_list), conds,
|
||||||
|
rollup.state == ROLLUP::STATE_NONE,
|
||||||
|
&simple_group);
|
||||||
|
if (old_group_list && !group_list)
|
||||||
|
select_distinct= 0;
|
||||||
|
}
|
||||||
if (!group_list && group)
|
if (!group_list && group)
|
||||||
{
|
{
|
||||||
order=0; // The output has only one row
|
order=0; // The output has only one row
|
||||||
|
@ -379,6 +379,7 @@ int vio_close_pipe(Vio * vio)
|
|||||||
|
|
||||||
|
|
||||||
void vio_ignore_timeout(Vio *vio __attribute__((unused)),
|
void vio_ignore_timeout(Vio *vio __attribute__((unused)),
|
||||||
|
uint which __attribute__((unused)),
|
||||||
uint timeout __attribute__((unused)))
|
uint timeout __attribute__((unused)))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user