~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/db.cc

MergedĀ fromĀ me.

Show diffs side-by-side

added added

removed removed

Lines of Context:
473
473
    SELECT DATABASE() in the future). For this we free() session->db and set
474
474
    it to 0.
475
475
  */
476
 
  if (session->db && !strcmp(session->db, db))
 
476
  if (! session->db.empty() && ! strcmp(session->db.c_str(), db))
477
477
    mysql_change_db_impl(session, NULL);
478
478
  pthread_mutex_unlock(&LOCK_create_db);
479
479
  start_waiting_global_read_lock(session);
607
607
 
608
608
    session->set_db(NULL, 0);
609
609
  }
610
 
  else if (my_strcasecmp(system_charset_info, new_db_name->str,
611
 
                         INFORMATION_SCHEMA_NAME.c_str()) == 0)
612
 
  {
613
 
    /*
614
 
      Here we must use Session::set_db(), because we want to copy
615
 
      INFORMATION_SCHEMA_NAME constant.
616
 
    */
617
 
 
618
 
    session->set_db(INFORMATION_SCHEMA_NAME.c_str(),
619
 
                    INFORMATION_SCHEMA_NAME.length());
620
 
  }
621
610
  else
622
611
  {
623
612
    /*
626
615
      the previous database name, we should do it explicitly.
627
616
    */
628
617
 
629
 
    if (session->db)
630
 
      free(session->db);
631
 
 
632
 
    session->reset_db(new_db_name->str, new_db_name->length);
 
618
    session->set_db(new_db_name->str, new_db_name->length);
633
619
  }
634
620
}
635
621
 
807
793
    }
808
794
  }
809
795
 
810
 
  /*
811
 
    NOTE: in mysql_change_db_impl() new_db_file_name is assigned to Session
812
 
    attributes and will be freed in Session::~Session().
813
 
  */
814
 
 
815
796
  db_default_cl= get_default_db_collation(new_db_file_name.str);
816
797
 
817
798
  mysql_change_db_impl(session, &new_db_file_name);
 
799
  free(new_db_file_name.str);
818
800
 
819
801
  return false;
820
802
}