Navigation Menu

Skip to content

Commit

Permalink
schema: support array table
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 19, 2015
1 parent bc99e35 commit 6b25f0e
Show file tree
Hide file tree
Showing 3 changed files with 200 additions and 1 deletion.
39 changes: 38 additions & 1 deletion lib/proc.c
Expand Up @@ -7431,15 +7431,52 @@ proc_schema_normalizers(grn_ctx *ctx)
GRN_OBJ_FIN(ctx, &normalizers);
}

static void
proc_schema_tables(grn_ctx *ctx)
{
grn_obj tables;
unsigned int i, n;

GRN_PTR_INIT(&tables, GRN_OBJ_VECTOR, GRN_DB_OBJECT);

grn_ctx_get_all_tables(ctx, &tables);

GRN_OUTPUT_CSTR("tables");

n = GRN_BULK_VSIZE(&tables) / sizeof(grn_obj *);
GRN_OUTPUT_MAP_OPEN("tables", n);
for (i = 0; i < n; i++) {
grn_obj *table;
char name[GRN_TABLE_MAX_KEY_SIZE];
unsigned int name_size;

table = GRN_PTR_VALUE_AT(&tables, i);

name_size = grn_obj_name(ctx, table, name, GRN_TABLE_MAX_KEY_SIZE);
GRN_OUTPUT_STR(name, name_size);

GRN_OUTPUT_MAP_OPEN("table", 1);
{
GRN_OUTPUT_CSTR("name");
GRN_OUTPUT_STR(name, name_size);
}
GRN_OUTPUT_MAP_CLOSE();
}
GRN_OUTPUT_MAP_CLOSE();

GRN_OBJ_FIN(ctx, &tables);
}

static grn_obj *
proc_schema(grn_ctx *ctx, int nargs, grn_obj **args,
grn_user_data *user_data)
{
GRN_OUTPUT_MAP_OPEN("schema", 3);
GRN_OUTPUT_MAP_OPEN("schema", 5);
proc_schema_plugins(ctx);
proc_schema_types(ctx);
proc_schema_tokenizers(ctx);
proc_schema_normalizers(ctx);
proc_schema_tables(ctx);
GRN_OUTPUT_MAP_CLOSE();

return NULL;
Expand Down
159 changes: 159 additions & 0 deletions test/command/suite/schema/array.expected
@@ -0,0 +1,159 @@
table_create Logs TABLE_NO_KEY
[[0,0.0,0.0],true]
schema
[
[
0,
0.0,
0.0
],
{
"plugins": [

],
"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
}
],
"tokenizers": [
{
"name": "TokenBigram"
},
{
"name": "TokenBigramIgnoreBlank"
},
{
"name": "TokenBigramIgnoreBlankSplitSymbol"
},
{
"name": "TokenBigramIgnoreBlankSplitSymbolAlpha"
},
{
"name": "TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
},
{
"name": "TokenBigramSplitSymbol"
},
{
"name": "TokenBigramSplitSymbolAlpha"
},
{
"name": "TokenBigramSplitSymbolAlphaDigit"
},
{
"name": "TokenDelimit"
},
{
"name": "TokenDelimitNull"
},
{
"name": "TokenMecab"
},
{
"name": "TokenRegexp"
},
{
"name": "TokenTrigram"
},
{
"name": "TokenUnigram"
}
],
"normalizers": [
{
"name": "NormalizerAuto"
},
{
"name": "NormalizerNFKC51"
}
],
"tables": {
"Logs": {
"name": "Logs"
}
}
}
]
3 changes: 3 additions & 0 deletions test/command/suite/schema/array.test
@@ -0,0 +1,3 @@
table_create Logs TABLE_NO_KEY

schema

0 comments on commit 6b25f0e

Please sign in to comment.