[Groonga-commit] groonga/groonga at a881995 [master] Fix _sum setter

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index