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,