[Groonga-mysql-commit] mroonga/mroonga [fix-for-visual-studio] added pkey const search tryal implementation(continue)

Back to archive index

Tetsuro IKEDA null+****@clear*****
Thu Oct 4 10:18:38 JST 2012


Tetsuro IKEDA	2009-04-30 18:49:36 +0900 (Thu, 30 Apr 2009)

  New Revision: e824845a1afb5d73c9e9117fcc491c85ec13a12b
  https://github.com/mroonga/mroonga/commit/e824845a1afb5d73c9e9117fcc491c85ec13a12b

  Log:
    added pkey const search tryal implementation(continue)

  Modified files:
    src/ha_groonga.cc

  Modified: src/ha_groonga.cc (+31 -0)
===================================================================
--- src/ha_groonga.cc    2009-04-30 16:51:42 +0900 (54b4c94)
+++ src/ha_groonga.cc    2009-04-30 18:49:36 +0900 (9994137)
@@ -459,6 +459,7 @@ int ha_groonga::write_row(uchar *buf)
       return HA_ERR_UNSUPPORTED;
     }
   }
+  grn_obj_close(mrn_ctx_tls, &wrapper);
   return 0;
 }
 
@@ -468,6 +469,36 @@ int ha_groonga::index_read(uchar *buf, const uchar *key,
   MRN_TRACE;
   Field *key_field= table->key_info[active_index].key_part->field;
   uint rc= 0;
+  grn_id gid;
+  grn_obj wrapper;
+  Field **mysql_field;
+  mrn_field **grn_field;
+  int num;
+  grn_search_flags flags = 0;
+
+  int k;
+  memcpy(&k,key,sizeof(int));
+  gid = grn_table_lookup(mrn_ctx_tls, share->obj,
+			 (const void*) key, sizeof(key), &flags);
+  MRN_LOG(GRN_LOG_DEBUG, "-> found record: key=%d, gid=%d",k,gid);
+
+  GRN_OBJ_INIT(&wrapper, GRN_BULK, 0);
+  for (mysql_field = table->field, grn_field = share->field, num=0;
+       *mysql_field;
+       mysql_field++, grn_field++, num++) {
+    if (num == share->pkey_field) {
+      continue;
+    }
+    GRN_BULK_REWIND(&wrapper);
+    MRN_LOG(GRN_LOG_DEBUG, "-> grn_obj_get_value: gid=%d, obj=%p",
+	    gid, (*grn_field)->obj);
+    grn_obj_get_value(mrn_ctx_tls, (*grn_field)->obj, gid, &wrapper);
+    int *res;
+    res = (int*) GRN_BULK_HEAD(&wrapper);
+    (*mysql_field)->store(*res);
+  }
+  grn_obj_close(mrn_ctx_tls, &wrapper);
+
   if (key_field->field_index == table->s->primary_key)
   {
     key_field->set_key_image(key, key_len);
-------------- next part --------------
HTML����������������������������...
Download 



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