Commit 825ad1f8 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Added testing of IN(value-list)

Portability fixes
parent d42e4d27
......@@ -4,10 +4,10 @@ use Getopt::Long;
$opt_distribution=$opt_user=$opt_result=$opt_config_options=$opt_config_env="";
$opt_dbd_options=$opt_perl_options=$opt_suffix="";
$opt_tmp=$version_suffix="";
$opt_help=$opt_Information=$opt_no_delete=$opt_debug=$opt_stage=$opt_rsh_mail=$opt_no_test=$opt_no_perl=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_no_mysqltest=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=0;
$opt_help=$opt_Information=$opt_no_delete=$opt_delete=$opt_debug=$opt_stage=$opt_rsh_mail=$opt_no_test=$opt_no_perl=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_no_mysqltest=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=0;
$opt_innodb=$opt_bdb=0;
GetOptions("Information","help","distribution=s","user=s","result=s","no-delete","no-test","no-mysqltest","perl-files=s","debug","config-options=s","config-env=s","stage=i","rsh-mail","with-low-memory","fast-benchmark","tmp=s","static-client","static-server","static-perl","no-perl","local-perl","perl-options=s","sur","with-small-disk","dbd-options=s","tcpip","suffix=s","build-thread=i","innodb","bdb","use-old-distribution","enable-shared","no-crash-me","no-strip") || usage();
GetOptions("Information","help","distribution=s","user=s","result=s","no-delete","delete","no-test","no-mysqltest","perl-files=s","debug","config-options=s","config-env=s","stage=i","rsh-mail","with-low-memory","fast-benchmark","tmp=s","static-client","static-server","static-perl","no-perl","local-perl","perl-options=s","sur","with-small-disk","dbd-options=s","tcpip","suffix=s","build-thread=i","innodb","bdb","use-old-distribution","enable-shared","no-crash-me","no-strip") || usage();
usage() if ($opt_help || $opt_Information);
usage() if (!$opt_distribution);
......@@ -112,7 +112,6 @@ if ($opt_stage <= 1)
{
$opt_config_options.=" --with-low-memory" if ($opt_with_low_memory);
# Fix files if this is in another timezone than work.mysql.com
log_system("touch *");
unlink("config.cache");
log_system("$make clean") if ($opt_use_old_distribution);
if ($opt_static_server)
......@@ -144,7 +143,7 @@ if ($opt_stage <= 1)
if ($opt_stage <= 2)
{
unlink($opt_distribution) if (!$opt_no_delete && !$opt_use_old_distribution);
unlink($opt_distribution) if (!$opt_delete && !$opt_use_old_distribution);
safe_system("$make");
}
......@@ -161,7 +160,14 @@ if ($opt_stage <= 3)
$flags.="--no-strip" if ($opt_no_strip);
check_system("scripts/make_binary_distribution --tmp=$opt_tmp --suffix=$opt_suffix $flags",".tar.gz created");
safe_system("mv mysql*.tar.gz $pwd/$host");
if (-f "client/.libs/mysqladmin")
{
safe_system("cp client/.libs/mysqladmin $pwd/$host/bin");
}
else
{
safe_system("cp client/mysqladmin $pwd/$host/bin");
}
safe_system("$make clean") if ($opt_with_small_disk);
}
......
......@@ -31,7 +31,7 @@
# $server Object for current server
# $limits Hash reference to limits for benchmark
$benchmark_version="2.13";
$benchmark_version="2.14";
use Getopt::Long;
require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
......@@ -294,6 +294,35 @@ sub do_query
die "\nError executing '$query':\n$DBI::errstr\n";
}
#
# Run a query X times
#
sub time_fetch_all_rows
{
my($test_text,$result_text,$query,$dbh,$test_count)=@_;
my($i,$loop_time,$end_time,$count,$rows,$estimated);
print $test_text . "\n" if (defined($test_text));
$count=$rows=0;
$loop_time=new Benchmark;
for ($i=1 ; $i <= $test_count ; $i++)
{
$count++;
$rows+=fetch_all_rows($dbh,$query) or die $DBI::errstr;
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i,
$test_count));
}
$end_time=new Benchmark;
if ($estimated)
{ print "Estimated time"; }
else
{ print "Time"; }
print " for $result_text ($count:$rows) " .
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
}
#
# Handle estimated time of the server is too slow
......
......@@ -1007,6 +1007,47 @@ if ($server->small_rollback_segment())
$dbh = $server->connect();
}
###
### Test speed of IN( value list)
###
if ($limits->{'functions'})
{
if ($opt_lock_tables)
{
$sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
}
do_many($dbh,$server->create("bench2",
["id int NOT NULL"],
["primary key (id)"]));
$max_tests=min(($limits->{'query_size'}-50)/6, $opt_loop_count);
if ($opt_lock_tables)
{
$sth = $dbh->do("LOCK TABLES bench1 READ, bench2 WRITE") ||
die $DBI::errstr;
}
test_where_in("bench1","bench2","id",1,10);
test_where_in("bench1","bench2","id",11,100);
test_where_in("bench1","bench2","id",101,min(1000,$max_tests));
test_where_in("bench1","bench2","id",1000,$max_tests/2);
if ($max_tests > 1000)
{
test_where_in("bench1","bench2","id",$max_tests/2+1,$max_tests);
}
if ($opt_lock_tables)
{
$sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
}
$sth = $dbh->do("DROP TABLE bench2" . $server->{'drop_attr'}) ||
die $DBI::errstr;
if ($opt_lock_tables)
{
$sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
}
}
####
#### Test INSERT INTO ... SELECT
####
......@@ -1067,7 +1108,6 @@ if ($limits->{'insert_select'})
}
}
####
#### Do some deletes on the table
####
......@@ -1605,3 +1645,38 @@ sub check_or_range
print " for $check ($count:$found): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
}
#
# Test if SELECT ... WHERE id in(value-list)
#
sub test_where_in
{
my ($t1,$t2,$id,$from,$to)= @_;
return if ($from >= $to);
$query="SELECT $t1.* FROM $t1 WHERE $id IN (";
for ($i=1 ; $i <= $to ; $i++)
{
$query.="$i,";
}
$query=substr($query,0,length($query)-1) . ")";
# Fill join table to have the same id's as 'query'
for ($i= $from ; $i <= $to ; $i++)
{
$dbh->do("insert into $t2 values($i)") or die $DBI::errstr;
}
if ($opt_fast && defined($server->{vacuum}))
{
$server->vacuum(1,\$dbh,"bench1");
}
time_fetch_all_rows("\nTesting SELECT ... WHERE id in ($to values)",
"select_in", $query, $dbh,
$range_loop_count);
time_fetch_all_rows(undef, "select_join_in",
"SELECT $t1.* FROM $t1,$t2 WHERE $t1.$id=$t2.$id",
$dbh, $range_loop_count);
}
......@@ -1462,7 +1462,7 @@ longlong Item_func_get_lock::val_int()
struct timespec abstime;
THD *thd=current_thd;
ULL *ull;
int error;
int error=0;
pthread_mutex_lock(&LOCK_user_locks);
......
......@@ -1241,6 +1241,12 @@ information that should help you find out what is causing the crash\n");
exit(1);
}
#ifndef SA_RESETHAND
#define SA_RESETHAND 0
#endif
#ifndef SA_NODEFER
#define SA_NODEFER 0
#endif
static void init_signals(void)
{
......
......@@ -17,6 +17,7 @@
#include <global.h>
#include "stacktrace.h"
#include <signal.h>
#include <my_pthread.h>
#ifdef HAVE_STACKTRACE
#include <unistd.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment