[Groonga-commit] groonga/groonga [master] name output arrays by column_list. #748

Back to archive index

null+****@clear***** null+****@clear*****
2010年 12月 7日 (火) 18:06:54 JST


Kouhei Sutou	2010-12-07 09:06:54 +0000 (Tue, 07 Dec 2010)

  New Revision: 364725fd4b1bf0e6f53d2b5e4a5cdfebb6a0c39f

  Log:
    name output arrays by column_list. #748

  Modified files:
    lib/proc.c
    test/unit/core/test-command-column-list.c

  Modified: lib/proc.c (+14 -14)
===================================================================
--- lib/proc.c    2010-11-24 01:18:03 +0000 (9a64122)
+++ lib/proc.c    2010-12-07 09:06:54 +0000 (904d1f4)
@@ -775,7 +775,7 @@ print_columninfo(grn_ctx *ctx, grn_obj *column)
   id = grn_obj_id(ctx, column);
   path = grn_obj_path(ctx, column);
   GRN_TEXT_INIT(&o, 0);
-  GRN_OUTPUT_ARRAY_OPEN("", 8);
+  GRN_OUTPUT_ARRAY_OPEN("COLUMN", 8);
   GRN_OUTPUT_INT64(id);
   column2name(ctx, column, &o);
   GRN_OUTPUT_OBJ(&o, NULL);
@@ -791,7 +791,7 @@ print_columninfo(grn_ctx *ctx, grn_obj *column)
     grn_db_obj *obj = (grn_db_obj *)column;
     grn_id *s = obj->source;
     int i = 0, n = obj->source_size / sizeof(grn_id);
-    GRN_OUTPUT_ARRAY_OPEN("", n);
+    GRN_OUTPUT_ARRAY_OPEN("SOURCES", n);
     for (i = 0; i < n; i++, s++) {
       objid2name(ctx, *s, &o);
       GRN_OUTPUT_OBJ(&o, NULL);
@@ -815,37 +815,37 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
     grn_obj *col;
     if ((cols = grn_hash_create(ctx, NULL, sizeof(grn_id), 0,
                                 GRN_OBJ_TABLE_HASH_KEY|GRN_HASH_TINY))) {
-      GRN_OUTPUT_ARRAY_OPEN("", -1);
-      GRN_OUTPUT_ARRAY_OPEN("", 8);
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("COLUMN_LIST", -1);
+      GRN_OUTPUT_ARRAY_OPEN("HEADER", 8);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("id");
       GRN_OUTPUT_CSTR("UInt32");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("name");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("path");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("type");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("flags");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("domain");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("range");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
-      GRN_OUTPUT_ARRAY_OPEN("", 2);
+      GRN_OUTPUT_ARRAY_OPEN("PROPERTY", 2);
       GRN_OUTPUT_CSTR("source");
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
@@ -856,7 +856,7 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
         grn_id id;
         grn_obj buf;
         GRN_TEXT_INIT(&buf, 0);
-        GRN_OUTPUT_ARRAY_OPEN("", 8);
+        GRN_OUTPUT_ARRAY_OPEN("COLUMN", 8);
         id = grn_obj_id(ctx, table);
         GRN_OUTPUT_INT64(id);
         GRN_OUTPUT_CSTR(KEY_NAME);
@@ -868,7 +868,7 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
         GRN_OUTPUT_STR(name_buf, name_len);
         objid2name(ctx, table->header.domain, &buf);
         GRN_OUTPUT_OBJ(&buf, NULL);
-        GRN_OUTPUT_ARRAY_OPEN("", 0);
+        GRN_OUTPUT_ARRAY_OPEN("SOURCES", 0);
         GRN_OUTPUT_ARRAY_CLOSE();
         GRN_OUTPUT_ARRAY_CLOSE();
         GRN_OBJ_FIN(ctx, &buf);

  Modified: test/unit/core/test-command-column-list.c (+67 -0)
===================================================================
--- test/unit/core/test-command-column-list.c    2010-11-24 01:18:03 +0000 (ebe9180)
+++ test/unit/core/test-command-column-list.c    2010-12-07 09:06:54 +0000 (8cbbfad)
@@ -27,6 +27,7 @@
 
 void test_columns(void);
 void test_index_columns(void);
+void test_xml(void);
 
 static gchar *tmp_directory;
 static const gchar *database_path;
@@ -173,3 +174,69 @@ test_index_columns(void)
                       database_path),
       send_command("column_list Terms"));
 }
+
+void
+test_xml(void)
+{
+  assert_send_command("table_create Users TABLE_HASH_KEY ShortText");
+  assert_send_command("column_create Users age COLUMN_SCALAR UInt32");
+  assert_send_command("column_create Users comment COLUMN_SCALAR Text");
+  cut_assert_equal_string(
+      cut_take_printf("<COLUMN_LIST>\n"
+                      "<HEADER>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>id</TEXT>\n"
+                      "<TEXT>UInt32</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>name</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>path</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>type</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>flags</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>domain</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>range</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY>\n"
+                      "<PROPERTY>\n"
+                      "<TEXT>source</TEXT>\n"
+                      "<TEXT>ShortText</TEXT></PROPERTY></HEADER>\n"
+                      "<COLUMN>\n"
+                      "<INT>%u</INT>\n"
+                      "<TEXT>_key</TEXT>\n"
+                      "<TEXT></TEXT>\n"
+                      "<TEXT></TEXT>\n"
+                      "<TEXT>COLUMN_SCALAR</TEXT>\n"
+                      "<TEXT>Users</TEXT>\n"
+                      "<TEXT>ShortText</TEXT>\n"
+                      "<SOURCES></SOURCES></COLUMN>\n"
+                      "<COLUMN>\n"
+                      "<INT>%u</INT>\n"
+                      "<TEXT>comment</TEXT>\n"
+                      "<TEXT>%s.0000102</TEXT>\n"
+                      "<TEXT>var</TEXT>\n"
+                      "<TEXT>COLUMN_SCALAR|PERSISTENT</TEXT>\n"
+                      "<TEXT>Users</TEXT>\n"
+                      "<TEXT>Text</TEXT>\n"
+                      "<SOURCES></SOURCES></COLUMN>\n"
+                      "<COLUMN>\n"
+                      "<INT>%u</INT>\n"
+                      "<TEXT>age</TEXT>\n"
+                      "<TEXT>%s.0000101</TEXT>\n"
+                      "<TEXT>fix</TEXT>\n"
+                      "<TEXT>COLUMN_SCALAR|PERSISTENT</TEXT>\n"
+                      "<TEXT>Users</TEXT>\n"
+                      "<TEXT>UInt32</TEXT>\n"
+                      "<SOURCES></SOURCES></COLUMN></COLUMN_LIST>",
+                      grn_obj_id(context, get("Users")),
+                      grn_obj_id(context, get("Users.comment")), database_path,
+                      grn_obj_id(context, get("Users.age")), database_path),
+      send_command("column_list Users --output_type xml"));
+}




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