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);