[Groonga-mysql-commit] mroonga/mroonga [master] use global grn_ctx for process global grn object.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 10月 6日 (木) 13:24:26 JST


Kouhei Sutou	2011-10-06 04:24:26 +0000 (Thu, 06 Oct 2011)

  New Revision: 1b4c6066c36b7ad4ff40e6899dc39e1a2be80b27

  Log:
    use global grn_ctx for process global grn object.

  Modified files:
    ha_mroonga.cc
    mrn_sys.c
    mrn_sys.h

  Modified: ha_mroonga.cc (+12 -12)
===================================================================
--- ha_mroonga.cc    2011-10-06 02:51:05 +0000 (4f3acc7)
+++ ha_mroonga.cc    2011-10-06 04:24:26 +0000 (69efcc4)
@@ -962,7 +962,7 @@ static int mrn_init(void *p)
 
   // init hash
   if (!(mrn_hash = grn_hash_create(ctx, NULL,
-                                   MRN_MAX_KEY_SIZE, sizeof(size_t),
+                                   MRN_MAX_KEY_SIZE, sizeof(grn_obj *),
                                    GRN_OBJ_KEY_VAR_SIZE))) {
     GRN_LOG(ctx, GRN_LOG_ERROR, "cannot init hash, exiting");
     goto err_hash_create;
@@ -2005,28 +2005,28 @@ int ha_mroonga::ensure_database_create(const char *name)
   mrn_db_path_gen(name, db_path);
 
   pthread_mutex_lock(&mrn_db_mutex);
-  if (mrn_hash_get(ctx, mrn_hash, db_name, (void **) &(db)) != 0) {
+  if (mrn_hash_get(&mrn_ctx, mrn_hash, db_name, &db) != 0) {
     if (stat(db_path, &db_stat)) {
       // creating new database
       GRN_LOG(ctx, GRN_LOG_INFO, "database not found. creating...(%s)", db_path);
-      db = grn_db_create(ctx, db_path, NULL);
-      if (ctx->rc) {
+      db = grn_db_create(&mrn_ctx, db_path, NULL);
+      if (mrn_ctx.rc) {
         pthread_mutex_unlock(&mrn_db_mutex);
         error = ER_CANT_CREATE_TABLE;
-        my_message(error, ctx->errbuf, MYF(0));
+        my_message(error, mrn_ctx.errbuf, MYF(0));
         DBUG_RETURN(error);
       }
     } else {
       // opening existing database
-      db = grn_db_open(ctx, db_path);
-      if (ctx->rc) {
+      db = grn_db_open(&mrn_ctx, db_path);
+      if (mrn_ctx.rc) {
         pthread_mutex_unlock(&mrn_db_mutex);
         error = ER_CANT_OPEN_FILE;
-        my_message(error, ctx->errbuf, MYF(0));
+        my_message(error, mrn_ctx.errbuf, MYF(0));
         DBUG_RETURN(error);
       }
     }
-    mrn_hash_put(ctx, mrn_hash, db_name, db);
+    mrn_hash_put(&mrn_ctx, mrn_hash, db_name, db);
   }
   pthread_mutex_unlock(&mrn_db_mutex);
   grn_ctx_use(ctx, db);
@@ -2046,15 +2046,15 @@ int ha_mroonga::ensure_database_open(const char *name)
   mrn_db_path_gen(name, db_path);
 
   pthread_mutex_lock(&mrn_db_mutex);
-  if (mrn_hash_get(ctx, mrn_hash, db_name, (void **) &(db)) != 0) {
-    db = grn_db_open(ctx, db_path);
+  if (mrn_hash_get(&mrn_ctx, mrn_hash, db_name, &db) != 0) {
+    db = grn_db_open(&mrn_ctx, db_path);
     if (ctx->rc) {
       pthread_mutex_unlock(&mrn_db_mutex);
       error = ER_CANT_OPEN_FILE;
       my_message(error, ctx->errbuf, MYF(0));
       DBUG_RETURN(error);
     }
-    mrn_hash_put(ctx, mrn_hash, db_name, db);
+    mrn_hash_put(&mrn_ctx, mrn_hash, db_name, db);
   }
   pthread_mutex_unlock(&mrn_db_mutex);
   grn_ctx_use(ctx, db);

  Modified: mrn_sys.c (+6 -6)
===================================================================
--- mrn_sys.c    2011-10-06 02:51:05 +0000 (934634b)
+++ mrn_sys.c    2011-10-06 04:24:26 +0000 (67b9cbe)
@@ -27,36 +27,36 @@
 #include <string.h>
 #include "mrn_sys.h"
 
-int mrn_hash_put(grn_ctx *ctx, grn_hash *hash, const char *key, void *value)
+int mrn_hash_put(grn_ctx *ctx, grn_hash *hash, const char *key, grn_obj *value)
 {
   int added, res=0;
   void *buf;
-  grn_hash_add(ctx, hash, (const char*) key, strlen(key), &buf, &added);
+  grn_hash_add(ctx, hash, (const char *)key, strlen(key), &buf, &added);
   // duplicate check
   if (added == 0) {
     GRN_LOG(ctx, GRN_LOG_WARNING, "hash put duplicated (key=%s)", key);
     res = -1;
   } else {
     // store address of value
-    memcpy(buf, &value, sizeof(buf));
+    memcpy(buf, &value, sizeof(grn_obj *));
     GRN_LOG(ctx, GRN_LOG_DEBUG, "hash put (key=%s)", key);
   }
   return res;
 }
 
-int mrn_hash_get(grn_ctx *ctx, grn_hash *hash, const char *key, void **value)
+int mrn_hash_get(grn_ctx *ctx, grn_hash *hash, const char *key, grn_obj **value)
 {
   int res = 0;
   grn_id id;
   void *buf;
-  id = grn_hash_get(ctx, hash, (const char*) key, strlen(key), &buf);
+  id = grn_hash_get(ctx, hash, (const char *)key, strlen(key), &buf);
   // key not found
   if (id == GRN_ID_NIL) {
     GRN_LOG(ctx, GRN_LOG_DEBUG, "hash get not found (key=%s)", key);
     res = -1;
   } else {
     // restore address of value
-    memcpy(value, buf, sizeof(buf));
+    memcpy(value, buf, sizeof(grn_obj *));
   }
   return res;
 }

  Modified: mrn_sys.h (+2 -2)
===================================================================
--- mrn_sys.h    2011-10-06 02:51:05 +0000 (2bae815)
+++ mrn_sys.h    2011-10-06 04:24:26 +0000 (32b4688)
@@ -42,8 +42,8 @@
 #endif
 
 /* functions */
-int mrn_hash_put(grn_ctx *ctx, grn_hash *hash, const char *key, void *value);
-int mrn_hash_get(grn_ctx *ctx, grn_hash *hash, const char *key, void **value);
+int mrn_hash_put(grn_ctx *ctx, grn_hash *hash, const char *key, grn_obj *value);
+int mrn_hash_get(grn_ctx *ctx, grn_hash *hash, const char *key, grn_obj **value);
 int mrn_hash_remove(grn_ctx *ctx, grn_hash *hash, const char *key);
 
 char *mrn_db_path_gen(const char *arg, char *dest);




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