[Groonga-mysql-commit] mroonga/mroonga [master] Use mrn::PathMapper

Back to archive index

null+****@clear***** null+****@clear*****
2012年 3月 19日 (月) 18:55:16 JST


Kouhei Sutou	2012-03-19 18:55:16 +0900 (Mon, 19 Mar 2012)

  New Revision: 2c7e8a3f373f152f31333d31684f8d61f177ddcc

  Log:
    Use mrn::PathMapper
    
    * mrn_table_name_gen() -> mrn::PathMapper::table_name()
    * mrn_table_name_gen_for_mysql() -> mrn::PathMapper::mysql_table_name()

  Modified files:
    ha_mroonga.cc

  Modified: ha_mroonga.cc (+54 -66)
===================================================================
--- ha_mroonga.cc    2012-03-19 18:53:30 +0900 (8392ede)
+++ ha_mroonga.cc    2012-03-19 18:55:16 +0900 (4d3bea0)
@@ -2113,9 +2113,9 @@ int ha_mroonga::wrapper_create(const char *name, TABLE *table,
     DBUG_RETURN(ER_REQUIRES_PRIMARY_KEY);
   }
 
-  char grn_table_name[MRN_MAX_PATH_SIZE];
-  mrn_table_name_gen(name, grn_table_name);
-  error = wrapper_create_index(name, table, info, tmp_share, grn_table_name);
+  mrn::PathMapper mapper(name);
+  error = wrapper_create_index(name, table, info, tmp_share,
+                               mapper.table_name());
   if (error)
     DBUG_RETURN(error);
 
@@ -2150,7 +2150,7 @@ int ha_mroonga::wrapper_create(const char *name, TABLE *table,
   delete hnd;
 
   if (error) {
-    wrapper_delete_index(name, tmp_share, grn_table_name);
+    wrapper_delete_index(name, tmp_share, mapper.table_name());
   }
 
   if (wrap_key_info)
@@ -2455,14 +2455,14 @@ int ha_mroonga::storage_create(const char *name, TABLE *table,
 
   /* create table */
   grn_obj *table_obj;
-  char table_name[MRN_MAX_PATH_SIZE];
-  mrn_table_name_gen(name, table_name);
-  int table_name_len = strlen(table_name);
+  mrn::PathMapper mapper(name);
 
   char *table_path = NULL;           // we don't specify path
   grn_obj *pkey_value_type = NULL; // we don't use this
 
-  table_obj = grn_table_create(ctx, table_name, table_name_len, table_path,
+  table_obj = grn_table_create(ctx,
+                               mapper.table_name(), strlen(mapper.table_name()),
+                               table_path,
                                table_flags, pkey_type, pkey_value_type);
   if (ctx->rc) {
     error = ER_CANT_CREATE_TABLE;
@@ -2497,7 +2497,8 @@ int ha_mroonga::storage_create(const char *name, TABLE *table,
     }
   }
 
-  error = storage_create_indexes(table, table_name, table_obj, tmp_share);
+  error = storage_create_indexes(table, mapper.table_name(), table_obj,
+                                 tmp_share);
   if (error) {
     grn_obj_remove(ctx, table_obj);
     table_obj = NULL;
@@ -3012,8 +3013,7 @@ int ha_mroonga::wrapper_open_indexes(const char *name, bool ignore_open_error)
     key_min = key_max = NULL;
   }
 
-  char table_name[MRN_MAX_PATH_SIZE];
-  mrn_table_name_gen(name, table_name);
+  mrn::PathMapper mapper(name);
   uint i = 0;
   for (i = 0; i < n_keys; i++) {
     KEY key_info = table->s->key_info[i];
@@ -3035,7 +3035,7 @@ int ha_mroonga::wrapper_open_indexes(const char *name, bool ignore_open_error)
     }
 
     char index_name[MRN_MAX_PATH_SIZE];
-    mrn_index_table_name_create(table_name, key_info.name, index_name);
+    mrn_index_table_name_create(mapper.table_name(), key_info.name, index_name);
     grn_index_tables[i] = grn_ctx_get(ctx, index_name, strlen(index_name));
     if (ctx->rc) {
       DBUG_PRINT("info",
@@ -3201,9 +3201,8 @@ int ha_mroonga::open_table(const char *name)
   if (error)
     DBUG_RETURN(error);
 
-  char table_name[MRN_MAX_PATH_SIZE];
-  mrn_table_name_gen(name, table_name);
-  grn_table = grn_ctx_get(ctx, table_name, strlen(table_name));
+  mrn::PathMapper mapper(name);
+  grn_table = grn_ctx_get(ctx, mapper.table_name(), strlen(mapper.table_name()));
   if (ctx->rc) {
     error = ER_CANT_OPEN_FILE;
     my_message(error, ctx->errbuf, MYF(0));
@@ -3280,8 +3279,7 @@ int ha_mroonga::storage_open_indexes(const char *name)
     key_min = key_max = NULL;
   }
 
-  char table_name[MRN_MAX_PATH_SIZE];
-  mrn_table_name_gen(name, table_name);
+  mrn::PathMapper mapper(name);
   uint i, j;
   for (i = 0; i < n_keys; i++) {
     key_min[i] = (uchar *)malloc(MRN_MAX_KEY_SIZE);
@@ -3301,7 +3299,7 @@ int ha_mroonga::storage_open_indexes(const char *name)
       }
     }
 
-    mrn_index_table_name_create(table_name, key_info.name, index_name);
+    mrn_index_table_name_create(mapper.table_name(), key_info.name, index_name);
     grn_index_tables[i] = grn_ctx_get(ctx, index_name, strlen(index_name));
     if (ctx->rc) {
       error = ER_CANT_OPEN_FILE;
@@ -3449,22 +3447,20 @@ int ha_mroonga::close()
   }
 
   if (is_temporary_table_name(share->table_name)) {
-    char table_name[MRN_MAX_PATH_SIZE];
-    char mysql_table_name[MRN_MAX_PATH_SIZE];
     TABLE_LIST table_list;
     TABLE_SHARE *tmp_table_share;
     int tmp_error;
     /* no need to decode */
     mrn::PathMapper mapper(share->table_name);
-    mrn_table_name_gen(share->table_name, table_name);
-    mrn_table_name_gen_for_mysql(share->table_name, mysql_table_name);
 #ifdef MRN_TABLE_LIST_INIT_REQUIRE_ALIAS
     table_list.init_one_table(mapper.db_name(), strlen(mapper.db_name()),
-                              mysql_table_name, strlen(mysql_table_name),
-                              mysql_table_name,
+                              mapper.mysql_table_name(),
+                              strlen(mapper.mysql_table_name()),
+                              mapper.mysql_table_name(),
                               TL_WRITE);
 #else
-    table_list.init_one_table(mapper.db_name(), mysql_table_name, TL_WRITE);
+    table_list.init_one_table(mapper.db_name(), mapper.mysql_table_name(),
+                              TL_WRITE);
 #endif
     mrn_open_mutex_lock();
     tmp_table_share =
@@ -3609,16 +3605,13 @@ int ha_mroonga::delete_table(const char *name)
 {
   int error = 0;
   THD *thd = ha_thd();
-  char table_name[MRN_MAX_PATH_SIZE];
-  char mysql_table_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_table_name_gen(name, table_name);
-  mrn_table_name_gen_for_mysql(name, mysql_table_name);
+  mrn::PathMapper mapper(name);
   st_mrn_slot_data *slot_data = mrn_get_slot_data(thd, FALSE);
   if (slot_data && slot_data->first_alter_share)
   {
@@ -3646,11 +3639,13 @@ int ha_mroonga::delete_table(const char *name)
     mrn::PathMapper mapper(name);
 #ifdef MRN_TABLE_LIST_INIT_REQUIRE_ALIAS
     table_list.init_one_table(mapper.db_name(), strlen(mapper.db_name()),
-                              mysql_table_name, strlen(mysql_table_name),
-                              mysql_table_name,
+                              mapper.mysql_table_name(),
+                              strlen(mapper.mysql_table_name()),
+                              mapper.mysql_table_name(),
                               TL_WRITE);
 #else
-    table_list.init_one_table(mapper.db_name(), mysql_table_name, TL_WRITE);
+    table_list.init_one_table(mapper.db_name(), mapper.mysql_table_name(),
+                              TL_WRITE);
 #endif
     mrn_open_mutex_lock();
     tmp_table_share = mrn_create_tmp_table_share(&table_list, name, &error);
@@ -3673,9 +3668,9 @@ int ha_mroonga::delete_table(const char *name)
 
   if (tmp_share->wrapper_mode)
   {
-    error = wrapper_delete_table(name, tmp_share, table_name);
+    error = wrapper_delete_table(name, tmp_share, mapper.table_name());
   } else {
-    error = storage_delete_table(name, tmp_share, table_name);
+    error = storage_delete_table(name, tmp_share, mapper.table_name());
   }
 
   mrn_free_share(tmp_share);
@@ -10115,9 +10110,6 @@ int ha_mroonga::storage_rename_table(const char *from, const char *to,
 int ha_mroonga::rename_table(const char *from, const char *to)
 {
   int error = 0;
-  char from_table_name[MRN_MAX_PATH_SIZE];
-  char to_table_name[MRN_MAX_PATH_SIZE];
-  char from_mysql_table_name[MRN_MAX_PATH_SIZE];
   TABLE_LIST table_list;
   TABLE_SHARE *tmp_table_share;
   TABLE tmp_table;
@@ -10125,20 +10117,18 @@ int ha_mroonga::rename_table(const char *from, const char *to)
   MRN_DBUG_ENTER_METHOD();
   mrn::PathMapper to_mapper(to);
   mrn::PathMapper from_mapper(from);
-  mrn_table_name_gen(to, to_table_name);
-  mrn_table_name_gen(from, from_table_name);
-  mrn_table_name_gen_for_mysql(from, from_mysql_table_name);
   if (strcmp(from_mapper.db_name(), to_mapper.db_name()))
     DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 
 #ifdef MRN_TABLE_LIST_INIT_REQUIRE_ALIAS
   table_list.init_one_table(from_mapper.db_name(),
                             strlen(from_mapper.db_name()),
-                            from_mysql_table_name,
-                            strlen(from_mysql_table_name),
-                            from_mysql_table_name, TL_WRITE);
+                            from_mapper.mysql_table_name(),
+                            strlen(from_mapper.mysql_table_name()),
+                            from_mapper.mysql_table_name(), TL_WRITE);
 #else
-  table_list.init_one_table(from_mapper.db_name(), from_mysql_table_name,
+  table_list.init_one_table(from_mapper.db_name(),
+                            from_mapper.mysql_table_name(),
                             TL_WRITE);
 #endif
   mrn_open_mutex_lock();
@@ -10162,17 +10152,19 @@ int ha_mroonga::rename_table(const char *from, const char *to)
   if (tmp_share->wrapper_mode)
   {
     error = wrapper_rename_table(from, to, tmp_share,
-                                 from_table_name, to_table_name);
+                                 from_mapper.table_name(),
+                                 to_mapper.table_name());
   } else {
     error = storage_rename_table(from, to, tmp_share,
-                                 from_table_name, to_table_name);
+                                 from_mapper.table_name(),
+                                 to_mapper.table_name());
   }
 
   mrn_free_share(tmp_share);
-  if (!error && to_table_name[0] == '#') {
+  if (!error && to_mapper.table_name()[0] == '#') {
     if ((error = alter_share_add(to, tmp_table_share)))
       DBUG_RETURN(error);
-  } else if (error && from_table_name[0] == '#') {
+  } else if (error && from_mapper.table_name()[0] == '#') {
     alter_share_add(from, tmp_table_share);
   } else {
     mrn_open_mutex_lock();
@@ -10348,12 +10340,11 @@ int ha_mroonga::wrapper_recreate_indexes(THD *thd)
   KEY *p_key_info = &table->key_info[table_share->primary_key];
   KEY *tmp_key_info;
   KEY *key_info = table->key_info;
-  char table_name[MRN_MAX_PATH_SIZE];
   MRN_DBUG_ENTER_METHOD();
-  mrn_table_name_gen(table_share->normalized_path.str, table_name);
+  mrn::PathMapper mapper(table_share->normalized_path.str);
   bitmap_clear_all(table->read_set);
   clear_indexes();
-  remove_grn_obj_force(table_name);
+  remove_grn_obj_force(mapper.table_name());
   grn_table = NULL;
   mrn_set_bitmap_by_key(table->read_set, p_key_info);
   for (i = 0; i < n_keys; i++) {
@@ -10362,7 +10353,8 @@ int ha_mroonga::wrapper_recreate_indexes(THD *thd)
     }
     char index_name[MRN_MAX_PATH_SIZE];
     char index_column_full_name[MRN_MAX_PATH_SIZE];
-    mrn_index_table_name_create(table_name, table_share->key_info[i].name,
+    mrn_index_table_name_create(mapper.table_name(),
+                                table_share->key_info[i].name,
                                 index_name);
     snprintf(index_column_full_name, MRN_MAX_PATH_SIZE,
              "%s.%s", index_name, index_column_name);
@@ -10371,7 +10363,7 @@ int ha_mroonga::wrapper_recreate_indexes(THD *thd)
     mrn_set_bitmap_by_key(table->read_set, &key_info[i]);
   }
   error = wrapper_create_index(table_share->normalized_path.str, table,
-                               NULL, share, table_name);
+                               NULL, share, mapper.table_name());
   if (error)
     DBUG_RETURN(error);
   error = wrapper_open_indexes(table_share->normalized_path.str, false);
@@ -10698,7 +10690,6 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
   uint i, j, k;
   uint n_keys = table->s->keys;
   grn_obj *index_tables[num_of_keys + n_keys];
-  char grn_table_name[MRN_MAX_PATH_SIZE];
   THD *thd = ha_thd();
   MRN_SHARE *tmp_share;
   TABLE_SHARE tmp_table_share;
@@ -10721,12 +10712,12 @@ 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_table_name_gen(share->table_name, grn_table_name);
 #ifdef MRN_HANDLER_HAVE_FINAL_ADD_INDEX
   hnd_add_index = NULL;
 #endif
   bitmap_clear_all(table->read_set);
   mrn_set_bitmap_by_key(table->read_set, p_key_info);
+  mrn::PathMapper mapper(share->table_name);
   for (i = 0, j = 0; i < num_of_keys; i++) {
     if (!(key_info[i].flags & HA_FULLTEXT) && !mrn_is_geo_key(&key_info[i])) {
       wrap_key_info[j] = key_info[i];
@@ -10740,7 +10731,7 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
     index_tables[i + n_keys] = NULL;
     if (
       (key_info[i].flags & HA_FULLTEXT) &&
-      (res = wrapper_create_index_fulltext(grn_table_name,
+      (res = wrapper_create_index_fulltext(mapper.table_name(),
                                            i + n_keys,
                                            &key_info[i], index_tables,
                                            tmp_share))
@@ -10748,7 +10739,7 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
       break;
     } else if (
       mrn_is_geo_key(&key_info[i]) &&
-      (res = wrapper_create_index_geo(grn_table_name,
+      (res = wrapper_create_index_geo(mapper.table_name(),
                                       i + n_keys, &key_info[i],
                                       index_tables, tmp_share))
     ) {
@@ -10885,7 +10876,6 @@ int ha_mroonga::storage_add_index(TABLE *table_arg, KEY *key_info,
   uint n_keys = table->s->keys;
   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];
   MRN_SHARE *tmp_share;
   TABLE_SHARE tmp_table_share;
   char **key_parser;
@@ -10907,8 +10897,8 @@ 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_table_name_gen(share->table_name, grn_table_name);
   bitmap_clear_all(table->read_set);
+  mrn::PathMapper mapper(share->table_name);
   for (i = 0; i < num_of_keys; i++) {
     index_tables[i + n_keys] = NULL;
     index_columns[i + n_keys] = NULL;
@@ -10916,7 +10906,7 @@ int ha_mroonga::storage_add_index(TABLE *table_arg, KEY *key_info,
     {
       break;
     }
-    if ((res = storage_create_index(table, grn_table_name, grn_table,
+    if ((res = storage_create_index(table, mapper.table_name(), grn_table,
                                     tmp_share, &key_info[i], index_tables,
                                     index_columns, i + n_keys)))
     {
@@ -11114,13 +11104,12 @@ int ha_mroonga::wrapper_prepare_drop_index(TABLE *table_arg, uint *key_num,
   int res = 0;
   uint wrap_key_num[num_of_keys], i, j;
   KEY *key_info = table_share->key_info;
-  char grn_table_name[MRN_MAX_PATH_SIZE];
   MRN_DBUG_ENTER_METHOD();
   res = mrn_change_encoding(ctx, system_charset_info);
   if (res)
     DBUG_RETURN(res);
 
-  mrn_table_name_gen(share->table_name, grn_table_name);
+  mrn::PathMapper mapper(share->table_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]])) {
@@ -11130,7 +11119,7 @@ int ha_mroonga::wrapper_prepare_drop_index(TABLE *table_arg, uint *key_num,
     }
 
     char index_name[MRN_MAX_PATH_SIZE];
-    mrn_index_table_name_create(grn_table_name, key_info[key_num[i]].name,
+    mrn_index_table_name_create(mapper.table_name(), key_info[key_num[i]].name,
                                 index_name);
     grn_obj *index_table = grn_ctx_get(ctx, index_name, strlen(index_name));
     if (index_table != NULL) {
@@ -11156,16 +11145,15 @@ int ha_mroonga::storage_prepare_drop_index(TABLE *table_arg, uint *key_num,
   int error;
   uint i;
   KEY *key_info = table_share->key_info;
-  char grn_table_name[MRN_MAX_PATH_SIZE];
   MRN_DBUG_ENTER_METHOD();
   error = mrn_change_encoding(ctx, system_charset_info);
   if (error)
     DBUG_RETURN(error);
 
-  mrn_table_name_gen(share->table_name, grn_table_name);
+  mrn::PathMapper mapper(share->table_name);
   for (i = 0; i < num_of_keys; i++) {
     char index_name[MRN_MAX_PATH_SIZE];
-    mrn_index_table_name_create(grn_table_name, key_info[key_num[i]].name,
+    mrn_index_table_name_create(mapper.table_name(), key_info[key_num[i]].name,
                                 index_name);
     grn_obj *index_table = grn_ctx_get(ctx, index_name, strlen(index_name));
     if (index_table != NULL) {




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