[Groonga-commit] groonga/groonga [master] exported grn_obj_delete_by_id()

Back to archive index

null+****@clear***** null+****@clear*****
2011年 12月 22日 (木) 08:34:25 JST


Daijiro MORI	2011-12-21 23:34:25 +0000 (Wed, 21 Dec 2011)

  New Revision: f3caec88fbff23dc5f4096079481bd4a36b74761

  Log:
    exported grn_obj_delete_by_id()

  Modified files:
    include/groonga.h
    lib/db.c

  Modified: include/groonga.h (+8 -0)
===================================================================
--- include/groonga.h    2011-12-21 22:41:37 +0000 (3f3ecf4)
+++ include/groonga.h    2011-12-21 23:34:25 +0000 (acfed1b)
@@ -1809,6 +1809,14 @@ GRN_API grn_obj *grn_obj_open(grn_ctx *ctx, unsigned char type, grn_obj_flags fl
 GRN_API int grn_column_index(grn_ctx *ctx, grn_obj *column, grn_operator op,
                              grn_obj **indexbuf, int buf_size, int *section);
 
+
+/**
+ * grn_obj_delete_by_id:
+ *
+ * dbからidに対応するテーブルやカラムなどを削除します。mroonga向けに用意した内部APIです。
+ **/
+GRN_API grn_rc grn_obj_delete_by_id(grn_ctx *ctx, grn_obj *db, grn_id id, int removep);
+
 /* geo */
 
 typedef struct {

  Modified: lib/db.c (+10 -8)
===================================================================
--- lib/db.c    2011-12-21 22:41:37 +0000 (20f2ea1)
+++ lib/db.c    2011-12-21 23:34:25 +0000 (83cf022)
@@ -282,8 +282,6 @@ grn_db_close(grn_ctx *ctx, grn_obj *db)
   GRN_API_RETURN(GRN_SUCCESS);
 }
 
-static grn_rc grn_obj_delete_by_id(grn_ctx *ctx, grn_obj *db, grn_id id, int removep);
-
 grn_obj *
 grn_ctx_get(grn_ctx *ctx, const char *name, unsigned name_size)
 {
@@ -6476,13 +6474,15 @@ grn_obj_register(grn_ctx *ctx, grn_obj *db, const char *name, unsigned name_size
   return id;
 }
 
-static grn_rc
+grn_rc
 grn_obj_delete_by_id(grn_ctx *ctx, grn_obj *db, grn_id id, int removep)
 {
+  grn_rc rc = GRN_INVALID_ARGUMENT;
+  GRN_API_ENTER;
   if (id) {
     if (id & GRN_OBJ_TMP_OBJECT) {
       if (ctx->impl && ctx->impl->values) {
-        return grn_array_delete_by_id(ctx, ctx->impl->values,
+        rc = grn_array_delete_by_id(ctx, ctx->impl->values,
                                       id & ~GRN_OBJ_TMP_OBJECT, NULL);
       }
     } else {
@@ -6497,16 +6497,18 @@ grn_obj_delete_by_id(grn_ctx *ctx, grn_obj *db, grn_id id, int removep)
       if (removep) {
         switch (s->keys->header.type) {
         case GRN_TABLE_PAT_KEY :
-          return grn_pat_delete_by_id(ctx, (grn_pat *)s->keys, id, NULL);
+          rc = grn_pat_delete_by_id(ctx, (grn_pat *)s->keys, id, NULL);
+          break;
         case GRN_TABLE_DAT_KEY :
-          return grn_dat_delete_by_id(ctx, (grn_dat *)s->keys, id, NULL);
+          rc = grn_dat_delete_by_id(ctx, (grn_dat *)s->keys, id, NULL);
+          break;
         }
       } else {
-        return GRN_SUCCESS;
+        rc = GRN_SUCCESS;
       }
     }
   }
-  return GRN_INVALID_ARGUMENT;
+  GRN_API_RETURN(rc);
 }
 
 /* db must be validated by caller */




Groonga-commit メーリングリストの案内
Back to archive index