← Back to team overview

maria-developers team mailing list archive

bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2815)

 

#At lp:maria based on revid:monty@xxxxxxxxxxxx-20100210190624-38ucdn8y98k1v1zd

 2815 Michael Widenius	2010-02-10
      Added option --temporary-tables to test speed of temporary tables
      added:
        mysql-test/suite/parts/t/partition_repair_myisam-master.opt
      modified:
        sql-bench/bench-init.pl.sh
        sql-bench/server-cfg.sh
        sql-bench/test-connect.sh
        sql-bench/test-create.sh

per-file messages:
  mysql-test/suite/parts/t/partition_repair_myisam-master.opt
    Added missing file from last push
  sql-bench/bench-init.pl.sh
    Added options:
    --temporary-tables to test speed of temporary tables
  sql-bench/server-cfg.sh
    Added limit for number of temporary tables one can create
  sql-bench/test-connect.sh
    Skip test that doesn't work with temporary tables.
  sql-bench/test-create.sh
    Added limit for number of temporary tables one can create
=== added file 'mysql-test/suite/parts/t/partition_repair_myisam-master.opt'
--- a/mysql-test/suite/parts/t/partition_repair_myisam-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/parts/t/partition_repair_myisam-master.opt	2010-02-10 21:26:06 +0000
@@ -0,0 +1 @@
+--myisam-recover=off

=== modified file 'sql-bench/bench-init.pl.sh'
--- a/sql-bench/bench-init.pl.sh	2010-02-09 17:17:04 +0000
+++ b/sql-bench/bench-init.pl.sh	2010-02-10 21:26:06 +0000
@@ -39,7 +39,7 @@ require "$pwd/server-cfg" || die "Can't
 
 $|=1;				# Output data immediately
 
-$opt_skip_test=$opt_skip_create=$opt_skip_delete=$opt_verbose=$opt_fast_insert=$opt_lock_tables=$opt_debug=$opt_skip_delete=$opt_fast=$opt_force=$opt_log=$opt_use_old_results=$opt_help=$opt_odbc=$opt_small_test=$opt_small_tables=$opt_samll_key_tables=$opt_stage=$opt_old_headers=$opt_die_on_errors=$opt_tcpip=$opt_random=$opt_only_missing_tests=0;
+$opt_skip_test=$opt_skip_create=$opt_skip_delete=$opt_verbose=$opt_fast_insert=$opt_lock_tables=$opt_debug=$opt_skip_delete=$opt_fast=$opt_force=$opt_log=$opt_use_old_results=$opt_help=$opt_odbc=$opt_small_test=$opt_small_tables=$opt_samll_key_tables=$opt_stage=$opt_old_headers=$opt_die_on_errors=$opt_tcpip=$opt_random=$opt_only_missing_tests=$opt_temporary_tables=0;
 $opt_cmp=$opt_user=$opt_password=$opt_connect_options=$opt_connect_command= "";
 $opt_server="mysql"; $opt_dir="output";
 $opt_host="localhost";$opt_database="test";
@@ -59,7 +59,7 @@ $log_prog_args=join(" ", skip_arguments(
 					"use-old-results","skip-test",
 					"optimization","hw",
 					"machine", "dir", "suffix", "log"));
-GetOptions("skip-test=s","comments=s","cmp=s","server=s","user=s","host=s","database=s","password=s","loop-count=i","row-count=i","skip-create","skip-delete","verbose","fast-insert","lock-tables","debug","fast","force","field-count=i","regions=i","groups=i","time-limit=i","log","use-old-results","machine=s","dir=s","suffix=s","help","odbc","small-test","small-tables","small-key-tables","stage=i","threads=i","random","old-headers","die-on-errors","create-options=s","hires","tcpip","silent","optimization=s","hw=s","socket=s","connect-options=s","connect-command=s","only-missing-tests") || usage();
+GetOptions("skip-test=s","comments=s","cmp=s","server=s","user=s","host=s","database=s","password=s","loop-count=i","row-count=i","skip-create","skip-delete","verbose","fast-insert","lock-tables","debug","fast","force","field-count=i","regions=i","groups=i","time-limit=i","log","use-old-results","machine=s","dir=s","suffix=s","help","odbc","small-test","small-tables","small-key-tables","stage=i","threads=i","random","old-headers","die-on-errors","create-options=s","hires","tcpip","silent","optimization=s","hw=s","socket=s","connect-options=s","connect-command=s","only-missing-tests","temporary-tables") || usage();
 
 usage() if ($opt_help);
 $server=get_server($opt_server,$opt_host,$opt_database,$opt_odbc,
@@ -454,6 +454,9 @@ All benchmarks takes the following optio
   create all MySQL tables as InnoDB tables use:
   --create-options=ENGINE=InnoDB
 
+--temporary-tables
+  Use temporary tables for all tests.
+
 --database (Default $opt_database)
   In which database the test tables are created.
 

=== modified file 'sql-bench/server-cfg.sh'
--- a/sql-bench/server-cfg.sh	2010-02-09 17:17:04 +0000
+++ b/sql-bench/server-cfg.sh	2010-02-10 21:26:06 +0000
@@ -159,6 +159,7 @@ sub new
   $limits{'max_index'}		= 16; # Max number of keys
   $limits{'max_index_parts'}	= 16; # Max segments/key
   $limits{'max_tables'}		= (($machine || '') =~ "^win") ? 5000 : 65000;
+  $limits{'max_temporary_tables'}= 400;
   $limits{'max_text_size'}	= 1000000; # Good enough for tests
   $limits{'multi_drop'}		= 1; # Drop table can take many tables
   $limits{'order_by_position'}  = 1; # Can use 'ORDER BY 1'
@@ -189,6 +190,7 @@ sub new
     $self->{'transactions'}	= 1;	# Transactions enabled
     $limits{'max_columns'}	= 90;	# Max number of columns in table
     $limits{'max_tables'}	= 32;   # No comments
+    $limits{'max_temporary_tables'}= $limits{"max_tables"};
   }
   if (defined($main::opt_create_options) &&
       $main::opt_create_options =~ /engine=bdb/i)
@@ -200,6 +202,7 @@ sub new
   {
     $limits{'working_blobs'}	= 0; # Blobs not implemented yet
     $limits{'max_tables'}	= 500;
+    $limits{'max_temporary_tables'}= $limits{"max_tables"};
     $self->{'transactions'}	= 1;	# Transactions enabled
   }
 
@@ -270,7 +273,14 @@ sub create
   my($self,$table_name,$fields,$index,$options) = @_;
   my($query,@queries);
 
-  $query="create table $table_name (";
+  if ($main::opt_temporary_tables)
+  {
+    $query="create temporary table $table_name (";
+  }
+  else
+  {
+    $query="create table $table_name (";
+  }
   foreach $field (@$fields)
   {
 #    $field =~ s/ decimal/ double(10,2)/i;
@@ -393,6 +403,7 @@ sub new
   $limits{'max_conditions'}	= 74;
   $limits{'max_columns'}	= 75;
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
   $limits{'max_text_size'}	= 32000;
   $limits{'query_size'}		= 65535;
   $limits{'max_index'}		= 5;
@@ -622,7 +633,9 @@ sub new
   $limits{'max_conditions'}	= 9999;		# This makes Pg real slow
   $limits{'max_index'}		= 64;		# Big enough
   $limits{'max_index_parts'}	= 16;
-  $limits{'max_tables'}		= 5000;		# 10000 crashes pg 7.0.2
+  $limits{'max_tables'}		= 65000;
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 65000;	# Good enough for test
   $limits{'multi_drop'}		= 1;
   $limits{'order_by_position'}  = 1;
@@ -873,6 +886,8 @@ sub new
   $limits{'max_conditions'}	= 9999;		# Probably big enough
   $limits{'max_columns'}	= 2000;		# From crash-me
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 65492;	# According to tests
   $limits{'query_size'}		= 65535;	# Probably a limit
   $limits{'max_index'}		= 64;		# Probably big enough
@@ -1104,6 +1119,7 @@ sub new
 			# above this value .... but can handle 2419 columns
 			# maybe something for crash-me ... but how to check ???
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
   $limits{'max_text_size'}	= 4095;		# max returned ....
   $limits{'query_size'}		= 65535;	# Not a limit, big enough
   $limits{'max_index'}		= 64;		# Big enough
@@ -1374,6 +1390,8 @@ sub new
   $limits{'max_conditions'}	= 9999; # (Actually not a limit)
   $limits{'max_columns'}	= 254;	# Max number of columns in table
   $limits{'max_tables'}		= 65000; # Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 2000; # Limit for blob test-connect
   $limits{'query_size'}		= 65525; # Max size with default buffers.
   $limits{'max_index'}		= 16; # Max number of keys
@@ -1647,6 +1665,8 @@ sub new
   $limits{'max_column_name'}	= 18; # max table and column name
   $limits{'max_columns'}	= 994;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_index'}		= 64; # Max number of keys
   $limits{'max_index_parts'}	= 15; # Max segments/key
   $limits{'max_text_size'}	= 65535;  # Max size with default buffers. ??
@@ -1835,6 +1855,8 @@ sub new
   $limits{'max_conditions'}	= 97; # We get 'Query is too complex'
   $limits{'max_columns'}	= 255;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 255;  # Max size with default buffers.
   $limits{'query_size'}		= 65535; # Not a limit, big enough
   $limits{'max_index'}		= 32; # Max number of keys
@@ -2020,6 +2042,8 @@ sub new
   $limits{'max_conditions'}	= 1030; # We get 'Query is too complex'
   $limits{'max_columns'}	= 250;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 9830;  # Max size with default buffers.
   $limits{'query_size'}		= 9830; # Max size with default buffers.
   $limits{'max_index'}		= 64; # Max number of keys
@@ -2216,6 +2240,8 @@ sub new
   $limits{'max_conditions'}	= 1030; # We get 'Query is too complex'
   $limits{'max_columns'}	= 250;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 9830;  # Max size with default buffers.
   $limits{'query_size'}		= 9830; # Max size with default buffers.
   $limits{'max_index'}		= 64; # Max number of keys
@@ -2448,6 +2474,8 @@ sub new
   $limits{'max_conditions'}	= 50; # (Actually not a limit)
   $limits{'max_columns'}	= 254;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 2000; # Limit for blob test-connect
   $limits{'query_size'}		= 65525; # Max size with default buffers.
   $limits{'max_index'}		= 16; # Max number of keys
@@ -2652,6 +2680,8 @@ sub new
   $limits{'max_conditions'}	= 418; # We get 'Query is too complex'
   $limits{'max_columns'}	= 500;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
   $limits{'max_text_size'}	= 254;  # Max size with default buffers.
   $limits{'query_size'}		= 254; # Max size with default buffers.
   $limits{'max_index'}		= 48; # Max number of keys
@@ -2830,6 +2860,7 @@ sub new
   $limits{'max_conditions'}	= 9999; # (Actually not a limit)
   $limits{'max_columns'}	= 252;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
   $limits{'max_text_size'}	= 15000; # Max size with default buffers.
   $limits{'query_size'}		= 1000000; # Max size with default buffers.
   $limits{'max_index'}		= 32; # Max number of keys
@@ -3032,6 +3063,7 @@ sub new
   $limits{'max_conditions'}	= 9999; # (Actually not a limit)
   $limits{'max_columns'}	= 252;	# Max number of columns in table
   $limits{'max_tables'}		= 65000;	# Should be big enough
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
   $limits{'max_text_size'}	= 15000; # Max size with default buffers.
   $limits{'query_size'}		= 1000000; # Max size with default buffers.
   $limits{'max_index'}		= 65000; # Max number of keys
@@ -3228,6 +3260,7 @@ sub new
   # The following should be 8192, but is smaller because Frontbase crashes..
   $limits{'max_columns'}	= 150;	# Max number of columns in table
   $limits{'max_tables'}		= 5000;	# 10000 crashed FrontBase
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
   $limits{'max_text_size'}	= 65000; # Max size with default buffers.
   $limits{'query_size'}		= 8000000; # Max size with default buffers.
   $limits{'max_index'}		= 38; # Max number of keys
@@ -3440,6 +3473,7 @@ sub new
   $limits{'max_conditions'}	= 9999; # (Actually not a limit) *
   $limits{'max_columns'}	= 1023;	# Max number of columns in table *
   $limits{'max_tables'}		= 65000;	# Should be big enough * unlimited actually
+  $limits{'max_temporary_tables'}= $limits{"max_tables"};
   $limits{'max_text_size'}	= 15000; # Max size with default buffers. 
   $limits{'query_size'}		= 64*1024; # Max size with default buffers. *64 kb by default. May be set by system variable 
   $limits{'max_index'}		= 510; # Max number of keys *

=== modified file 'sql-bench/test-connect.sh'
--- a/sql-bench/test-connect.sh	2009-05-29 13:40:55 +0000
+++ b/sql-bench/test-connect.sh	2010-02-10 21:26:06 +0000
@@ -161,41 +161,48 @@ if ($opt_fast && defined($server->{vacuu
 {
   $server->vacuum(0,\$dbh);
 }
-$dbh->disconnect;
+if (!$main::opt_temporary_tables)
+{
+    $dbh->disconnect;
+}
 
 #
 # First test connect/select/disconnect
 #
-print "Testing connect/select 1 row from table/disconnect\n";
+if (!$main::opt_temporary_tables)
+{
+  print "Testing connect/select 1 row from table/disconnect\n";
 
-$loop_time=new Benchmark;
-$errors=0;
+  $loop_time=new Benchmark;
+  $errors=0;
 
-for ($i=0 ; $i < $small_loop_count ; $i++)
-{
-  for ($j=0; $j < $max_test ; $j++)
+  for ($i=0 ; $i < $small_loop_count ; $i++)
   {
-    last if ($dbh = DBI->connect($server->{'data_source'}, $opt_user, $opt_password));
-    $errors++;
-  }
-  die $DBI::errstr if ($j == $max_test);
+    for ($j=0; $j < $max_test ; $j++)
+    {
+        last if ($dbh = DBI->connect($server->{'data_source'}, $opt_user, $opt_password));
+        $errors++;
+    }
+    die $DBI::errstr if ($j == $max_test);
 
-  $sth = $dbh->do("select a,i,s,$i from bench1") # Select * from table with 1 record
+    $sth = $dbh->do("select a,i,s,$i from bench1") # Select * from table with 1 record
     or die $DBI::errstr;
-  $dbh->disconnect;
-}
+    $dbh->disconnect;
+  }
 
-$end_time=new Benchmark;
-print "Warning: $errors connections didn't work without a time delay\n" if ($errors);
-print "Time to connect+select_1_row ($small_loop_count): " .
+  $end_time=new Benchmark;
+  print "Warning: $errors connections didn't work without a time delay\n" if ($errors);
+  print "Time to connect+select_1_row ($small_loop_count): " .
   timestr(timediff($end_time, $loop_time),"all") . "\n\n";
 
+  $dbh = $server->connect();
+}
+
 #
 # The same test, but without connect/disconnect
 #
 print "Testing select 1 row from table\n";
 
-$dbh = $server->connect();
 $loop_time=new Benchmark;
 
 for ($i=0 ; $i < $opt_loop_count ; $i++)

=== modified file 'sql-bench/test-create.sh'
--- a/sql-bench/test-create.sh	2009-05-29 13:40:55 +0000
+++ b/sql-bench/test-create.sh	2010-02-10 21:26:06 +0000
@@ -47,7 +47,15 @@ if ($opt_small_test)
   $create_loop_count/=1000;
 }
 
-$max_tables=min($limits->{'max_tables'},$opt_loop_count);
+if ($opt_temporary_tables)
+{
+    $max_tables=min($limits->{'max_tables'},$opt_loop_count);
+}
+else
+{
+  $max_tables=min($limits->{'max_tables'},$opt_loop_count);
+  $max_tables=400;
+}
 
 if ($opt_small_test)
 {
@@ -71,7 +79,7 @@ $dbh = $server->connect();
 if ($opt_force) # If tables used in this test exist, drop 'em
 {
   print "Okay..Let's make sure that our tables don't exist yet.\n\n";
-  for ($i=1 ; $i <= $max_tables ; $i++)
+  for ($i=1 ; $i <= max($max_tables, $create_loop_count) ; $i++)
   {
     $dbh->do("drop table bench_$i" . $server->{'drop_attr'});
   }
@@ -245,7 +253,7 @@ for ($i=2 ; $i <= $keys ; $i++)
 }
 
 $loop_time=new Benchmark;
-for ($i=1 ; $i <= $opt_loop_count ; $i++)
+for ($i=1 ; $i <= $create_loop_count ; $i++)
 {
   do_many($dbh,$server->create("bench_$i", \@fields, \@keys));
   $dbh->do("drop table bench_$i" . $server->{'drop_attr'}) or die $DBI::errstr;