[Groonga-mysql-commit] mroonga/mroonga [master] [default][open] use ensure_database_open.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 6月 13日 (月) 18:13:07 JST


Kouhei Sutou	2011-06-13 09:13:07 +0000 (Mon, 13 Jun 2011)

  New Revision: f58f8460ae69970ac18b52ddb9c39661282d73e9

  Log:
    [default][open] use ensure_database_open.

  Modified files:
    ha_mroonga.cc

  Modified: ha_mroonga.cc (+4 -21)
===================================================================
--- ha_mroonga.cc    2011-06-13 09:10:25 +0000 (4526561)
+++ ha_mroonga.cc    2011-06-13 09:13:07 +0000 (c1750f5)
@@ -1460,11 +1460,9 @@ int ha_mroonga::ensure_database_open(const char *name)
   int error = 0;
 
   MRN_DBUG_ENTER_METHOD();
-  /* before creating table, we must check if database is alreadly opened, created */
   grn_obj *db_obj;
   char db_name[MRN_MAX_PATH_SIZE];
   char db_path[MRN_MAX_PATH_SIZE];
-  struct stat db_stat;
   mrn_db_name_gen(name, db_name);
   mrn_db_path_gen(name, db_path);
 
@@ -1577,27 +1575,12 @@ int ha_mroonga::wrapper_open(const char *name, int mode, uint test_if_locked)
 
 int ha_mroonga::default_open(const char *name, int mode, uint test_if_locked)
 {
+  int error;
   MRN_DBUG_ENTER_METHOD();
-  /* First, we must check if database is alreadly opened */
-  char db_name[MRN_MAX_PATH_SIZE];
-  char db_path[MRN_MAX_PATH_SIZE];
-  struct stat dummy;
-  mrn_db_name_gen(name, db_name);
-  mrn_db_path_gen(name, db_path);
 
-  pthread_mutex_lock(&mrn_db_mutex);
-  // we should not call grn_db_open() very often. so we use cache.
-  if (mrn_hash_get(ctx, mrn_hash, db_name, (void**) &(db)) != 0) {
-    db = grn_db_open(ctx, db_path);
-    if (ctx->rc) {
-      pthread_mutex_unlock(&mrn_db_mutex);
-      my_message(ER_CANT_OPEN_FILE, ctx->errbuf, MYF(0));
-      DBUG_RETURN(ER_CANT_OPEN_FILE);
-    }
-    mrn_hash_put(ctx, mrn_hash, db_name, db);
-  }
-  pthread_mutex_unlock(&mrn_db_mutex);
-  grn_ctx_use(ctx, db);
+  error = ensure_database_open(name);
+  if (error)
+    DBUG_RETURN(error);
 
   /* open table */
   char tbl_name[MRN_MAX_PATH_SIZE];




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