myloader can`t create database from *-schema-create.sql

Bug #1611268 reported by Thomas Wen
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MySQL Data Dumper
New
Undecided
Unassigned

Bug Description

void create_database(MYSQL *conn, gchar *database){

 gchar* query = NULL;

 if((db == NULL && source_db == NULL)
  || (db != NULL && source_db != NULL && !g_ascii_strcasecmp(db, source_db))){
  const gchar* filename1= g_strdup_printf("%s-schema-create.sql", db ? db : database);
  const gchar* filenamegz1= g_strdup_printf("%s-schema-create.sql.gz", db ? db : database);

  if (g_file_test (filename, G_FILE_TEST_EXISTS)){
   restore_data(conn, database, NULL, filename1, TRUE, FALSE);
  }else if (g_file_test (filenamegz, G_FILE_TEST_EXISTS)){
   restore_data(conn, database, NULL, filenamegz1, TRUE, FALSE);
  }else{
   query= g_strdup_printf("CREATE DATABASE `%s`", db ? db : database);
   mysql_query(conn, query);
  }
 }else{
  query= g_strdup_printf("CREATE DATABASE `%s`", db ? db : database);
  mysql_query(conn, query);
 }

 g_free(query);
 return;
}

////////////////////////////////////
g_file_test function should take a full path filename, so in create_database function, two g_file_test will return false and then use :
   query= g_strdup_printf("CREATE DATABASE `%s`", db ? db : database);
   mysql_query(conn, query);
to create a database. so the charset may be wrong

should be modified like:
////////////////////////////////////

void create_database(MYSQL *conn, gchar *database){

 gchar* query = NULL;

 if((db == NULL && source_db == NULL)
  || (db != NULL && source_db != NULL && !g_ascii_strcasecmp(db, source_db))){
  const gchar* filename= g_strdup_printf("%s/%s-schema-create.sql", directory, db ? db : database);
  const gchar* filenamegz= g_strdup_printf("%s/%s-schema-create.sql.gz", directory, db ? db : database);
  const gchar* filename1= g_strdup_printf("%s-schema-create.sql", db ? db : database);
  const gchar* filenamegz1= g_strdup_printf("%s-schema-create.sql.gz", db ? db : database);

  if (g_file_test (filename, G_FILE_TEST_EXISTS)){
   restore_data(conn, database, NULL, filename1, TRUE, FALSE);
  }else if (g_file_test (filenamegz, G_FILE_TEST_EXISTS)){
   restore_data(conn, database, NULL, filenamegz1, TRUE, FALSE);
  }else{
   query= g_strdup_printf("CREATE DATABASE `%s`", db ? db : database);
   mysql_query(conn, query);
  }
 }else{
  query= g_strdup_printf("CREATE DATABASE `%s`", db ? db : database);
  mysql_query(conn, query);
 }

 g_free(query);
 return;
}

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.