[Groonga-commit] groonga/groonga at e906816 [master] Use pseudo column name macros instead of literal

Back to archive index

Kouhei Sutou null+****@clear*****
Mon Dec 16 14:40:28 JST 2013


Kouhei Sutou	2013-12-16 14:40:28 +0900 (Mon, 16 Dec 2013)

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

  Message:
    Use pseudo column name macros instead of literal

  Modified files:
    lib/db.c
    lib/db.h
    lib/output.c
    lib/proc.c
    lib/str.c
    plugins/suggest/suggest.c
    src/suggest/groonga_suggest_learner.c

  Modified: lib/db.c (+51 -21)
===================================================================
--- lib/db.c    2013-12-16 14:10:11 +0900 (c87fa09)
+++ lib/db.c    2013-12-16 14:40:28 +0900 (d8620e2)
@@ -4090,7 +4090,10 @@ grn_obj_get_accessor(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned int
       if (len < 2) { goto exit; }
       switch (name[1]) {
       case 'k' : /* key */
-        if (len != 4 || memcmp(name, "_key", 4)) { goto exit; }
+        if (len != GRN_COLUMN_NAME_KEY_LEN ||
+            memcmp(name, GRN_COLUMN_NAME_KEY, GRN_COLUMN_NAME_KEY_LEN)) {
+          goto exit;
+        }
         for (rp = &res; !done; rp = &(*rp)->next) {
           *rp = accessor_new(ctx);
           (*rp)->obj = obj;
@@ -4132,7 +4135,10 @@ grn_obj_get_accessor(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned int
         }
         break;
       case 'i' : /* id */
-        if (len != 3 || memcmp(name, "_id", 3)) { goto exit; }
+        if (len != GRN_COLUMN_NAME_ID_LEN ||
+            memcmp(name, GRN_COLUMN_NAME_ID, GRN_COLUMN_NAME_ID_LEN)) {
+          goto exit;
+        }
         for (rp = &res; !done; rp = &(*rp)->next) {
           *rp = accessor_new(ctx);
           (*rp)->obj = obj;
@@ -4167,7 +4173,10 @@ grn_obj_get_accessor(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned int
         }
         break;
       case 'v' : /* value */
-        if (len != 6 || memcmp(name, "_value", 6)) { goto exit; }
+        if (len != GRN_COLUMN_NAME_VALUE_LEN ||
+            memcmp(name, GRN_COLUMN_NAME_VALUE, GRN_COLUMN_NAME_VALUE_LEN)) {
+          goto exit;
+        }
         for (rp = &res; !done; rp = &(*rp)->next) {
           *rp = accessor_new(ctx);
           (*rp)->obj = obj;
@@ -4215,7 +4224,10 @@ grn_obj_get_accessor(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned int
         }
         break;
       case 's' : /* score */
-        if (len != 6 || memcmp(name, "_score", 6)) { goto exit; }
+        if (len != GRN_COLUMN_NAME_SCORE_LEN ||
+            memcmp(name, GRN_COLUMN_NAME_SCORE, GRN_COLUMN_NAME_SCORE_LEN)) {
+          goto exit;
+        }
         for (rp = &res; !done; rp = &(*rp)->next) {
           *rp = accessor_new(ctx);
           (*rp)->obj = obj;
@@ -4250,7 +4262,12 @@ grn_obj_get_accessor(grn_ctx *ctx, grn_obj *obj, const char *name, unsigned int
         }
         break;
       case 'n' : /* nsubrecs */
-        if (len != 9 || memcmp(name, "_nsubrecs", 9)) { goto exit; }
+        if (len != GRN_COLUMN_NAME_NSUBRECS_LEN ||
+            memcmp(name,
+                   GRN_COLUMN_NAME_NSUBRECS,
+                   GRN_COLUMN_NAME_NSUBRECS_LEN)) {
+          goto exit;
+        }
         for (rp = &res; !done; rp = &(*rp)->next) {
           *rp = accessor_new(ctx);
           (*rp)->obj = obj;
@@ -7997,19 +8014,19 @@ grn_column_name(grn_ctx *ctx, grn_obj *obj, char *namebuf, int buf_size)
     for (a = (grn_accessor *)obj; a; a = a->next) {
       switch (a->action) {
       case GRN_ACCESSOR_GET_ID :
-        name = "_id";
+        name = GRN_COLUMN_NAME_ID;
         break;
       case GRN_ACCESSOR_GET_KEY :
-        name = "_key";
+        name = GRN_COLUMN_NAME_KEY;
         break;
       case GRN_ACCESSOR_GET_VALUE :
-        name = "_value";
+        name = GRN_COLUMN_NAME_VALUE;
         break;
       case GRN_ACCESSOR_GET_SCORE :
-        name = "_score";
+        name = GRN_COLUMN_NAME_SCORE;
         break;
       case GRN_ACCESSOR_GET_NSUBRECS :
-        name = "_nsubrecs";
+        name = GRN_COLUMN_NAME_NSUBRECS;
         break;
       case GRN_ACCESSOR_GET_COLUMN_VALUE :
       case GRN_ACCESSOR_GET_DB_OBJ :
@@ -8050,23 +8067,29 @@ grn_column_name_(grn_ctx *ctx, grn_obj *obj, grn_obj *buf)
     for (a = (grn_accessor *)obj; a; a = a->next) {
       switch (a->action) {
       case GRN_ACCESSOR_GET_ID :
-        GRN_TEXT_PUTS(ctx, buf, "_id");
+        GRN_TEXT_PUT(ctx, buf, GRN_COLUMN_NAME_ID, GRN_COLUMN_NAME_ID_LEN);
         break;
       case GRN_ACCESSOR_GET_KEY :
         if (!a->next) {
-          GRN_TEXT_PUTS(ctx, buf, "_key");
+          GRN_TEXT_PUT(ctx, buf, GRN_COLUMN_NAME_KEY, GRN_COLUMN_NAME_KEY_LEN);
         }
         break;
       case GRN_ACCESSOR_GET_VALUE :
         if (!a->next) {
-          GRN_TEXT_PUTS(ctx, buf, "_value");
+          GRN_TEXT_PUT(ctx, buf,
+                       GRN_COLUMN_NAME_VALUE,
+                       GRN_COLUMN_NAME_VALUE_LEN);
         }
         break;
       case GRN_ACCESSOR_GET_SCORE :
-        GRN_TEXT_PUTS(ctx, buf, "_score");
+        GRN_TEXT_PUT(ctx, buf,
+                     GRN_COLUMN_NAME_SCORE,
+                     GRN_COLUMN_NAME_SCORE_LEN);
         break;
       case GRN_ACCESSOR_GET_NSUBRECS :
-        GRN_TEXT_PUTS(ctx, buf, "_nsubrecs");
+        GRN_TEXT_PUT(ctx, buf,
+                     GRN_COLUMN_NAME_NSUBRECS,
+                     GRN_COLUMN_NAME_NSUBRECS_LEN);
         break;
       case GRN_ACCESSOR_GET_COLUMN_VALUE :
         grn_column_name_(ctx, a->obj, buf);
@@ -9144,7 +9167,9 @@ grn_obj_columns(grn_ctx *ctx, grn_obj *table,
           {
             grn_obj *type = grn_ctx_at(ctx, table->header.domain);
             if (GRN_OBJ_TABLEP(type)) {
-              grn_obj *ai = grn_obj_column(ctx, table, "_id", 3);
+              grn_obj *ai = grn_obj_column(ctx, table,
+                                           GRN_COLUMN_NAME_ID,
+                                           GRN_COLUMN_NAME_ID_LEN);
               if (ai) {
                 if (ai->header.type == GRN_ACCESSOR) {
                   cols = grn_hash_create(ctx, NULL, sizeof(grn_id), 0,
@@ -9286,7 +9311,8 @@ grn_table_sort_key_from_str(grn_ctx *ctx, const char *str, unsigned int str_size
           if ((k->key = grn_obj_column(ctx, table, p, r - p))) {
             k++;
           } else {
-            if (r - p == 6 && memcmp(p, "_score", 6) == 0) {
+            if (r - p == GRN_COLUMN_NAME_SCORE_LEN &&
+                memcmp(p, GRN_COLUMN_NAME_SCORE, GRN_COLUMN_NAME_SCORE_LEN) == 0) {
               GRN_LOG(ctx, GRN_WARN,
                       "ignore invalid sort key: <%.*s>(<%.*s>)",
                       (int)(r - p), p, str_size, str);
@@ -9582,8 +9608,10 @@ bracket_close(grn_ctx *ctx, grn_loader *loader)
             char *column_name = GRN_TEXT_VALUE(value);
             unsigned int column_name_size = GRN_TEXT_LEN(value);
             if (value->header.domain == GRN_DB_TEXT &&
-                (name_equal(column_name, column_name_size, KEY_NAME) ||
-                 name_equal(column_name, column_name_size, ID_NAME))) {
+                (name_equal(column_name, column_name_size,
+                            GRN_COLUMN_NAME_KEY) ||
+                 name_equal(column_name, column_name_size,
+                            GRN_COLUMN_NAME_ID))) {
               if (loader->key_offset != -1) {
                 GRN_LOG(ctx, GRN_LOG_ERROR,
                         "duplicated key columns: <%.*s> at %d and <%.*s> at %i",
@@ -9719,8 +9747,10 @@ brace_close(grn_ctx *ctx, grn_loader *loader)
             char *column_name = GRN_TEXT_VALUE(v);
             unsigned int column_name_size = GRN_TEXT_LEN(v);
             if (v->header.domain == GRN_DB_TEXT &&
-                (name_equal(column_name, column_name_size, KEY_NAME) ||
-                 name_equal(column_name, column_name_size, ID_NAME))) {
+                (name_equal(column_name, column_name_size,
+                            GRN_COLUMN_NAME_KEY) ||
+                 name_equal(column_name, column_name_size,
+                            GRN_COLUMN_NAME_ID))) {
               if (key_column_name) {
                 GRN_LOG(ctx, GRN_LOG_ERROR, "duplicated key columns: %.*s and %.*s",
                         (int)GRN_TEXT_LEN(key_column_name),

  Modified: lib/db.h (+0 -3)
===================================================================
--- lib/db.h    2013-12-16 14:10:11 +0900 (fd01ab9)
+++ lib/db.h    2013-12-16 14:40:28 +0900 (dc2fba4)
@@ -420,9 +420,6 @@ void grn_expr_pack(grn_ctx *ctx, grn_obj *buf, grn_obj *expr);
 GRN_API grn_rc grn_expr_inspect(grn_ctx *ctx, grn_obj *buf, grn_obj *expr);
 grn_obj *grn_expr_open(grn_ctx *ctx, grn_obj_spec *spec, const uint8_t *p, const uint8_t *pe);
 
-#define KEY_NAME "_key"
-#define ID_NAME "_id"
-
 GRN_API void grn_load_(grn_ctx *ctx, grn_content_type input_type,
                        const char *table, unsigned int table_len,
                        const char *columns, unsigned int columns_len,

  Modified: lib/output.c (+6 -2)
===================================================================
--- lib/output.c    2013-12-16 14:10:11 +0900 (91156f3)
+++ lib/output.c    2013-12-16 14:40:28 +0900 (419570d)
@@ -721,7 +721,9 @@ grn_output_bulk(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
       grn_obj *table = grn_ctx_at(ctx, bulk->header.domain);
       grn_id id = GRN_RECORD_VALUE(bulk);
       if (table && table->header.type != GRN_TABLE_NO_KEY) {
-        grn_obj *accessor = grn_obj_column(ctx, table, "_key", 4);
+        grn_obj *accessor = grn_obj_column(ctx, table,
+                                           GRN_COLUMN_NAME_KEY,
+                                           GRN_COLUMN_NAME_KEY_LEN);
         if (accessor) {
           if (id == GRN_ID_NIL) {
             grn_obj_reinit_for(ctx, &buf, accessor);
@@ -1263,7 +1265,9 @@ grn_output_table(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
     grn_output_array_close(ctx, outbuf, output_type);
   } else {
     int i;
-    grn_obj *column = grn_obj_column(ctx, table, "_key", 4);
+    grn_obj *column = grn_obj_column(ctx, table,
+                                     GRN_COLUMN_NAME_KEY,
+                                     GRN_COLUMN_NAME_KEY_LEN);
     grn_table_cursor *tc = grn_table_cursor_open(ctx, table, NULL, 0, NULL, 0,
                                                  0, -1, GRN_CURSOR_ASCENDING);
     grn_output_array_open(ctx, outbuf, output_type, "HIT", -1);

  Modified: lib/proc.c (+20 -10)
===================================================================
--- lib/proc.c    2013-12-16 14:10:11 +0900 (3b2a9bf)
+++ lib/proc.c    2013-12-16 14:40:28 +0900 (280de00)
@@ -1465,7 +1465,9 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
     int column_list_size = -1;
 #ifdef GRN_WITH_MESSAGE_PACK
     column_list_size = 1; /* [header, (key), (COLUMNS)] */
-    if ((col = grn_obj_column(ctx, table, KEY_NAME, sizeof(KEY_NAME)-1))) {
+    if ((col = grn_obj_column(ctx, table,
+                              GRN_COLUMN_NAME_KEY,
+                              GRN_COLUMN_NAME_KEY_LEN))) {
       column_list_size++;
       grn_obj_unlink(ctx, col);
     }
@@ -1513,7 +1515,9 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
       GRN_OUTPUT_CSTR("ShortText");
       GRN_OUTPUT_ARRAY_CLOSE();
       GRN_OUTPUT_ARRAY_CLOSE();
-      if ((col = grn_obj_column(ctx, table, KEY_NAME, sizeof(KEY_NAME)-1))) {
+      if ((col = grn_obj_column(ctx, table,
+                                GRN_COLUMN_NAME_KEY,
+                                GRN_COLUMN_NAME_KEY_LEN))) {
         int name_len;
         char name_buf[GRN_TABLE_MAX_KEY_SIZE];
         grn_id id;
@@ -1522,7 +1526,7 @@ proc_column_list(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
         GRN_OUTPUT_ARRAY_OPEN("COLUMN", 8);
         id = grn_obj_id(ctx, table);
         GRN_OUTPUT_INT64(id);
-        GRN_OUTPUT_CSTR(KEY_NAME);
+        GRN_OUTPUT_CSTR(GRN_COLUMN_NAME_KEY);
         GRN_OUTPUT_CSTR("");
         GRN_OUTPUT_CSTR("");
         grn_column_create_flags_to_text(ctx, &buf, 0);
@@ -2063,7 +2067,7 @@ dump_index_column_sources(grn_ctx *ctx, grn_obj *outbuf, grn_obj *column)
       case GRN_TABLE_PAT_KEY:
       case GRN_TABLE_DAT_KEY:
       case GRN_TABLE_HASH_KEY:
-        GRN_TEXT_PUTS(ctx, outbuf, "_key");
+        GRN_TEXT_PUT(ctx, outbuf, GRN_COLUMN_NAME_KEY, GRN_COLUMN_NAME_KEY_LEN);
         break;
       default:
         dump_column_name(ctx, outbuf, source);
@@ -2206,11 +2210,15 @@ dump_records(grn_ctx *ctx, grn_obj *outbuf, grn_obj *table)
     if (((table->header.type == GRN_TABLE_HASH_KEY ||
           table->header.type == GRN_TABLE_PAT_KEY ||
           table->header.type == GRN_TABLE_DAT_KEY) &&
-         GRN_TEXT_LEN(&column_name) == 3 &&
-         !memcmp(GRN_TEXT_VALUE(&column_name), "_id", 3)) ||
+         GRN_TEXT_LEN(&column_name) == GRN_COLUMN_NAME_ID_LEN &&
+         !memcmp(GRN_TEXT_VALUE(&column_name),
+                 GRN_COLUMN_NAME_ID,
+                 GRN_COLUMN_NAME_ID_LEN)) ||
         (table->header.type == GRN_TABLE_NO_KEY &&
-         GRN_TEXT_LEN(&column_name) == 4 &&
-         !memcmp(GRN_TEXT_VALUE(&column_name), "_key", 4))) {
+         GRN_TEXT_LEN(&column_name) == GRN_COLUMN_NAME_KEY_LEN &&
+         !memcmp(GRN_TEXT_VALUE(&column_name),
+                 GRN_COLUMN_NAME_KEY,
+                 GRN_COLUMN_NAME_KEY_LEN))) {
       continue;
     }
     GRN_PTR_PUT(ctx, &use_columns, columns[i]);
@@ -2254,8 +2262,10 @@ dump_records(grn_ctx *ctx, grn_obj *outbuf, grn_obj *table)
       column = *((grn_obj **)GRN_BULK_HEAD(&use_columns) + j);
       GRN_BULK_REWIND(&column_name);
       grn_column_name_(ctx, column, &column_name);
-      if (GRN_TEXT_LEN(&column_name) == 6 &&
-          !memcmp(GRN_TEXT_VALUE(&column_name), "_value", 6)) {
+      if (GRN_TEXT_LEN(&column_name) == GRN_COLUMN_NAME_VALUE_LEN &&
+          !memcmp(GRN_TEXT_VALUE(&column_name),
+                  GRN_COLUMN_NAME_VALUE,
+                  GRN_COLUMN_NAME_VALUE_LEN)) {
         is_value_column = 1;
       } else {
         is_value_column = 0;

  Modified: lib/str.c (+6 -2)
===================================================================
--- lib/str.c    2013-12-16 14:10:11 +0900 (232ec8c)
+++ lib/str.c    2013-12-16 14:40:28 +0900 (d0b6364)
@@ -2721,7 +2721,9 @@ grn_text_otoj(grn_ctx *ctx, grn_obj *bulk, grn_obj *obj, grn_obj_format *format)
         if (table && table->header.type != GRN_TABLE_NO_KEY) {
           /* todo : temporal patch. grn_table_at() is kinda costful... */
           if (grn_table_at(ctx, table, id)) {
-            grn_obj *accessor = grn_obj_column(ctx, table, "_key", 4);
+            grn_obj *accessor = grn_obj_column(ctx, table,
+                                               GRN_COLUMN_NAME_KEY,
+                                               GRN_COLUMN_NAME_KEY_LEN);
             if (accessor) {
               grn_obj_get_value(ctx, accessor, id, &buf);
               grn_obj_unlink(ctx, accessor);
@@ -2952,7 +2954,9 @@ grn_text_otoj(grn_ctx *ctx, grn_obj *bulk, grn_obj *obj, grn_obj_format *format)
     } else {
       int i;
       grn_id id;
-      grn_obj *column = grn_obj_column(ctx, obj, "_key", 4);
+      grn_obj *column = grn_obj_column(ctx, obj,
+                                       GRN_COLUMN_NAME_KEY,
+                                       GRN_COLUMN_NAME_KEY_LEN);
       grn_table_cursor *tc = grn_table_cursor_open(ctx, obj, NULL, 0, NULL, 0,
                                                    0, -1, GRN_CURSOR_ASCENDING);
       GRN_TEXT_PUTC(ctx, bulk, '[');

  Modified: plugins/suggest/suggest.c (+9 -3)
===================================================================
--- plugins/suggest/suggest.c    2013-12-16 14:10:11 +0900 (05fe09b)
+++ plugins/suggest/suggest.c    2013-12-16 14:40:28 +0900 (25961a3)
@@ -393,7 +393,9 @@ correct(grn_ctx *ctx, grn_obj *items, grn_obj *items_boost,
          (similar_search_mode == GRN_SUGGEST_SEARCH_AUTO &&
           max_score < frequency_threshold))) {
       grn_obj *key, *index;
-      if ((key = grn_obj_column(ctx, items, CONST_STR_LEN("_key")))) {
+      if ((key = grn_obj_column(ctx, items,
+                                GRN_COLUMN_NAME_KEY,
+                                GRN_COLUMN_NAME_KEY_LEN))) {
         if (grn_column_index(ctx, key, GRN_OP_MATCH, &index, 1, NULL)) {
           grn_select_optarg optarg;
           memset(&optarg, 0, sizeof(grn_select_optarg));
@@ -445,8 +447,12 @@ correct(grn_ctx *ctx, grn_obj *items, grn_obj *items_boost,
             GRN_EXPR_CREATE_FOR_QUERY(ctx, res, expr, var);
             if (expr) {
               grn_table_cursor *tc;
-              grn_obj *score = grn_obj_column(ctx, res, CONST_STR_LEN("_score"));
-              grn_obj *key = grn_obj_column(ctx, res, CONST_STR_LEN("_key"));
+              grn_obj *score = grn_obj_column(ctx, res,
+                                              GRN_COLUMN_NAME_SCORE,
+                                              GRN_COLUMN_NAME_SCORE_LEN);
+              grn_obj *key = grn_obj_column(ctx, res,
+                                            GRN_COLUMN_NAME_KEY,
+                                            GRN_COLUMN_NAME_KEY_LEN);
               grn_expr_append_obj(ctx, expr,
                                   score,
                                   GRN_OP_GET_VALUE, 1);

  Modified: src/suggest/groonga_suggest_learner.c (+6 -2)
===================================================================
--- src/suggest/groonga_suggest_learner.c    2013-12-16 14:10:11 +0900 (988bee6)
+++ src/suggest/groonga_suggest_learner.c    2013-12-16 14:40:28 +0900 (a35417e)
@@ -261,7 +261,9 @@ send_handler(void *zmq_send_sock, grn_ctx *ctx)
                 msgpack_pack_raw_body(&pk, name_buf, name_len);
 
                 msgpack_pack_raw(&pk, 4);
-                msgpack_pack_raw_body(&pk, CONST_STR_LEN("_key"));
+                msgpack_pack_raw_body(&pk,
+                                      GRN_COLUMN_NAME_KEY,
+                                      GRN_COLUMN_NAME_KEY_LEN);
                 key_len = grn_table_cursor_get_key(ctx, tc, (void **)&key);
                 msgpack_pack_raw(&pk, key_len);
                 msgpack_pack_raw_body(&pk, key, key_len);
@@ -330,7 +332,9 @@ send_handler(void *zmq_send_sock, grn_ctx *ctx)
                 msgpack_pack_raw_body(&pk, name_buf, name_len);
 
                 msgpack_pack_raw(&pk, 4);
-                msgpack_pack_raw_body(&pk, CONST_STR_LEN("_key"));
+                msgpack_pack_raw_body(&pk,
+                                      GRN_COLUMN_NAME_KEY,
+                                      GRN_COLUMN_NAME_KEY_LEN);
                 grn_table_cursor_get_key(ctx, tc, (void **)&key);
                 msgpack_pack_uint64(&pk, *key);
 
-------------- next part --------------
HTML����������������������������...
Download 



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