static grn_rc grn_table_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj) { grn_hash *cols; grn_id range_id; grn_obj *range; GRN_TEXT_PUTS(ctx, buf, "#<table:"); grn_table_type_inspect(ctx, buf, obj); GRN_TEXT_PUTS(ctx, buf, " "); grn_inspect_name(ctx, buf, obj); if (obj->header.type != GRN_TABLE_NO_KEY) { grn_obj *domain; grn_id domain_id; GRN_TEXT_PUTS(ctx, buf, " key:"); domain_id = obj->header.domain; domain = grn_ctx_at(ctx, domain_id); if (domain) { grn_inspect_name(ctx, buf, domain); grn_obj_unlink(ctx, domain); } else if (domain_id) { grn_text_lltoa(ctx, buf, domain_id); } else { GRN_TEXT_PUTS(ctx, buf, "(nil)"); } } GRN_TEXT_PUTS(ctx, buf, " value:"); range_id = grn_obj_get_range(ctx, obj); range = grn_ctx_at(ctx, range_id); if (range) { grn_inspect_name(ctx, buf, range); } else if (range_id) { grn_text_lltoa(ctx, buf, range_id); } else { GRN_TEXT_PUTS(ctx, buf, "(nil)"); } GRN_TEXT_PUTS(ctx, buf, " size:"); grn_text_lltoa(ctx, buf, grn_table_size(ctx, obj)); GRN_TEXT_PUTS(ctx, buf, " columns:["); if ((cols = grn_hash_create(ctx, NULL, sizeof(grn_id), 0, GRN_OBJ_TABLE_HASH_KEY|GRN_HASH_TINY))) { if (grn_table_columns(ctx, obj, "", 0, (grn_obj *)cols)) { int i = 0; grn_id *key; GRN_HASH_EACH(ctx, cols, id, &key, NULL, NULL, { grn_obj *col = grn_ctx_at(ctx, *key); if (col) { if (i++ > 0) { GRN_TEXT_PUTS(ctx, buf, ", "); } grn_column_name_(ctx, col, buf); grn_obj_unlink(ctx, col); } }); }
static grn_rc grn_proc_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj) { grn_proc *proc = (grn_proc *)obj; uint32_t i; GRN_TEXT_PUTS(ctx, buf, "#<proc:"); switch (proc->type) { case GRN_PROC_INVALID : GRN_TEXT_PUTS(ctx, buf, "invalid"); GRN_TEXT_PUTS(ctx, buf, ">"); return GRN_SUCCESS; break; case GRN_PROC_TOKENIZER : GRN_TEXT_PUTS(ctx, buf, "tokenizer"); break; case GRN_PROC_COMMAND : GRN_TEXT_PUTS(ctx, buf, "command"); break; case GRN_PROC_FUNCTION : GRN_TEXT_PUTS(ctx, buf, "function"); break; case GRN_PROC_HOOK : GRN_TEXT_PUTS(ctx, buf, "hook"); break; case GRN_PROC_NORMALIZER : GRN_TEXT_PUTS(ctx, buf, "normalizer"); break; case GRN_PROC_TOKEN_FILTER : GRN_TEXT_PUTS(ctx, buf, "token-filter"); break; case GRN_PROC_SCORER : GRN_TEXT_PUTS(ctx, buf, "scorer"); break; case GRN_PROC_WINDOW_FUNCTION : GRN_TEXT_PUTS(ctx, buf, "window-function"); break; } GRN_TEXT_PUTS(ctx, buf, " "); grn_inspect_name(ctx, buf, obj); GRN_TEXT_PUTS(ctx, buf, " "); GRN_TEXT_PUTS(ctx, buf, "arguments:["); for (i = 0; i < proc->nvars; i++) { grn_expr_var *var = proc->vars + i; if (i != 0) { GRN_TEXT_PUTS(ctx, buf, ", "); } GRN_TEXT_PUT(ctx, buf, var->name, var->name_size); } GRN_TEXT_PUTS(ctx, buf, "]"); 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; int i, n, have_flags = 0; grn_id *source_ids; GRN_TEXT_PUTS(ctx, buf, "#<column:index "); grn_column_inspect_common(ctx, buf, obj); GRN_TEXT_INIT(&sources, 0); grn_obj_get_info(ctx, obj, GRN_INFO_SOURCE, &sources); source_ids = (grn_id *)GRN_BULK_HEAD(&sources); n = GRN_BULK_VSIZE(&sources) / sizeof(grn_id); GRN_TEXT_PUTS(ctx, buf, " sources:["); for (i = 0; i < n; i++) { grn_id source_id; grn_obj *source; if (i) { GRN_TEXT_PUTS(ctx, buf, ", "); } source_id = source_ids[i]; source = grn_ctx_at(ctx, source_id); if (source) { grn_inspect_name(ctx, buf, source); } else { grn_text_lltoa(ctx, buf, source_id); } } GRN_TEXT_PUTS(ctx, buf, "]"); GRN_OBJ_FIN(ctx, &sources); GRN_TEXT_PUTS(ctx, buf, " flags:"); if (obj->header.flags & GRN_OBJ_WITH_SECTION) { GRN_TEXT_PUTS(ctx, buf, "SECTION"); have_flags = 1; } if (obj->header.flags & GRN_OBJ_WITH_WEIGHT) { if (have_flags) { GRN_TEXT_PUTS(ctx, buf, "|"); } GRN_TEXT_PUTS(ctx, buf, "WEIGHT"); have_flags = 1; } if (obj->header.flags & GRN_OBJ_WITH_POSITION) { if (have_flags) { GRN_TEXT_PUTS(ctx, buf, "|"); } GRN_TEXT_PUTS(ctx, buf, "POSITION"); have_flags = 1; } if (!have_flags) { GRN_TEXT_PUTS(ctx, buf, "NONE"); } GRN_TEXT_PUTS(ctx, buf, " elements:"); grn_ii_inspect_elements(ctx, (grn_ii *)obj, buf); GRN_TEXT_PUTS(ctx, buf, ">"); return GRN_SUCCESS; }
static grn_rc grn_column_inspect_common(grn_ctx *ctx, grn_obj *buf, grn_obj *obj) { grn_id range_id; grn_inspect_name(ctx, buf, obj); range_id = grn_obj_get_range(ctx, obj); if (range_id) { grn_obj *range = grn_ctx_at(ctx, range_id); GRN_TEXT_PUTS(ctx, buf, " range:"); if (range) { grn_inspect_name(ctx, buf, range); grn_obj_unlink(ctx, range); } else { grn_text_lltoa(ctx, buf, range_id); } } return GRN_SUCCESS; }
static grn_obj * command_tag_synonym_delete(grn_ctx *ctx, GNUC_UNUSED int nargs, GNUC_UNUSED grn_obj **args, grn_user_data *user_data) { grn_obj *var, *table, *column; unsigned int nhooks = 0; char *table_name = NULL; unsigned int table_len = 0; char *column_name = NULL; unsigned int column_len = 0; var = grn_plugin_proc_get_var(ctx, user_data, "table", -1); if (GRN_TEXT_LEN(var) != 0) { table_name = GRN_TEXT_VALUE(var); table_len = GRN_TEXT_LEN(var); } var = grn_plugin_proc_get_var(ctx, user_data, "column", -1); if (GRN_TEXT_LEN(var) != 0) { column_name = GRN_TEXT_VALUE(var); column_len = GRN_TEXT_LEN(var); } table = grn_ctx_get(ctx, table_name, table_len); column = grn_obj_column(ctx, table, column_name, column_len); nhooks = grn_obj_get_nhooks(ctx, column, GRN_HOOK_SET); if (nhooks) { grn_obj *hook; unsigned int i; grn_obj data; grn_obj buf; GRN_TEXT_INIT(&buf, 0); GRN_TEXT_INIT(&data, 0); for (i=0; i < nhooks; i++) { GRN_BULK_REWIND(&buf); GRN_BULK_REWIND(&data); hook = grn_obj_get_hook(ctx, column, GRN_HOOK_SET, i, &data); grn_inspect_name(ctx, &buf, hook); if (GRN_TEXT_LEN(&buf) == strlen("tag_synonym") && strncmp(GRN_TEXT_VALUE(&buf), "tag_synonym", GRN_TEXT_LEN(&buf)) == 0) { grn_obj_delete_hook(ctx, column, GRN_HOOK_SET, i); break; } } grn_obj_unlink(ctx, &data); grn_obj_unlink(ctx, &buf); } nhooks = grn_obj_get_nhooks(ctx, column, GRN_HOOK_SET); //grn_ctx_output_array_open(ctx, "RESULT", 1); grn_ctx_output_int32(ctx, nhooks); //grn_ctx_output_array_close(ctx); return NULL; }
static grn_rc grn_table_key_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj) { grn_obj *domain; grn_id domain_id; GRN_TEXT_PUTS(ctx, buf, "key:"); domain_id = obj->header.domain; domain = grn_ctx_at(ctx, domain_id); if (domain) { grn_inspect_name(ctx, buf, domain); grn_obj_unlink(ctx, domain); } else if (domain_id) { grn_text_lltoa(ctx, buf, domain_id); } else { GRN_TEXT_PUTS(ctx, buf, "(nil)"); } return GRN_SUCCESS; }
static grn_rc grn_type_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *obj) { grn_id range_id; GRN_TEXT_PUTS(ctx, buf, "#<type "); grn_inspect_name(ctx, buf, obj); range_id = grn_obj_get_range(ctx, obj); GRN_TEXT_PUTS(ctx, buf, " size:"); grn_text_lltoa(ctx, buf, range_id); GRN_TEXT_PUTS(ctx, buf, " type:"); if (obj->header.flags & GRN_OBJ_KEY_VAR_SIZE) { GRN_TEXT_PUTS(ctx, buf, "var_size"); } else { switch (obj->header.flags & GRN_OBJ_KEY_MASK) { case GRN_OBJ_KEY_UINT : GRN_TEXT_PUTS(ctx, buf, "uint"); break; case GRN_OBJ_KEY_INT : GRN_TEXT_PUTS(ctx, buf, "int"); break; case GRN_OBJ_KEY_FLOAT : GRN_TEXT_PUTS(ctx, buf, "float"); break; case GRN_OBJ_KEY_GEO_POINT : GRN_TEXT_PUTS(ctx, buf, "geo_point"); break; default : break; } } GRN_TEXT_PUTS(ctx, buf, ">"); return GRN_SUCCESS; }