mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Added testing of IN(value-list)
Portability fixes Build-tools/Do-compile: Fix for Linux ia64 sql-bench/bench-init.pl.sh: Added help function time_fetch_all_rows sql-bench/test-insert.sh: Added testing of IN(value-list) sql/item_func.cc: Cleanup sql/mysqld.cc: Portability fix sql/stacktrace.c: Portability fix
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user