[Groonga-commit] groonga/groonga [master] grn_pat can be dbkeys by setting an environment variable GRN_CREATE_DB_USING_PAT to yes

Back to archive index

null+****@clear***** null+****@clear*****
2011年 12月 29日 (木) 18:17:54 JST


Daijiro MORI	2011-12-29 18:17:54 +0900 (Thu, 29 Dec 2011)

  New Revision: 701e77fbae3818602e1c406dd4fac8c664931ab1

  Log:
    grn_pat can be dbkeys by setting an environment variable GRN_CREATE_DB_USING_PAT to yes

  Modified files:
    lib/db.c

  Modified: lib/db.c (+16 -14)
===================================================================
--- lib/db.c    2011-12-29 14:58:16 +0900 (1778acf)
+++ lib/db.c    2011-12-29 18:17:54 +0900 (b33a3e1)
@@ -97,17 +97,19 @@ grn_db_create(grn_ctx *ctx, const char *path, grn_db_create_optarg *optarg)
   GRN_API_ENTER;
   if (!path || strlen(path) <= PATH_MAX - 14) {
     if ((s = GRN_MALLOC(sizeof(grn_db)))) {
+      int use_pat_as_db_keys =  (getenv("GRN_CREATE_DB_USING_PAT") &&
+                                 !strcmp(getenv("GRN_CREATE_DB_USING_PAT"), "yes"));
       grn_tiny_array_init(ctx, &s->values, sizeof(db_value),
                           GRN_TINY_ARRAY_CLEAR|
                           GRN_TINY_ARRAY_THREADSAFE|
                           GRN_TINY_ARRAY_USE_MALLOC);
-#ifdef USE_PAT_AS_DB_KEYS
-      s->keys = (grn_obj *)grn_pat_create(ctx, path, GRN_TABLE_MAX_KEY_SIZE,
-                                          0, GRN_OBJ_KEY_VAR_SIZE);
-#else /* USE_PAT_AS_DB_KEYS */
-      s->keys = (grn_obj *)grn_dat_create(ctx, path, GRN_TABLE_MAX_KEY_SIZE,
-                                          0, GRN_OBJ_KEY_VAR_SIZE);
-#endif /* USE_PAT_AS_DB_KEYS */
+      if (use_pat_as_db_keys) {
+        s->keys = (grn_obj *)grn_pat_create(ctx, path, GRN_TABLE_MAX_KEY_SIZE,
+                                            0, GRN_OBJ_KEY_VAR_SIZE);
+      } else {
+        s->keys = (grn_obj *)grn_dat_create(ctx, path, GRN_TABLE_MAX_KEY_SIZE,
+                                            0, GRN_OBJ_KEY_VAR_SIZE);
+      }
       if (s->keys) {
         CRITICAL_SECTION_INIT(s->lock);
         GRN_DB_OBJ_SET_TYPE(s, GRN_DB);
@@ -131,13 +133,13 @@ grn_db_create(grn_ctx *ctx, const char *path, grn_db_create_optarg *optarg)
           grn_db_init_builtin_types(ctx);
           GRN_API_RETURN((grn_obj *)s);
         }
-#ifdef USE_PAT_AS_DB_KEYS
-        grn_pat_close(ctx, (grn_pat *)s->keys);
-        grn_pat_remove(ctx, path);
-#else /* USE_PAT_AS_DB_KEYS */
-        grn_dat_close(ctx, (grn_dat *)s->keys);
-        grn_dat_remove(ctx, path);
-#endif /* USE_PAT_AS_DB_KEYS */
+        if (use_pat_as_db_keys) {
+          grn_pat_close(ctx, (grn_pat *)s->keys);
+          grn_pat_remove(ctx, path);
+        } else {
+          grn_dat_close(ctx, (grn_dat *)s->keys);
+          grn_dat_remove(ctx, path);
+        }
       }
       grn_tiny_array_fin(&s->values);
       GRN_FREE(s);




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