[Groonga-commit] groonga/groonga [master] added grn_column_rename()

Back to archive index

null+****@clear***** null+****@clear*****
2011年 11月 22日 (火) 10:20:04 JST


Daijiro MORI	2011-11-22 01:20:04 +0000 (Tue, 22 Nov 2011)

  New Revision: 5678742039d59759e1f377d0448dae473018db62

  Log:
    added grn_column_rename()

  Modified files:
    lib/db.c

  Modified: lib/db.c (+27 -0)
===================================================================
--- lib/db.c    2011-11-22 01:11:21 +0000 (67ccd6c)
+++ lib/db.c    2011-11-22 01:20:04 +0000 (fd0fd06)
@@ -6180,6 +6180,33 @@ grn_obj_rename(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned name_size)
 }
 
 grn_rc
+grn_column_rename(grn_ctx *ctx, grn_obj *column, const char *name, unsigned name_size)
+{
+  grn_rc rc = GRN_INVALID_ARGUMENT;
+  GRN_API_ENTER;
+  if (GRN_DB_OBJP(column)) {
+    char fullname[GRN_PAT_MAX_KEY_SIZE];
+    grn_db *s = (grn_db *)DB_OBJ(column)->db;
+    int len = grn_table_get_key(ctx, s->keys, DB_OBJ(column)->header.domain,
+                                fullname, GRN_PAT_MAX_KEY_SIZE);
+    if (name_size + 1 + len > GRN_PAT_MAX_KEY_SIZE) {
+      ERR(GRN_INVALID_ARGUMENT,
+          "[column][rename]: too long column name: required name_size(%d) < %d"
+          ": <%.*s>.<%.*s>",
+          name_size, GRN_PAT_MAX_KEY_SIZE - 1 - len,
+          len, fullname, name_size, name);
+      goto exit;
+    }
+    fullname[len] = GRN_DB_DELIMITER;
+    memcpy(fullname + len + 1, name, name_size);
+    name_size += len + 1;
+    rc = grn_obj_rename(ctx, column, fullname, name_size);
+  }
+exit :
+  GRN_API_RETURN(rc);
+}
+
+grn_rc
 grn_obj_path_rename(grn_ctx *ctx, const char *old_path, const char *new_path)
 {
   GRN_API_ENTER;




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