null+****@clear*****
null+****@clear*****
2010年 7月 8日 (木) 13:10:34 JST
Kouhei Sutou 2010-07-08 04:10:34 +0000 (Thu, 08 Jul 2010)
New Revision: 69f798d635bf4d9fdd0554f365124681a4a4632c
Log:
add inspector for var_size column.
Modified files:
lib/util.c
test/unit/core/test-inspect.c
Modified: lib/util.c (+62 -0)
===================================================================
--- lib/util.c 2010-07-08 01:58:28 +0000 (39590f9)
+++ lib/util.c 2010-07-08 04:10:34 +0000 (953b4f8)
@@ -69,6 +69,65 @@ grn_accessor_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
}
static grn_rc
+grn_ja_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
+{
+ int name_size;
+ grn_id range_id;
+
+ GRN_TEXT_PUTS(ctx, buf, "#<column:var_size ");
+ name_size = grn_obj_name(ctx, obj, NULL, 0);
+ if (name_size) {
+ grn_bulk_space(ctx, buf, name_size);
+ grn_obj_name(ctx, obj, GRN_BULK_CURR(buf) - name_size, name_size);
+ }
+
+ range_id = grn_obj_get_range(ctx, obj);
+ if (range_id) {
+ grn_obj *range = grn_ctx_at(ctx, range_id);
+ if (range) {
+ GRN_TEXT_PUTS(ctx, buf, " range:");
+ name_size = grn_obj_name(ctx, range, NULL, 0);
+ if (name_size) {
+ grn_bulk_space(ctx, buf, name_size);
+ grn_obj_name(ctx, range, GRN_BULK_CURR(buf) - name_size, name_size);
+ }
+ grn_obj_unlink(ctx, range);
+ }
+ }
+
+ GRN_TEXT_PUTS(ctx, buf, " type:");
+ switch (obj->header.flags & GRN_OBJ_COLUMN_TYPE_MASK) {
+ case GRN_OBJ_COLUMN_VECTOR :
+ GRN_TEXT_PUTS(ctx, buf, "vector");
+ break;
+ case GRN_OBJ_COLUMN_SCALAR :
+ GRN_TEXT_PUTS(ctx, buf, "scalar");
+ break;
+ default:
+ break;
+ }
+
+ GRN_TEXT_PUTS(ctx, buf, " compress:");
+ switch (obj->header.flags & GRN_OBJ_COMPRESS_MASK) {
+ case GRN_OBJ_COMPRESS_NONE :
+ GRN_TEXT_PUTS(ctx, buf, "none");
+ break;
+ case GRN_OBJ_COMPRESS_ZLIB :
+ GRN_TEXT_PUTS(ctx, buf, "zlib");
+ break;
+ case GRN_OBJ_COMPRESS_LZO :
+ GRN_TEXT_PUTS(ctx, buf, "lzo");
+ break;
+ default:
+ break;
+ }
+
+ GRN_TEXT_PUTS(ctx, buf, ">");
+
+ return GRN_SUCCESS;
+}
+
+static grn_rc
grn_ii_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj)
{
grn_obj sources;
@@ -164,6 +223,9 @@ grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj)
case GRN_ACCESSOR_VIEW :
grn_accessor_inspect(ctx, buffer, obj);
return buffer;
+ case GRN_COLUMN_VAR_SIZE :
+ grn_ja_inspect(ctx, buffer, obj);
+ break;
case GRN_COLUMN_INDEX :
grn_ii_inspect(ctx, buffer, obj);
default:
Modified: test/unit/core/test-inspect.c (+20 -0)
===================================================================
--- test/unit/core/test-inspect.c 2010-07-08 01:58:28 +0000 (4b1a916)
+++ test/unit/core/test-inspect.c 2010-07-08 04:10:34 +0000 (7afc77f)
@@ -59,6 +59,7 @@ void data_accessor_column_name(void);
void test_accessor_column_name(gconstpointer data);
void data_accessor_dynamic_pseudo_column_name(void);
void test_accessor_dynamic_pseudo_column_name(gconstpointer data);
+void test_column_var_size(void);
void test_column_index(void);
static gchar *tmp_directory;
@@ -580,6 +581,25 @@ test_accessor_dynamic_pseudo_column_name(gconstpointer data)
}
void
+test_column_var_size(void)
+{
+ grn_obj *column;
+
+ assert_send_command("table_create Sites TABLE_PAT_KEY ShortText");
+ assert_send_command("column_create Sites name COLUMN_SCALAR ShortText");
+
+ column = get_object("Sites.name");
+ inspected = grn_inspect(context, NULL, column);
+ cut_assert_equal_string("#<column:var_size "
+ "Sites.name "
+ "range:ShortText "
+ "type:scalar "
+ "compress:none"
+ ">",
+ inspected_string());
+}
+
+void
test_column_index(void)
{
grn_obj *column;