[Groonga-commit] groonga/groonga at c04e049 [master] accessor: use common code for _nsubrecs

アーカイブの一覧に戻る

Kouhei Sutou null+****@clear*****
Mon Jan 19 18:13:48 JST 2015


Kouhei Sutou	2015-01-19 18:13:48 +0900 (Mon, 19 Jan 2015)

  New Revision: c04e04972a7ff9fdbb9b4cefe46bf1bcf5729c54
  https://github.com/groonga/groonga/commit/c04e04972a7ff9fdbb9b4cefe46bf1bcf5729c54

  Message:
    accessor: use common code for _nsubrecs

  Modified files:
    lib/db.c

  Modified: lib/db.c (+5 -32)
===================================================================
--- lib/db.c    2015-01-19 18:10:32 +0900 (136b5fc)
+++ lib/db.c    2015-01-19 18:13:48 +0900 (409ea9b)
@@ -4705,8 +4705,9 @@ grn_obj_get_accessor_pseudo_column(grn_ctx *ctx, grn_obj *obj,
       }
       break;
     case GRN_ACCESSOR_GET_SUM :
+    case GRN_ACCESSOR_GET_NSUBRECS :
       if (GRN_TABLE_IS_GROUPED(obj)) {
-        (*rp)->action = GRN_ACCESSOR_GET_SUM;
+        (*rp)->action = action;
         succeeded = GRN_TRUE;
         goto exit;
       }
@@ -4957,37 +4958,9 @@ grn_obj_get_accessor(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned int
                    GRN_COLUMN_NAME_NSUBRECS_LEN)) {
           goto exit;
         }
-        for (rp = &res; !done; rp = &(*rp)->next) {
-          *rp = accessor_new(ctx);
-          (*rp)->obj = obj;
-          if (GRN_TABLE_IS_GROUPED(obj)) {
-            (*rp)->action = GRN_ACCESSOR_GET_NSUBRECS;
-            done++;
-          } else {
-            switch (obj->header.type) {
-            case GRN_TABLE_PAT_KEY :
-            case GRN_TABLE_DAT_KEY :
-            case GRN_TABLE_HASH_KEY :
-              (*rp)->action = GRN_ACCESSOR_GET_KEY;
-              break;
-            case GRN_TABLE_NO_KEY :
-              if (obj->header.domain) {
-                (*rp)->action = GRN_ACCESSOR_GET_VALUE;
-                break;
-              }
-              /* fallthru */
-            default :
-              /* lookup failed */
-              grn_obj_close(ctx, (grn_obj *)res);
-              res = NULL;
-              goto exit;
-            }
-            if (!(obj = grn_ctx_at(ctx, obj->header.domain))) {
-              grn_obj_close(ctx, (grn_obj *)res);
-              res = NULL;
-              goto exit;
-            }
-          }
+        if (!grn_obj_get_accessor_pseudo_column(ctx, obj, &res,
+                                                GRN_ACCESSOR_GET_NSUBRECS)) {
+          goto exit;
         }
         break;
       default :
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る