~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_base.cc

  • Committer: Brian Aker
  • Date: 2009-07-10 07:08:06 UTC
  • mto: (1090.1.1 staging)
  • mto: This revision was merged to the branch mainline in revision 1091.
  • Revision ID: brian@gaz-20090710070806-wgz3v36o1vpehc8s
Shuffled free_cached_table() to table

Show diffs side-by-side

added added

removed removed

Lines of Context:
620
620
    session->mysys_var->current_cond= &COND_refresh;
621
621
    session->set_proc_info("Flushing tables");
622
622
 
623
 
    session->close_old_data_files(true, true);
 
623
    session->close_old_data_files();
624
624
 
625
625
    bool found= true;
626
626
    /* Wait until all threads has closed all the tables we had locked */
696
696
  move one table to free list 
697
697
*/
698
698
 
699
 
static bool free_cached_table(Session *session, Table **table_ptr)
 
699
bool Session::free_cached_table()
700
700
{
701
701
  bool found_old_table= false;
702
 
  Table *table= *table_ptr;
 
702
  Table *table= open_tables;
703
703
 
704
704
  safe_mutex_assert_owner(&LOCK_open);
705
705
  assert(table->key_read == 0);
706
706
  assert(!table->file || table->file->inited == handler::NONE);
707
707
 
708
 
  *table_ptr= table->next;
 
708
  open_tables= table->next;
709
709
 
710
710
  if (table->needs_reopen_or_name_lock() ||
711
 
      session->version != refresh_version || !table->db_stat)
 
711
      version != refresh_version || !table->db_stat)
712
712
  {
713
713
    hash_delete(&open_cache,(unsigned char*) table);
714
714
    found_old_table= true;
724
724
    /* Free memory and reset for next loop */
725
725
    table->file->ha_reset();
726
726
    table->in_use= false;
 
727
 
727
728
    if (unused_tables)
728
729
    {
729
 
      table->next=unused_tables;                /* Link in last */
730
 
      table->prev=unused_tables->prev;
731
 
      unused_tables->prev=table;
732
 
      table->prev->next=table;
 
730
      table->next= unused_tables;               /* Link in last */
 
731
      table->prev= unused_tables->prev;
 
732
      unused_tables->prev= table;
 
733
      table->prev->next= table;
733
734
    }
734
735
    else
735
 
      unused_tables=table->next=table->prev=table;
 
736
      unused_tables= table->next=table->prev=table;
736
737
  }
737
738
 
738
739
  return found_old_table;
756
757
  pthread_mutex_lock(&LOCK_open); /* Close all open tables on Session */
757
758
 
758
759
  while (open_tables)
759
 
    found_old_table|= free_cached_table(this, &open_tables);
 
760
    found_old_table|= free_cached_table();
760
761
  some_tables_deleted= false;
761
762
 
762
763
  if (found_old_table)