[Groonga-mysql-commit] mroonga/mroonga [master] Change BLOB length position of multiple column index. refs #1498

Back to archive index

Kentoku null+****@clear*****
Mon Oct 22 02:16:00 JST 2012


Kentoku	2012-10-22 02:16:00 +0900 (Mon, 22 Oct 2012)

  New Revision: 97b48a4f60b0b0c5e840048ad290c3310ffe3762
  https://github.com/mroonga/mroonga/commit/97b48a4f60b0b0c5e840048ad290c3310ffe3762

  Log:
    Change BLOB length position of multiple column index. refs #1498

  Modified files:
    ha_mroonga.cpp

  Modified: ha_mroonga.cpp (+16 -5)
===================================================================
--- ha_mroonga.cpp    2012-10-19 17:19:40 +0900 (4053acc)
+++ ha_mroonga.cpp    2012-10-22 02:16:00 +0900 (43951a5)
@@ -9738,7 +9738,8 @@ int ha_mroonga::storage_encode_multiple_column_key(KEY *key_info,
       TYPE_FLOAT,
       TYPE_DOUBLE,
       TYPE_BYTE_SEQUENCE,
-      TYPE_BYTE_REVERSE
+      TYPE_BYTE_REVERSE,
+      TYPE_BYTE_BLOB
     } data_type = TYPE_UNKNOWN;
     uint data_size = 0;
     long long int long_long_value = 0;
@@ -9819,8 +9820,8 @@ int ha_mroonga::storage_encode_multiple_column_key(KEY *key_info,
       break;
     case MYSQL_TYPE_VARCHAR:
       DBUG_PRINT("info", ("mroonga: MYSQL_TYPE_VARCHAR"));
-      data_type = TYPE_BYTE_SEQUENCE;
-      data_size = HA_KEY_BLOB_LENGTH + key_part.length;
+      data_type = TYPE_BYTE_BLOB;
+      data_size = key_part.length;
       break;
     case MYSQL_TYPE_BIT:
       // TODO
@@ -9878,8 +9879,8 @@ int ha_mroonga::storage_encode_multiple_column_key(KEY *key_info,
     case MYSQL_TYPE_BLOB:
       // TODO
       DBUG_PRINT("info", ("mroonga: MYSQL_TYPE_BLOB"));
-      data_type = TYPE_BYTE_SEQUENCE;
-      data_size = HA_KEY_BLOB_LENGTH + key_part.length;
+      data_type = TYPE_BYTE_BLOB;
+      data_size = key_part.length;
       break;
     case MYSQL_TYPE_VAR_STRING:
     case MYSQL_TYPE_STRING:
@@ -9936,6 +9937,16 @@ int ha_mroonga::storage_encode_multiple_column_key(KEY *key_info,
       break;
     case TYPE_BYTE_REVERSE:
       break;
+    case TYPE_BYTE_BLOB:
+      if (decode) {
+        memcpy(current_buffer, current_key + data_size, HA_KEY_BLOB_LENGTH);
+        memcpy(current_buffer + HA_KEY_BLOB_LENGTH, current_key, data_size);
+      } else {
+        memcpy(current_buffer + data_size, current_key, HA_KEY_BLOB_LENGTH);
+        memcpy(current_buffer, current_key + HA_KEY_BLOB_LENGTH, data_size);
+      }
+      data_size += HA_KEY_BLOB_LENGTH;
+      break;
     }
 
     if (error) {
-------------- next part --------------
HTML����������������������������...
다운로드 



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