Kouhei Sutou
null+****@clear*****
Mon Feb 23 22:04:26 JST 2015
Kouhei Sutou 2015-02-23 22:04:26 +0900 (Mon, 23 Feb 2015) New Revision: 928956628dc1e85fa60a64fed1851064cdd645d4 https://github.com/groonga/groonga/commit/928956628dc1e85fa60a64fed1851064cdd645d4 Message: Add GRN_CONTENT_GROOGNA_COMMAND_LIST for dump command Modified files: include/groonga/groonga.h lib/ctx.c lib/db.c lib/output.c src/groonga.c src/httpd/nginx-module/ngx_http_groonga_module.c Modified: include/groonga/groonga.h (+2 -1) =================================================================== --- include/groonga/groonga.h 2015-02-23 22:03:04 +0900 (48fb97e) +++ include/groonga/groonga.h 2015-02-23 22:04:26 +0900 (9cb13e7) @@ -182,7 +182,8 @@ typedef enum { GRN_CONTENT_TSV, GRN_CONTENT_JSON, GRN_CONTENT_XML, - GRN_CONTENT_MSGPACK + GRN_CONTENT_MSGPACK, + GRN_CONTENT_GROONGA_COMMAND_LIST } grn_content_type; typedef struct _grn_obj grn_obj; Modified: lib/ctx.c (+3 -0) =================================================================== --- lib/ctx.c 2015-02-23 22:03:04 +0900 (e8a0c93) +++ lib/ctx.c 2015-02-23 22:04:26 +0900 (27b27e0) @@ -1527,6 +1527,9 @@ grn_ctx_set_output_type(grn_ctx *ctx, grn_content_type type) case GRN_CONTENT_MSGPACK : ctx->impl->mime_type = "application/x-msgpack"; break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + ctx->impl->mime_type = "text/x-groonga-command-list"; + break; } } else { rc = GRN_INVALID_ARGUMENT; Modified: lib/db.c (+1 -0) =================================================================== --- lib/db.c 2015-02-23 22:03:04 +0900 (681d0d9) +++ lib/db.c 2015-02-23 22:04:26 +0900 (b420823) @@ -12075,6 +12075,7 @@ grn_load_(grn_ctx *ctx, grn_content_type input_type, case GRN_CONTENT_TSV : case GRN_CONTENT_XML : case GRN_CONTENT_MSGPACK : + case GRN_CONTENT_GROONGA_COMMAND_LIST : ERR(GRN_FUNCTION_NOT_IMPLEMENTED, "unsupported input_type"); // todo break; Modified: lib/output.c (+46 -0) =================================================================== --- lib/output.c 2015-02-23 22:03:04 +0900 (20bd2a8) +++ lib/output.c 2015-02-23 22:04:26 +0900 (aa1ae59) @@ -54,6 +54,8 @@ put_delimiter(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type) case GRN_CONTENT_MSGPACK : // do nothing break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } @@ -88,6 +90,8 @@ grn_output_array_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_typ msgpack_pack_array(&ctx->impl->msgpacker, nelements); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } @@ -119,6 +123,8 @@ grn_output_array_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_ty case GRN_CONTENT_MSGPACK : // do nothing break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } @@ -155,6 +161,8 @@ grn_output_map_open(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, msgpack_pack_map(&ctx->impl->msgpacker, nelements); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } @@ -186,6 +194,8 @@ grn_output_map_close(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type case GRN_CONTENT_MSGPACK : // do nothing break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } @@ -214,6 +224,9 @@ grn_output_int32(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, in msgpack_pack_int32(&ctx->impl->msgpacker, value); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + grn_text_itoa(ctx, outbuf, value); + break; case GRN_CONTENT_NONE: break; } @@ -241,6 +254,9 @@ grn_output_int64(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, in msgpack_pack_int64(&ctx->impl->msgpacker, value); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + grn_text_lltoa(ctx, outbuf, value); + break; case GRN_CONTENT_NONE: break; } @@ -268,6 +284,9 @@ grn_output_uint64(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, i msgpack_pack_uint64(&ctx->impl->msgpacker, value); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + grn_text_ulltoa(ctx, outbuf, value); + break; case GRN_CONTENT_NONE: break; } @@ -295,6 +314,9 @@ grn_output_float(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, do msgpack_pack_double(&ctx->impl->msgpacker, value); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + grn_text_ftoa(ctx, outbuf, value); + break; case GRN_CONTENT_NONE: break; } @@ -324,6 +346,9 @@ grn_output_str(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, msgpack_pack_raw_body(&ctx->impl->msgpacker, value, value_len); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + GRN_TEXT_PUT(ctx, outbuf, value, value_len); + break; case GRN_CONTENT_NONE: break; } @@ -362,6 +387,9 @@ grn_output_bool(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, grn } #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + GRN_TEXT_PUTS(ctx, outbuf, value ? "true" : "false"); + break; case GRN_CONTENT_NONE: break; } @@ -386,6 +414,8 @@ grn_output_null(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type) msgpack_pack_nil(&ctx->impl->msgpacker); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } @@ -426,6 +456,9 @@ grn_output_time(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type, int msgpack_pack_double(&ctx->impl->msgpacker, dv); #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + grn_text_ftoa(ctx, outbuf, dv); + break; case GRN_CONTENT_NONE: break; } @@ -487,6 +520,17 @@ grn_output_geo_point(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type } #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + if (value) { + GRN_TEXT_PUTC(ctx, outbuf, '"'); + grn_text_itoa(ctx, outbuf, value->latitude); + GRN_TEXT_PUTC(ctx, outbuf, 'x'); + grn_text_itoa(ctx, outbuf, value->longitude); + GRN_TEXT_PUTC(ctx, outbuf, '"'); + } else { + GRN_TEXT_PUTS(ctx, outbuf, "\"\""); + } + break; case GRN_CONTENT_NONE: break; } @@ -2023,6 +2067,8 @@ grn_output_envelope(grn_ctx *ctx, } #endif break; + case GRN_CONTENT_GROONGA_COMMAND_LIST : + break; case GRN_CONTENT_NONE: break; } Modified: src/groonga.c (+11 -4) =================================================================== --- src/groonga.c 2015-02-23 22:03:04 +0900 (b03e70e) +++ src/groonga.c 2015-02-23 22:04:26 +0900 (db050a9) @@ -341,10 +341,13 @@ s_output(grn_ctx *ctx, int flags, void *arg) { FILE *stream = (FILE *)arg; - if (grn_ctx_get_output_type(ctx) == GRN_CONTENT_NONE) { + switch (grn_ctx_get_output_type(ctx)) { + case GRN_CONTENT_GROONGA_COMMAND_LIST : + case GRN_CONTENT_NONE : s_output_raw(ctx, flags, stream); - } else { + default : s_output_typed(ctx, flags, stream); + break; } } @@ -936,10 +939,14 @@ h_output(grn_ctx *ctx, int flags, void *arg) { ht_context *hc = (ht_context *)arg; - if (grn_ctx_get_output_type(ctx) == GRN_CONTENT_NONE) { + switch (grn_ctx_get_output_type(ctx)) { + case GRN_CONTENT_GROONGA_COMMAND_LIST : + case GRN_CONTENT_NONE : h_output_raw(ctx, flags, hc); - } else { + break; + default : h_output_typed(ctx, flags, hc); + break; } } Modified: src/httpd/nginx-module/ngx_http_groonga_module.c (+6 -2) =================================================================== --- src/httpd/nginx-module/ngx_http_groonga_module.c 2015-02-23 22:03:04 +0900 (115de13) +++ src/httpd/nginx-module/ngx_http_groonga_module.c 2015-02-23 22:04:26 +0900 (a19045c) @@ -568,10 +568,14 @@ ngx_http_groonga_context_receive_handler(grn_ctx *context, { ngx_http_groonga_handler_data_t *data = callback_data; - if (grn_ctx_get_output_type(context) == GRN_CONTENT_NONE) { + switch (grn_ctx_get_output_type(context)) { + case GRN_CONTENT_GROONGA_COMMAND_LIST : + case GRN_CONTENT_NONE : ngx_http_groonga_context_receive_handler_raw(context, flags, data); - } else { + break; + default : ngx_http_groonga_context_receive_handler_typed(context, flags, data); + break; } } -------------- next part -------------- HTML����������������������������...Download