~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/db.cc

  • Committer: Brian Aker
  • Date: 2010-02-26 17:18:21 UTC
  • mto: (1309.2.7 fix_is)
  • mto: This revision was merged to the branch mainline in revision 1313.
  • Revision ID: brian@gaz-20100226171821-xy2lgitcqnytglsg
Baby steps.

Show diffs side-by-side

added added

removed removed

Lines of Context:
82
82
 
83
83
*/
84
84
 
85
 
bool mysql_create_db(Session *session, const message::Schema &schema_message, bool is_if_not_exists)
 
85
bool mysql_create_db(Session *session, const message::Schema &schema_message, const bool is_if_not_exists)
86
86
{
87
87
  ReplicationServices &replication_services= ReplicationServices::singleton();
88
88
  bool error= false;
210
210
    ERROR Error
211
211
*/
212
212
 
213
 
bool mysql_rm_db(Session *session, char *db, bool if_exists)
 
213
bool mysql_rm_db(Session *session, const std::string &schema_name, const bool if_exists)
214
214
{
215
215
  long deleted=0;
216
216
  int error= false;
240
240
 
241
241
 
242
242
  length= build_table_filename(path, sizeof(path),
243
 
                               db, "", false);
 
243
                               schema_name.c_str(), "", false);
244
244
  path[length]= '\0';                           // Remove file name
245
245
 
246
246
  /* See if the schema exists */
247
 
  if (not plugin::StorageEngine::doesSchemaExist(db))
 
247
  if (not plugin::StorageEngine::doesSchemaExist(schema_name))
248
248
  {
249
249
    if (if_exists)
250
250
    {
262
262
  else
263
263
  {
264
264
    pthread_mutex_lock(&LOCK_open); /* After deleting database, remove all cache entries related to schema */
265
 
    remove_db_from_cache(db);
 
265
    remove_db_from_cache(schema_name);
266
266
    pthread_mutex_unlock(&LOCK_open);
267
267
 
268
268
 
269
269
    error= -1;
270
 
    deleted= mysql_rm_known_files(session, db,
 
270
    deleted= mysql_rm_known_files(session, schema_name,
271
271
                                  path, &dropped_tables);
272
272
    if (deleted >= 0)
273
273
    {
296
296
      goto exit; /* not much else we can do */
297
297
    query_pos= query_data_start= strcpy(query,"drop table ")+11;
298
298
    query_end= query + MAX_DROP_TABLE_Q_LEN;
299
 
    db_len= strlen(db);
 
299
    db_len= schema_name.length();
300
300
 
301
301
    ReplicationServices &replication_services= ReplicationServices::singleton();
302
302
    for (tbl= dropped_tables; tbl; tbl= tbl->next_local)
332
332
    SELECT DATABASE() in the future). For this we free() session->db and set
333
333
    it to 0.
334
334
  */
335
 
  if (not session->db.empty() && session->db.compare(db) == 0)
 
335
  if (not session->db.empty() && session->db.compare(schema_name) == 0)
336
336
    mysql_change_db_impl(session, NULL);
337
337
  pthread_mutex_unlock(&LOCK_create_db);
338
338
  start_waiting_global_read_lock(session);
653
653
    @retval true  Error
654
654
*/
655
655
 
656
 
bool mysql_change_db(Session *session, const std::string &new_db_name, bool force_switch)
 
656
bool mysql_change_db(Session *session, const std::string &new_db_name)
657
657
{
658
658
  LEX_STRING new_db_file_name;
659
659
  const CHARSET_INFO *db_default_cl;
689
689
    my_error(ER_WRONG_DB_NAME, MYF(0), new_db_file_name.str);
690
690
    free(new_db_file_name.str);
691
691
 
692
 
    if (force_switch)
693
 
      mysql_change_db_impl(session, NULL);
694
 
 
695
692
    return true;
696
693
  }
697
694
 
698
695
  if (not plugin::StorageEngine::doesSchemaExist(new_db_file_name.str))
699
696
  {
700
 
    if (force_switch)
701
 
    {
702
 
      /* Throw a warning and free new_db_file_name. */
703
 
 
704
 
      push_warning_printf(session, DRIZZLE_ERROR::WARN_LEVEL_NOTE,
705
 
                          ER_BAD_DB_ERROR, ER(ER_BAD_DB_ERROR),
706
 
                          new_db_file_name.str);
707
 
 
708
 
      free(new_db_file_name.str);
709
 
 
710
 
      /* Change db to NULL. */
711
 
 
712
 
      mysql_change_db_impl(session, NULL);
713
 
 
714
 
      /* The operation succeed. */
715
 
 
716
 
      return false;
717
 
    }
718
 
    else
719
 
    {
720
 
      /* Report an error and free new_db_file_name. */
721
 
 
722
 
      my_error(ER_BAD_DB_ERROR, MYF(0), new_db_file_name.str);
723
 
      free(new_db_file_name.str);
724
 
 
725
 
      /* The operation failed. */
726
 
 
727
 
      return true;
728
 
    }
 
697
    /* Report an error and free new_db_file_name. */
 
698
 
 
699
    my_error(ER_BAD_DB_ERROR, MYF(0), new_db_file_name.str);
 
700
    free(new_db_file_name.str);
 
701
 
 
702
    /* The operation failed. */
 
703
 
 
704
    return true;
729
705
  }
730
706
 
731
707
  db_default_cl= plugin::StorageEngine::getSchemaCollation(new_db_file_name.str);