[Groonga-mysql-commit] mroonga/mroonga [master] no need to decode for path and db name. refs #1281

Back to archive index

null+****@clear***** null+****@clear*****
2012年 2月 15日 (水) 06:26:08 JST


Kentoku	2012-02-15 06:26:08 +0900 (Wed, 15 Feb 2012)

  New Revision: 29ea47ff62a8630688dc8edb0d017aa6a21182e3

  Log:
    no need to decode for path and db name. refs #1281

  Modified files:
    ha_mroonga.cc

  Modified: ha_mroonga.cc (+97 -94)
===================================================================
--- ha_mroonga.cc    2012-02-15 00:17:20 +0900 (ac5edb7)
+++ ha_mroonga.cc    2012-02-15 06:26:08 +0900 (116eb0e)
@@ -904,11 +904,8 @@ static void mrn_drop_db(handlerton *hton, char *path)
 {
   char db_path[MRN_MAX_PATH_SIZE];
   char db_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) path, (const uchar *) path + strlen(path));
-  mrn_db_path_gen(decode_name, db_path);
-  mrn_db_name_gen(decode_name, db_name);
+  mrn_db_path_gen(path, db_path);
+  mrn_db_name_gen(path, db_name);
   grn_ctx *ctx;
   ctx = grn_ctx_open(0);
   mrn_change_encoding(ctx, system_charset_info);
@@ -2222,10 +2219,12 @@ int ha_mroonga::wrapper_create_index(const char *name, TABLE *table,
 
   grn_obj *grn_table;
   char grn_table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) name, (const uchar *) name + strlen(name));
-  mrn_table_name_gen(decode_name, grn_table_name);
+  char decode_src_name[MRN_MAX_PATH_SIZE];
+  mrn_table_name_gen(name, decode_src_name);
+  mrn_decode((uchar *) grn_table_name,
+             (uchar *) grn_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   char *grn_table_path = NULL;     // we don't specify path
   grn_obj *pkey_type = grn_ctx_at(ctx, GRN_DB_SHORT_TEXT);
   grn_obj *pkey_value_type = NULL; // we don't use this
@@ -2343,12 +2342,12 @@ int ha_mroonga::storage_create(const char *name, TABLE *table,
   /* create table */
   grn_obj *table_obj;
   char table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  mrn_decode((uchar *)decode_name,
-             (uchar *)decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *)name,
-             (const uchar *)name + strlen(name));
-  mrn_table_name_gen(decode_name, table_name);
+  char decode_src_name[MRN_MAX_PATH_SIZE];
+  mrn_table_name_gen(name, decode_src_name);
+  mrn_decode((uchar *) table_name,
+             (uchar *) table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   int table_name_len = strlen(table_name);
 
   char *table_path = NULL;           // we don't specify path
@@ -2699,19 +2698,14 @@ int ha_mroonga::ensure_database_create(const char *name)
   grn_obj *db;
   char db_name[MRN_MAX_PATH_SIZE];
   char db_path[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
   struct stat db_stat;
 
   error = mrn_change_encoding(ctx, system_charset_info);
   if (error)
     DBUG_RETURN(error);
 
-  mrn_decode((uchar *)decode_name,
-             (uchar *)decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *)name,
-             (const uchar *)name + strlen(name));
-  mrn_db_name_gen(decode_name, db_name);
-  mrn_db_path_gen(decode_name, db_path);
+  mrn_db_name_gen(name, db_name);
+  mrn_db_path_gen(name, db_path);
 
   pthread_mutex_lock(&mrn_db_mutex);
   if (mrn_hash_get(&mrn_ctx, mrn_hash, db_name, &db) != 0) {
@@ -2751,17 +2745,13 @@ int ha_mroonga::ensure_database_open(const char *name)
   grn_obj *db;
   char db_name[MRN_MAX_PATH_SIZE];
   char db_path[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
 
   error = mrn_change_encoding(ctx, system_charset_info);
   if (error)
     DBUG_RETURN(error);
 
-  mrn_decode((uchar *) decode_name,
-             (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) name, (const uchar *) name + strlen(name));
-  mrn_db_name_gen(decode_name, db_name);
-  mrn_db_path_gen(decode_name, db_path);
+  mrn_db_name_gen(name, db_name);
+  mrn_db_path_gen(name, db_path);
 
   pthread_mutex_lock(&mrn_db_mutex);
   if (mrn_hash_get(&mrn_ctx, mrn_hash, db_name, &db) != 0) {
@@ -2919,10 +2909,12 @@ int ha_mroonga::wrapper_open_indexes(const char *name, bool ignore_open_error)
   }
 
   char table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) name, (const uchar *) name + strlen(name));
-  mrn_table_name_gen(decode_name, table_name);
+  char decode_src_name[MRN_MAX_PATH_SIZE];
+  mrn_table_name_gen(name, decode_src_name);
+  mrn_decode((uchar *) table_name,
+             (uchar *) table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   uint i = 0;
   for (i = 0; i < n_keys; i++) {
     KEY key_info = table->s->key_info[i];
@@ -3111,10 +3103,12 @@ int ha_mroonga::open_table(const char *name)
     DBUG_RETURN(error);
 
   char table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) name, (const uchar *) name + strlen(name));
-  mrn_table_name_gen(decode_name, table_name);
+  char decode_src_name[MRN_MAX_PATH_SIZE];
+  mrn_table_name_gen(name, decode_src_name);
+  mrn_decode((uchar *) table_name,
+             (uchar *) table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   grn_table = grn_ctx_get(ctx, table_name, strlen(table_name));
   if (ctx->rc) {
     error = ER_CANT_OPEN_FILE;
@@ -3189,10 +3183,12 @@ int ha_mroonga::storage_open_indexes(const char *name)
   }
 
   char table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) name, (const uchar *) name + strlen(name));
-  mrn_table_name_gen(decode_name, table_name);
+  char decode_src_name[MRN_MAX_PATH_SIZE];
+  mrn_table_name_gen(name, decode_src_name);
+  mrn_decode((uchar *) table_name,
+             (uchar *) table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   uint i;
   for (i = 0; i < n_keys; i++) {
     key_min[i] = (uchar *)malloc(MRN_MAX_KEY_SIZE);
@@ -3341,16 +3337,12 @@ int ha_mroonga::close()
     /* temporary table */
     char db_name[MRN_MAX_PATH_SIZE];
     char table_name[MRN_MAX_PATH_SIZE];
-    char decode_name[MRN_MAX_PATH_SIZE];
     TABLE_LIST table_list;
     TABLE_SHARE *tmp_table_share;
     int tmp_error;
-    mrn_decode((uchar *)decode_name,
-               (uchar *)decode_name + MRN_MAX_PATH_SIZE,
-               (const uchar *)share->table_name,
-               (const uchar *)share->table_name + strlen(share->table_name));
-    mrn_db_name_gen(decode_name, db_name);
-    mrn_table_name_gen(decode_name, table_name);
+    /* no need to decode */
+    mrn_db_name_gen(share->table_name, db_name);
+    mrn_table_name_gen(share->table_name, table_name);
 #ifdef MRN_TABLE_LIST_INIT_REQUIRE_ALIAS
     table_list.init_one_table(db_name, strlen(db_name),
                               table_name, strlen(table_name), table_name,
@@ -3502,17 +3494,19 @@ int ha_mroonga::delete_table(const char *name)
   THD *thd = ha_thd();
   char db_name[MRN_MAX_PATH_SIZE];
   char table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
+  char decode_src_name[MRN_MAX_PATH_SIZE];
   TABLE_LIST table_list;
   TABLE_SHARE *tmp_table_share = NULL;
   TABLE tmp_table;
   MRN_SHARE *tmp_share;
   st_mrn_alter_share *alter_share, *tmp_alter_share;
   MRN_DBUG_ENTER_METHOD();
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) name, (const uchar *) name + strlen(name));
-  mrn_db_name_gen(decode_name, db_name);
-  mrn_table_name_gen(decode_name, table_name);
+  mrn_db_name_gen(name, db_name);
+  mrn_table_name_gen(name, decode_src_name);
+  mrn_decode((uchar *) table_name,
+             (uchar *) table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   st_mrn_slot_data *slot_data = mrn_get_slot_data(thd, FALSE);
   if (slot_data && slot_data->first_alter_share)
   {
@@ -3539,10 +3533,11 @@ int ha_mroonga::delete_table(const char *name)
   {
 #ifdef MRN_TABLE_LIST_INIT_REQUIRE_ALIAS
     table_list.init_one_table(db_name, strlen(db_name),
-                              table_name, strlen(table_name), table_name,
+                              decode_src_name, strlen(decode_src_name),
+                              decode_src_name,
                               TL_WRITE);
 #else
-    table_list.init_one_table(db_name, table_name, TL_WRITE);
+    table_list.init_one_table(db_name, decode_src_name, TL_WRITE);
 #endif
     mrn_open_mutex_lock();
     tmp_table_share = mrn_create_tmp_table_share(&table_list, name, &error);
@@ -9264,29 +9259,33 @@ int ha_mroonga::rename_table(const char *from, const char *to)
   char to_db_name[MRN_MAX_PATH_SIZE];
   char from_table_name[MRN_MAX_PATH_SIZE];
   char to_table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
+  char decode_src_name[MRN_MAX_PATH_SIZE];
   TABLE_LIST table_list;
   TABLE_SHARE *tmp_table_share;
   TABLE tmp_table;
   MRN_SHARE *tmp_share;
   MRN_DBUG_ENTER_METHOD();
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) from, (const uchar *) from + strlen(from));
-  mrn_db_name_gen(decode_name, from_db_name);
-  mrn_table_name_gen(decode_name, from_table_name);
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) to, (const uchar *) to + strlen(to));
-  mrn_db_name_gen(decode_name, to_db_name);
-  mrn_table_name_gen(decode_name, to_table_name);
+  mrn_db_name_gen(to, to_db_name);
+  mrn_table_name_gen(to, decode_src_name);
+  mrn_decode((uchar *) to_table_name,
+             (uchar *) to_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
+  mrn_db_name_gen(from, from_db_name);
+  mrn_table_name_gen(from, decode_src_name);
+  mrn_decode((uchar *) from_table_name,
+             (uchar *) from_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   if (strcmp(from_db_name, to_db_name))
     DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 
 #ifdef MRN_TABLE_LIST_INIT_REQUIRE_ALIAS
   table_list.init_one_table(from_db_name, strlen(from_db_name),
-                            from_table_name, strlen(from_table_name),
-                            from_table_name, TL_WRITE);
+                            decode_src_name, strlen(decode_src_name),
+                            decode_src_name, TL_WRITE);
 #else
-  table_list.init_one_table(from_db_name, from_table_name, TL_WRITE);
+  table_list.init_one_table(from_db_name, decode_src_name, TL_WRITE);
 #endif
   mrn_open_mutex_lock();
   tmp_table_share = mrn_create_tmp_table_share(&table_list, from, &error);
@@ -9498,14 +9497,14 @@ int ha_mroonga::wrapper_recreate_indexes(THD *thd)
     *key_info = table->key_info;
   char db_name[MRN_MAX_PATH_SIZE];
   char table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
-  MRN_DBUG_ENTER_METHOD();
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) table_share->normalized_path.str,
-             (const uchar *) table_share->normalized_path.str +
-             table_share->normalized_path.length);
-  mrn_db_name_gen(decode_name, db_name);
-  mrn_table_name_gen(decode_name, table_name);
+  char decode_src_name[MRN_MAX_PATH_SIZE];
+  MRN_DBUG_ENTER_METHOD();
+  mrn_db_name_gen(table_share->normalized_path.str, db_name);
+  mrn_table_name_gen(table_share->normalized_path.str, decode_src_name);
+  mrn_decode((uchar *) table_name,
+             (uchar *) table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   bitmap_clear_all(table->read_set);
   clear_indexes();
   remove_grn_obj_force(table_name);
@@ -9851,7 +9850,7 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
   uint n_keys = table->s->keys;
   grn_obj *index_tables[num_of_keys + n_keys];
   char grn_table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
+  char decode_src_name[MRN_MAX_PATH_SIZE];
   THD *thd = ha_thd();
   MRN_SHARE *tmp_share;
   TABLE_SHARE tmp_table_share;
@@ -9874,10 +9873,11 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
   tmp_share->table_share = &tmp_table_share;
   tmp_share->key_parser = key_parser;
   tmp_share->key_parser_length = key_parser_length;
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) share->table_name,
-             (const uchar *) share->table_name + share->table_name_length);
-  mrn_table_name_gen(decode_name, grn_table_name);
+  mrn_table_name_gen(share->table_name, decode_src_name);
+  mrn_decode((uchar *) grn_table_name,
+             (uchar *) grn_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
 #ifdef MRN_HANDLER_HAVE_FINAL_ADD_INDEX
   hnd_add_index = NULL;
 #endif
@@ -10042,7 +10042,7 @@ int ha_mroonga::storage_add_index(TABLE *table_arg, KEY *key_info,
   grn_obj *index_tables[num_of_keys + n_keys];
   grn_obj *index_columns[num_of_keys + n_keys];
   char grn_table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
+  char decode_src_name[MRN_MAX_PATH_SIZE];
   MRN_SHARE *tmp_share;
   TABLE_SHARE tmp_table_share;
   char **key_parser;
@@ -10064,10 +10064,11 @@ int ha_mroonga::storage_add_index(TABLE *table_arg, KEY *key_info,
   tmp_share->table_share = &tmp_table_share;
   tmp_share->key_parser = key_parser;
   tmp_share->key_parser_length = key_parser_length;
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) share->table_name,
-             (const uchar *) share->table_name + share->table_name_length);
-  mrn_table_name_gen(decode_name, grn_table_name);
+  mrn_table_name_gen(share->table_name, decode_src_name);
+  mrn_decode((uchar *) grn_table_name,
+             (uchar *) grn_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   bitmap_clear_all(table->read_set);
   for (i = 0; i < num_of_keys; i++) {
     index_tables[i + n_keys] = NULL;
@@ -10249,16 +10250,17 @@ int ha_mroonga::wrapper_prepare_drop_index(TABLE *table_arg, uint *key_num,
   uint wrap_key_num[num_of_keys], i, j;
   KEY *key_info = table_share->key_info;
   char grn_table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
+  char decode_src_name[MRN_MAX_PATH_SIZE];
   MRN_DBUG_ENTER_METHOD();
   res = mrn_change_encoding(ctx, system_charset_info);
   if (res)
     DBUG_RETURN(res);
 
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) share->table_name,
-             (const uchar *) share->table_name + share->table_name_length);
-  mrn_table_name_gen(decode_name, grn_table_name);
+  mrn_table_name_gen(share->table_name, decode_src_name);
+  mrn_decode((uchar *) grn_table_name,
+             (uchar *) grn_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   for (i = 0, j = 0; i < num_of_keys; i++) {
     if (!(key_info[key_num[i]].flags & HA_FULLTEXT) &&
       !mrn_is_geo_key(&key_info[key_num[i]])) {
@@ -10295,16 +10297,17 @@ int ha_mroonga::storage_prepare_drop_index(TABLE *table_arg, uint *key_num,
   uint i;
   KEY *key_info = table_share->key_info;
   char grn_table_name[MRN_MAX_PATH_SIZE];
-  char decode_name[MRN_MAX_PATH_SIZE];
+  char decode_src_name[MRN_MAX_PATH_SIZE];
   MRN_DBUG_ENTER_METHOD();
   error = mrn_change_encoding(ctx, system_charset_info);
   if (error)
     DBUG_RETURN(error);
 
-  mrn_decode((uchar *) decode_name, (uchar *) decode_name + MRN_MAX_PATH_SIZE,
-             (const uchar *) share->table_name,
-             (const uchar *) share->table_name + share->table_name_length);
-  mrn_table_name_gen(decode_name, grn_table_name);
+  mrn_table_name_gen(share->table_name, decode_src_name);
+  mrn_decode((uchar *) grn_table_name,
+             (uchar *) grn_table_name + MRN_MAX_PATH_SIZE,
+             (const uchar *) decode_src_name,
+             (const uchar *) decode_src_name + strlen(decode_src_name));
   for (i = 0; i < num_of_keys; i++) {
     char index_name[MRN_MAX_PATH_SIZE];
     mrn_index_table_name_gen(grn_table_name, key_info[key_num[i]].name,




Groonga-mysql-commit メーリングリストの案内
Back to archive index