Navigation Menu

Skip to content

Commit

Permalink
schema: support types
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 19, 2015
1 parent d895f22 commit 4768c70
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 4 deletions.
51 changes: 48 additions & 3 deletions lib/proc.c
Expand Up @@ -7305,26 +7305,71 @@ proc_schema_plugins(grn_ctx *ctx)
GRN_OUTPUT_CSTR("plugins");

n = grn_vector_size(ctx, &plugin_names);
GRN_OUTPUT_MAP_OPEN("plugin", n);
GRN_OUTPUT_ARRAY_OPEN("plugins", n);
for (i = 0; i < n; i++) {
const char *name;
unsigned int name_size;

GRN_OUTPUT_MAP_OPEN("plugin", 1);
name_size = grn_vector_get_element(ctx, &plugin_names, i, &name, NULL, NULL);
GRN_OUTPUT_CSTR("name");
GRN_OUTPUT_STR(name, name_size);
GRN_OUTPUT_MAP_CLOSE();
}
GRN_OUTPUT_MAP_CLOSE();
GRN_OUTPUT_ARRAY_CLOSE();

GRN_OBJ_FIN(ctx, &plugin_names);
}

static void
proc_schema_types(grn_ctx *ctx)
{
grn_obj types;
unsigned int i, n;

GRN_PTR_INIT(&types, GRN_OBJ_VECTOR, GRN_DB_OBJECT);

grn_ctx_get_all_types(ctx, &types);

GRN_OUTPUT_CSTR("types");

n = GRN_BULK_VSIZE(&types) / sizeof(grn_obj *);
GRN_OUTPUT_ARRAY_OPEN("types", n - 1);
for (i = 0; i < n; i++) {
grn_obj *type;

type = GRN_PTR_VALUE_AT(&types, i);

GRN_OUTPUT_MAP_OPEN("type", 3);
{
char name[GRN_TABLE_MAX_KEY_SIZE];
unsigned int name_size;
name_size = grn_obj_name(ctx, type, name, GRN_TABLE_MAX_KEY_SIZE);
GRN_OUTPUT_CSTR("name");
GRN_OUTPUT_STR(name, name_size);
}
{
GRN_OUTPUT_CSTR("size");
GRN_OUTPUT_INT64(GRN_TYPE_SIZE(DB_OBJ(type)));
}
{
GRN_OUTPUT_CSTR("can_be_key_type");
GRN_OUTPUT_BOOL(GRN_TYPE_SIZE(DB_OBJ(type)) <= GRN_TABLE_MAX_KEY_SIZE);
}
GRN_OUTPUT_MAP_CLOSE();
}
GRN_OUTPUT_ARRAY_CLOSE();

GRN_OBJ_FIN(ctx, &types);
}

static grn_obj *
proc_schema(grn_ctx *ctx, int nargs, grn_obj **args,
grn_user_data *user_data)
{
GRN_OUTPUT_MAP_OPEN("schema", 1);
GRN_OUTPUT_MAP_OPEN("schema", 2);
proc_schema_plugins(ctx);
proc_schema_types(ctx);
GRN_OUTPUT_MAP_CLOSE();

return NULL;
Expand Down
102 changes: 101 additions & 1 deletion test/command/suite/schema/plugins.expected
@@ -1,4 +1,104 @@
plugin_register query_expanders/tsv
[[0,0.0,0.0],true]
schema
[[0,0.0,0.0],{"plugins":{"name":"query_expanders/tsv"}}]
[
[
0,
0.0,
0.0
],
{
"plugins": [
{
"name": "query_expanders/tsv"
}
],
"types": [
{
"name": "Bool",
"size": 1,
"can_be_key_type": true
},
{
"name": "Float",
"size": 8,
"can_be_key_type": true
},
{
"name": "Int16",
"size": 2,
"can_be_key_type": true
},
{
"name": "Int32",
"size": 4,
"can_be_key_type": true
},
{
"name": "Int64",
"size": 8,
"can_be_key_type": true
},
{
"name": "Int8",
"size": 1,
"can_be_key_type": true
},
{
"name": "LongText",
"size": 2147483648,
"can_be_key_type": false
},
{
"name": "Object",
"size": 8,
"can_be_key_type": true
},
{
"name": "ShortText",
"size": 4096,
"can_be_key_type": true
},
{
"name": "Text",
"size": 65536,
"can_be_key_type": false
},
{
"name": "Time",
"size": 8,
"can_be_key_type": true
},
{
"name": "TokyoGeoPoint",
"size": 8,
"can_be_key_type": true
},
{
"name": "UInt16",
"size": 2,
"can_be_key_type": true
},
{
"name": "UInt32",
"size": 4,
"can_be_key_type": true
},
{
"name": "UInt64",
"size": 8,
"can_be_key_type": true
},
{
"name": "UInt8",
"size": 1,
"can_be_key_type": true
},
{
"name": "WGS84GeoPoint",
"size": 8,
"can_be_key_type": true
}
]
}
]
File renamed without changes.

0 comments on commit 4768c70

Please sign in to comment.