[Groonga-commit] groonga/groonga at 58b2d09 [master] Extract a code for setting a pat key table value

Back to archive index

Kouhei Sutou null+****@clear*****
Thu May 9 11:36:29 JST 2013


Kouhei Sutou	2013-05-09 11:36:29 +0900 (Thu, 09 May 2013)

  New Revision: 58b2d09b88e142003bc9b85727c4669704a8d0b7
  https://github.com/groonga/groonga/commit/58b2d09b88e142003bc9b85727c4669704a8d0b7

  Message:
    Extract a code for setting a pat key table value

  Modified files:
    lib/db.c

  Modified: lib/db.c (+28 -16)
===================================================================
--- lib/db.c    2013-05-09 11:34:46 +0900 (0ef7df4)
+++ lib/db.c    2013-05-09 11:36:29 +0900 (389aef1)
@@ -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_pat_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_pat_set_value(ctx, (grn_pat *)obj, id, v, flags);
+  if (range != value->header.domain) {
+    grn_obj_close(ctx, &buf);
+  }
+
+  return rc;
+}
+
+static grn_rc
 grn_obj_set_value_table_hash_key(grn_ctx *ctx, grn_obj *obj, grn_id id,
                                  grn_obj *value, int flags)
 {
@@ -5397,24 +5424,9 @@ grn_obj_set_value(grn_ctx *ctx, grn_obj *obj, grn_id id,
       ERR(GRN_INVALID_ARGUMENT, "not db_obj");
     }
   } else {
-    grn_id range = DB_OBJ(obj)->range;
-    void *v = GRN_BULK_HEAD(value);
     switch (obj->header.type) {
     case GRN_TABLE_PAT_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_pat_set_value(ctx, (grn_pat *)obj, id, v, flags);
-        if (range != value->header.domain) {
-          grn_obj_close(ctx, &buf);
-        }
-      }
+      rc = grn_obj_set_value_table_pat_key(ctx, obj, id, value, flags);
       break;
     case GRN_TABLE_DAT_KEY :
       rc = GRN_OPERATION_NOT_SUPPORTED;
-------------- next part --------------
HTML����������������������������...
Download 



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