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"));
+}