null+****@clear*****
null+****@clear*****
2012年 2月 10日 (金) 16:38:00 JST
Kouhei Sutou 2012-02-10 16:38:00 +0900 (Fri, 10 Feb 2012)
New Revision: 686bd45bce6fec75be4d71426d19c091e04e7f23
Log:
[dump] supported --normalizer.
Modified files:
lib/dat.cpp
lib/db.c
lib/hash.c
lib/pat.c
lib/proc.c
test/unit/core/test-command-dump.c
Modified: lib/dat.cpp (+2 -2)
===================================================================
--- lib/dat.cpp 2012-02-10 16:05:01 +0900 (e98f033)
+++ lib/dat.cpp 2012-02-10 16:38:00 +0900 (12ff71b)
@@ -1,5 +1,5 @@
/* -*- c-basic-offset: 2 -*- */
-/* Copyright(C) 2011 Brazil
+/* Copyright(C) 2011-2012 Brazil
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -290,7 +290,6 @@ grn_dat_create(grn_ctx *ctx, const char *path, uint32_t,
return NULL;
}
grn_dat_init(ctx, dat);
- dat->obj.header.flags = flags;
dat->io = grn_io_create(ctx, path, sizeof(struct grn_dat_header),
4096, 0, grn_io_auto, GRN_IO_EXPIRE_SEGMENT);
@@ -323,6 +322,7 @@ grn_dat_create(grn_ctx *ctx, const char *path, uint32_t,
}
dat->encoding = encoding;
dat->tokenizer = NULL;
+ dat->obj.header.flags = dat->header->flags;
return dat;
}
Modified: lib/db.c (+0 -1)
===================================================================
--- lib/db.c 2012-02-10 16:05:01 +0900 (30c10fa)
+++ lib/db.c 2012-02-10 16:38:00 +0900 (d9eb95c)
@@ -885,7 +885,6 @@ grn_table_create(grn_ctx *ctx, const char *name, unsigned int name_size,
break;
}
if (res) {
- DB_OBJ(res)->header.flags = flags;
DB_OBJ(res)->header.impl_flags = 0;
DB_OBJ(res)->header.domain = domain;
DB_OBJ(res)->range = range;
Modified: lib/hash.c (+2 -2)
===================================================================
--- lib/hash.c 2012-02-10 16:05:01 +0900 (9a5455a)
+++ lib/hash.c 2012-02-10 16:38:00 +0900 (652bde2)
@@ -877,7 +877,7 @@ io_hash_init(grn_hash *ih, grn_ctx *ctx, const char *path, uint32_t key_size,
header->normalizer = GRN_ID_NIL;
ih->normalizer = NULL;
}
- ih->obj.header.flags = flags;
+ ih->obj.header.flags = header->flags;
ih->ctx = ctx;
ih->key_size = key_size;
ih->encoding = encoding;
@@ -978,7 +978,6 @@ grn_hash_open(grn_ctx *ctx, const char *path)
if (hash) {
if (!(header->flags & GRN_HASH_TINY)) {
GRN_DB_OBJ_SET_TYPE(hash, GRN_TABLE_HASH_KEY);
- hash->obj.header.flags = header->flags;
hash->ctx = ctx;
hash->key_size = header->key_size;
hash->encoding = header->encoding;
@@ -996,6 +995,7 @@ grn_hash_open(grn_ctx *ctx, const char *path)
header->normalizer = grn_normalizer_find(ctx, ctx->encoding);
}
hash->normalizer = grn_ctx_at(ctx, header->normalizer);
+ hash->obj.header.flags = header->flags;
return (grn_hash *)hash;
} else {
GRN_LOG(ctx, GRN_LOG_NOTICE, "invalid hash flag. (%x)", header->flags);
Modified: lib/pat.c (+2 -2)
===================================================================
--- lib/pat.c 2012-02-10 16:05:01 +0900 (7b09cd8)
+++ lib/pat.c 2012-02-10 16:38:00 +0900 (1d6ada4)
@@ -437,7 +437,7 @@ _grn_pat_create(grn_ctx *ctx, grn_pat *pat,
pat->value_size = value_size;
pat->tokenizer = NULL;
pat->encoding = encoding;
- pat->obj.header.flags = flags;
+ pat->obj.header.flags = header->flags;
if (!(node0 = pat_get(ctx, pat, 0))) {
grn_io_close(ctx, io);
return NULL;
@@ -525,13 +525,13 @@ grn_pat_open(grn_ctx *ctx, const char *path)
pat->key_size = header->key_size;
pat->value_size = header->value_size;
pat->encoding = header->encoding;
- pat->obj.header.flags = header->flags;
pat->tokenizer = grn_ctx_at(ctx, header->tokenizer);
if (header->flags & GRN_OBJ_KEY_NORMALIZE) {
header->flags &= ~GRN_OBJ_KEY_NORMALIZE;
header->normalizer = grn_normalizer_find(ctx, ctx->encoding);
}
pat->normalizer = grn_ctx_at(ctx, header->normalizer);
+ pat->obj.header.flags = header->flags;
PAT_AT(pat, 0, node0);
if (!node0) {
grn_io_close(ctx, io);
Modified: lib/proc.c (+6 -1)
===================================================================
--- lib/proc.c 2012-02-10 16:05:01 +0900 (f5fa56e)
+++ lib/proc.c 2012-02-10 16:38:00 +0900 (2661d6c)
@@ -2319,7 +2319,7 @@ dump_table(grn_ctx *ctx, grn_obj *outbuf, grn_obj *table,
{
grn_obj *domain = NULL, *range = NULL;
grn_obj_flags default_flags = GRN_OBJ_PERSISTENT;
- grn_obj *default_tokenizer;
+ grn_obj *default_tokenizer, *normalizer;
grn_obj buf;
switch (table->header.type) {
@@ -2366,6 +2366,11 @@ dump_table(grn_ctx *ctx, grn_obj *outbuf, grn_obj *table,
GRN_TEXT_PUTS(ctx, outbuf, " --default_tokenizer ");
dump_obj_name(ctx, outbuf, default_tokenizer);
}
+ normalizer = grn_obj_get_info(ctx, table, GRN_INFO_NORMALIZER, NULL);
+ if (normalizer) {
+ GRN_TEXT_PUTS(ctx, outbuf, " --normalizer ");
+ dump_obj_name(ctx, outbuf, normalizer);
+ }
GRN_TEXT_PUTC(ctx, outbuf, '\n');
Modified: test/unit/core/test-command-dump.c (+44 -2)
===================================================================
--- test/unit/core/test-command-dump.c 2012-02-10 16:05:01 +0900 (8939236)
+++ test/unit/core/test-command-dump.c 2012-02-10 16:38:00 +0900 (9d2a2b4)
@@ -159,13 +159,15 @@ data_hash_table_create(void)
NULL,
NULL);
ADD_DATA("hash - key normalize",
- "table_create Blog TABLE_HASH_KEY|KEY_NORMALIZE ShortText",
+ "table_create Blog TABLE_HASH_KEY ShortText "
+ "--normalizer NormalizerUTF8NFKC",
"Blog",
GRN_OBJ_TABLE_HASH_KEY | GRN_OBJ_KEY_NORMALIZE,
"ShortText",
NULL);
ADD_DATA("hash - key normalize - value",
- "table_create Blog TABLE_HASH_KEY|KEY_NORMALIZE ShortText Int32",
+ "table_create Blog TABLE_HASH_KEY ShortText Int32 "
+ "--normalizer NormalizerUTF8NFKC",
"Blog",
GRN_OBJ_TABLE_HASH_KEY | GRN_OBJ_KEY_NORMALIZE,
"ShortText",
@@ -181,6 +183,26 @@ data_patricia_trie_create(void)
GRN_OBJ_TABLE_PAT_KEY,
"ShortText",
NULL);
+ ADD_DATA("patricia trie - without key",
+ "table_create Blog TABLE_PAT_KEY",
+ "Blog",
+ GRN_OBJ_TABLE_PAT_KEY,
+ NULL,
+ NULL);
+ ADD_DATA("patricia trie - key normalize",
+ "table_create Blog TABLE_PAT_KEY ShortText "
+ "--normalizer NormalizerUTF8NFKC",
+ "Blog",
+ GRN_OBJ_TABLE_PAT_KEY | GRN_OBJ_KEY_NORMALIZE,
+ "ShortText",
+ NULL);
+ ADD_DATA("patricia trie - key normalize - value",
+ "table_create Blog TABLE_PAT_KEY ShortText Int32 "
+ "--normalizer NormalizerUTF8NFKC",
+ "Blog",
+ GRN_OBJ_TABLE_PAT_KEY | GRN_OBJ_KEY_NORMALIZE,
+ "ShortText",
+ "Int32");
}
static void
@@ -192,6 +214,26 @@ data_double_array_trie_create(void)
GRN_OBJ_TABLE_DAT_KEY,
"ShortText",
NULL);
+ ADD_DATA("double-array trie - without key",
+ "table_create Blog TABLE_DAT_KEY",
+ "Blog",
+ GRN_OBJ_TABLE_DAT_KEY,
+ NULL,
+ NULL);
+ ADD_DATA("double-array trie - key normalize",
+ "table_create Blog TABLE_DAT_KEY ShortText "
+ "--normalizer NormalizerUTF8NFKC",
+ "Blog",
+ GRN_OBJ_TABLE_DAT_KEY | GRN_OBJ_KEY_NORMALIZE,
+ "ShortText",
+ NULL);
+ ADD_DATA("double-array trie - key normalize - value",
+ "table_create Blog TABLE_DAT_KEY ShortText Int32 "
+ "--normalizer NormalizerUTF8NFKC",
+ "Blog",
+ GRN_OBJ_TABLE_DAT_KEY | GRN_OBJ_KEY_NORMALIZE,
+ "ShortText",
+ "Int32");
}
static void