[Groonga-commit] groonga/groonga [master] add inspector for var_size column.

Back to archive index

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;




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