[Groonga-commit] groonga/groonga at 364ef7e [master] Extract a code for setting a no key table value

Back to archive index

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 



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