null+****@clear*****
null+****@clear*****
2012年 3月 18日 (日) 18:19:08 JST
Kouhei Sutou 2012-03-18 18:19:08 +0900 (Sun, 18 Mar 2012)
New Revision: 163518c483c79d34e9401eb3d70399966c50dd85
Log:
multiple column key: get double value in caller
Modified files:
ha_mroonga.cc
ha_mroonga.h
Modified: ha_mroonga.cc (+11 -10)
===================================================================
--- ha_mroonga.cc 2012-03-18 18:18:48 +0900 (26989f3)
+++ ha_mroonga.cc 2012-03-18 18:19:08 +0900 (27b6160)
@@ -8863,17 +8863,14 @@ void ha_mroonga::storage_encode_multiple_column_key_float(float value,
DBUG_VOID_RETURN;
}
-uint ha_mroonga::storage_encode_multiple_column_key_double(const uchar *key,
+void ha_mroonga::storage_encode_multiple_column_key_double(double value,
+ uint data_size,
uchar *buffer,
bool decode)
{
MRN_DBUG_ENTER_METHOD();
- uint data_size = 8;
- double double_value = 0.0;
- float8get(double_value, key);
int n_bits = (data_size * 8 - 1);
- volatile long long int *long_long_value_pointer =
- (long long int *)(&double_value);
+ volatile long long int *long_long_value_pointer = (long long int *)(&value);
volatile long long int long_long_value = *long_long_value_pointer;
if (!decode)
long_long_value ^= ((long_long_value >> n_bits) | (1LL << n_bits));
@@ -8884,7 +8881,7 @@ uint ha_mroonga::storage_encode_multiple_column_key_double(const uchar *key,
long_long_value ^ (((long_long_value ^ (1LL << n_bits)) >> n_bits) |
(1LL << n_bits));
}
- DBUG_RETURN(data_size);
+ DBUG_VOID_RETURN;
}
int ha_mroonga::storage_encode_multiple_column_key(KEY *key_info,
@@ -8952,9 +8949,13 @@ int ha_mroonga::storage_encode_multiple_column_key(KEY *key_info,
break;
case MYSQL_TYPE_DOUBLE:
data_type = TYPE_DOUBLE;
- data_size = storage_encode_multiple_column_key_double(current_key,
- current_buffer,
- decode);
+ data_size = 8;
+ {
+ double value;
+ float8get(value, current_key);
+ storage_encode_multiple_column_key_double(value, data_size,
+ current_buffer, decode);
+ }
break;
case MYSQL_TYPE_NULL:
data_type = TYPE_NUMBER;
Modified: ha_mroonga.h (+2 -1)
===================================================================
--- ha_mroonga.h 2012-03-18 18:18:48 +0900 (274c4f7)
+++ ha_mroonga.h 2012-03-18 18:19:08 +0900 (bb5d48b)
@@ -537,7 +537,8 @@ private:
uint data_size,
uchar *buffer,
bool decode);
- uint storage_encode_multiple_column_key_double(const uchar *key,
+ void storage_encode_multiple_column_key_double(double value,
+ uint data_size,
uchar *buffer,
bool decode);
int storage_encode_multiple_column_key(KEY *key_info,