[Groonga-commit] groonga/groonga [master] Use GRN_CURSOR_ASCENDING for GRN_OBJ_KEY_VAR_SIZE in buffer_new().

Back to archive index

null+****@clear***** null+****@clear*****
2010年 11月 18日 (木) 20:51:01 JST


Daijiro MORI	2010-11-18 11:51:01 +0000 (Thu, 18 Nov 2010)

  New Revision: 33018cb4cef009febdded2567539b17903a5968b

  Log:
    Use GRN_CURSOR_ASCENDING for GRN_OBJ_KEY_VAR_SIZE in buffer_new().

  Modified files:
    lib/ii.c

  Modified: lib/ii.c (+7 -8)
===================================================================
--- lib/ii.c    2010-11-18 11:27:00 +0000 (148d166)
+++ lib/ii.c    2010-11-18 11:51:01 +0000 (d4c67f0)
@@ -3302,15 +3302,14 @@ buffer_new(grn_ctx *ctx, grn_ii *ii, int size, uint32_t *pos,
   uint32_t *a, lseg = NOT_ASSIGNED, pseg = NOT_ASSIGNED;
   grn_table_cursor *tc = NULL;
   if (ii->lexicon->header.type == GRN_TABLE_PAT_KEY) {
-    if ((tc = grn_table_cursor_open(ctx, ii->lexicon, NULL, 0, key, key_size, 0, -1,
-                                    GRN_CURSOR_PREFIX))) {
-      if (!((grn_pat_cursor *)tc)->sp) {
-        grn_table_cursor_close(ctx, tc);
-        tc = NULL;
-      }
+    if (ii->lexicon->header.flags & GRN_OBJ_KEY_VAR_SIZE) {
+      tc = grn_table_cursor_open(ctx, ii->lexicon, key, key_size, NULL, 0, 0, -1,
+                                 GRN_CURSOR_ASCENDING|GRN_CURSOR_GT);
+    } else {
+      tc = grn_table_cursor_open(ctx, ii->lexicon, NULL, 0, key, key_size, 0, -1,
+                                 GRN_CURSOR_PREFIX);
     }
-  }
-  if (!tc) {
+  } else {
     tc = grn_table_cursor_open(ctx, ii->lexicon, NULL, 0, NULL, 0, 0, -1,
                                GRN_CURSOR_ASCENDING);
   }




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