Kouhei Sutou
null+****@clear*****
Thu May 9 11:33:26 JST 2013
Kouhei Sutou 2013-05-09 11:33:26 +0900 (Thu, 09 May 2013) New Revision: 364ef7ed751776495915bc167862fb9b0a133f76 https://github.com/groonga/groonga/commit/364ef7ed751776495915bc167862fb9b0a133f76 Message: Extract a code for setting a no key table value Modified files: lib/db.c Modified: lib/db.c (+28 -14) =================================================================== --- lib/db.c 2013-05-09 11:31:08 +0900 (f0a3587) +++ lib/db.c 2013-05-09 11:33:26 +0900 (981708f) @@ -5096,6 +5096,33 @@ call_hook_for_build(grn_ctx *ctx, grn_obj *obj, grn_id id, grn_obj *value, int f } static grn_rc +grn_obj_set_value_table_no_key(grn_ctx *ctx, grn_obj *obj, grn_id id, + grn_obj *value, int flags) +{ + grn_rc rc = GRN_INVALID_ARGUMENT; + grn_id range = DB_OBJ(obj)->range; + void *v = GRN_BULK_HEAD(value); + grn_obj buf; + + if (call_hook(ctx, obj, id, value, flags)) { + return rc; + } + + if (range != value->header.domain) { + GRN_OBJ_INIT(&buf, GRN_BULK, 0, range); + if (grn_obj_cast(ctx, value, &buf, GRN_TRUE) == GRN_SUCCESS) { + v = GRN_BULK_HEAD(&buf); + } + } + rc = grn_array_set_value(ctx, (grn_array *)obj, id, v, flags); + if (range != value->header.domain) { + grn_obj_close(ctx, &buf); + } + + return rc; +} + +static grn_rc grn_obj_set_value_column_var_size_scalar(grn_ctx *ctx, grn_obj *obj, grn_id id, grn_obj *value, int flags) { @@ -5382,20 +5409,7 @@ grn_obj_set_value(grn_ctx *ctx, grn_obj *obj, grn_id id, } break; case GRN_TABLE_NO_KEY : - { - grn_obj buf; - if (call_hook(ctx, obj, id, value, flags)) { goto exit; } - if (range != value->header.domain) { - GRN_OBJ_INIT(&buf, GRN_BULK, 0, range); - if (grn_obj_cast(ctx, value, &buf, GRN_TRUE) == GRN_SUCCESS) { - v = GRN_BULK_HEAD(&buf); - } - } - rc = grn_array_set_value(ctx, (grn_array *)obj, id, v, flags); - if (range != value->header.domain) { - grn_obj_close(ctx, &buf); - } - } + rc = grn_obj_set_value_table_no_key(ctx, obj, id, value, flags); break; case GRN_COLUMN_VAR_SIZE : if (call_hook(ctx, obj, id, value, flags)) { goto exit; } -------------- next part -------------- HTML����������������������������... Download