diff options
author | monty@hundin.mysql.fi <> | 2001-09-02 16:03:37 +0300 |
---|---|---|
committer | monty@hundin.mysql.fi <> | 2001-09-02 16:03:37 +0300 |
commit | 825ad1f8e7c35c994d6953a0eb99d66c5029ef1e (patch) | |
tree | 8e23ee5c5fb05aab08ef350c98bd7bf10f84cf47 | |
parent | d42e4d27d5e9408b3cb86175b84a122ab03f9611 (diff) | |
download | mariadb-git-825ad1f8e7c35c994d6953a0eb99d66c5029ef1e.tar.gz |
Added testing of IN(value-list)
Portability fixes
-rwxr-xr-x | Build-tools/Do-compile | 16 | ||||
-rw-r--r-- | sql-bench/bench-init.pl.sh | 31 | ||||
-rw-r--r-- | sql-bench/test-insert.sh | 77 | ||||
-rw-r--r-- | sql/item_func.cc | 2 | ||||
-rw-r--r-- | sql/mysqld.cc | 6 | ||||
-rw-r--r-- | sql/stacktrace.c | 1 |
6 files changed, 125 insertions, 8 deletions
diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile index 0bea693a441..4cf2477f5bd 100755 --- a/Build-tools/Do-compile +++ b/Build-tools/Do-compile @@ -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"); - safe_system("cp client/mysqladmin $pwd/$host/bin"); + 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); } diff --git a/sql-bench/bench-init.pl.sh b/sql-bench/bench-init.pl.sh index 2e0b3a9a51d..204d15d7ab3 100644 --- a/sql-bench/bench-init.pl.sh +++ b/sql-bench/bench-init.pl.sh @@ -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 diff --git a/sql-bench/test-insert.sh b/sql-bench/test-insert.sh index 9d1adda1fc3..a5d0633dbfe 100644 --- a/sql-bench/test-insert.sh +++ b/sql-bench/test-insert.sh @@ -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); +} diff --git a/sql/item_func.cc b/sql/item_func.cc index ac12adb50e0..56e3d562ee8 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -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); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 1255b55a81c..7d6863cb6eb 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -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) { diff --git a/sql/stacktrace.c b/sql/stacktrace.c index 408006dac93..81d8debc27a 100644 --- a/sql/stacktrace.c +++ b/sql/stacktrace.c @@ -17,6 +17,7 @@ #include <global.h> #include "stacktrace.h" #include <signal.h> +#include <my_pthread.h> #ifdef HAVE_STACKTRACE #include <unistd.h> |