Kouhei Sutou
null+****@clear*****
Mon Jan 19 17:21:02 JST 2015
Kouhei Sutou 2015-01-19 17:21:02 +0900 (Mon, 19 Jan 2015) New Revision: a881995e69b47babfedba8c097d34736a3abb0a2 https://github.com/groonga/groonga/commit/a881995e69b47babfedba8c097d34736a3abb0a2 Message: Fix _sum setter Modified files: lib/db.c lib/grn_rset.h lib/rset.c Modified: lib/db.c (+10 -3) =================================================================== --- lib/db.c 2015-01-19 17:20:38 +0900 (231f7af) +++ lib/db.c 2015-01-19 17:21:02 +0900 (f6e965a) @@ -5846,9 +5846,16 @@ grn_accessor_set_value(grn_ctx *ctx, grn_accessor *a, grn_id id, grn_obj_get_value(ctx, a->obj, id, &buf); { grn_rset_recinfo *ri = (grn_rset_recinfo *)GRN_BULK_HEAD(&buf); - int64_t *sum; - sum = grn_rset_recinfo_get_sum_(ctx, ri, a->obj); - vp = sum; + if (value->header.type == GRN_DB_INT64) { + grn_rset_recinfo_set_sum(ctx, ri, a->obj, GRN_INT64_VALUE(value)); + } else { + grn_obj value_int64; + GRN_INT64_INIT(&value_int64, 0); + if (!grn_obj_cast(ctx, value, &value_int64, GRN_FALSE)) { + grn_rset_recinfo_set_sum(ctx, ri, a->obj, + GRN_INT64_VALUE(&value_int64)); + } + } } break; case GRN_ACCESSOR_GET_COLUMN_VALUE : Modified: lib/grn_rset.h (+4 -0) =================================================================== --- lib/grn_rset.h 2015-01-19 17:20:38 +0900 (081bae6) +++ lib/grn_rset.h 2015-01-19 17:21:02 +0900 (1c0b7f8) @@ -70,6 +70,10 @@ int64_t *grn_rset_recinfo_get_sum_(grn_ctx *ctx, int64_t grn_rset_recinfo_get_sum(grn_ctx *ctx, grn_rset_recinfo *ri, grn_obj *table); +void grn_rset_recinfo_set_sum(grn_ctx *ctx, + grn_rset_recinfo *ri, + grn_obj *table, + int64_t sum); #ifdef __cplusplus } Modified: lib/rset.c (+16 -0) =================================================================== --- lib/rset.c 2015-01-19 17:20:38 +0900 (2ab49e7) +++ lib/rset.c 2015-01-19 17:21:02 +0900 (ea24923) @@ -139,3 +139,19 @@ grn_rset_recinfo_get_sum(grn_ctx *ctx, return 0; } } + +void +grn_rset_recinfo_set_sum(grn_ctx *ctx, + grn_rset_recinfo *ri, + grn_obj *table, + int64_t sum) +{ + int64_t *sum_address; + + sum_address = grn_rset_recinfo_get_sum_(ctx, ri, table); + if (!sum_address) { + return; + } + + *sum_address = sum; +} -------------- next part -------------- HTML����������������������������...Descargar