Commit fcb7292e authored by monty@tik.mysql.fi's avatar monty@tik.mysql.fi
Browse files

Unlock tables on BEGIN

parent 9570e8b9
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -39,13 +39,21 @@ $opt_loop_count=10000; # Change this to make test harder/easier
chomp($pwd = `pwd`); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";

$create_loop_count=$opt_loop_count;
if ($opt_small_test)
{
  $opt_loop_count/=100;
  $create_loop_count/=1000;
}

$max_tables=min($limits->{'max_tables'},$opt_loop_count);

if ($opt_small_test)
{
  $max_tables=10;
}


print "Testing the speed of creating and droping tables\n";
print "Testing with $max_tables tables and $opt_loop_count loop count\n\n";

@@ -177,7 +185,7 @@ print "Testing create+drop\n";

$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",
			       ["i int NOT NULL",
@@ -190,7 +198,7 @@ for ($i=1 ; $i <= $opt_loop_count ; $i++)
}

$end_time=new Benchmark;
print "Time for create+drop ($opt_loop_count): " .
print "Time for create+drop ($create_loop_count): " .
    timestr(timediff($end_time, $loop_time),"all") . "\n";

if ($opt_fast && defined($server->{vacuum}))
+1 −0
Original line number Diff line number Diff line
@@ -617,6 +617,7 @@ innobase_end(void)

	err = innobase_shutdown_for_mysql();
	hash_free(&innobase_open_tables);
	my_free(internal_innobase_data_file_path,MYF(MY_ALLOW_ZERO_PTR));

	if (err != DB_SUCCESS) {

+3 −3
Original line number Diff line number Diff line
@@ -2017,7 +2017,7 @@ The server will not act as a slave.");
  }
#else
  handle_connections_sockets(0);
#ifdef EXTRA_DEBUG
#ifdef EXTRA_DEBUG2
  sql_print_error("Exiting main thread");
#endif
#endif /* __NT__ */
@@ -2027,14 +2027,14 @@ The server will not act as a slave.");
  DBUG_PRINT("quit",("Exiting main thread"));

#ifndef __WIN__
#ifdef EXTRA_DEBUG
#ifdef EXTRA_DEBUG2
  sql_print_error("Before Lock_thread_count");
#endif
  (void) pthread_mutex_lock(&LOCK_thread_count);
  select_thread_in_use=0;			// For close_connections
  (void) pthread_cond_broadcast(&COND_thread_count);
  (void) pthread_mutex_unlock(&LOCK_thread_count);
#ifdef EXTRA_DEBUG
#ifdef EXTRA_DEBUG2
  sql_print_error("After lock_thread_count");
#endif
#else
+6 −0
Original line number Diff line number Diff line
@@ -2120,6 +2120,12 @@ mysql_execute_command(void)
    break;

  case SQLCOM_BEGIN:
    if (thd->locked_tables)
    {
      thd->lock=thd->locked_tables;
      thd->locked_tables=0;			// Will be automaticly closed
      close_thread_tables(thd);			// Free tables
    }
    if (end_active_trans(thd))
    {
      res= -1;