null+****@clear*****
null+****@clear*****
2011年 10月 3日 (月) 20:55:23 JST
Kouhei Sutou 2011-10-03 11:55:23 +0000 (Mon, 03 Oct 2011)
New Revision: 8afb3e63f3edd73d01c6f138916b80d3ef24d96e
Log:
share common buffer for old value and new value.
Modified files:
ha_mroonga.cc
Modified: ha_mroonga.cc (+9 -21)
===================================================================
--- ha_mroonga.cc 2011-10-03 11:33:59 +0000 (ddf4b6a)
+++ ha_mroonga.cc 2011-10-03 11:55:23 +0000 (a928be1)
@@ -3523,10 +3523,6 @@ int ha_mroonga::wrapper_update_row_index(const uchar *old_data, uchar *new_data)
DBUG_RETURN(error);
}
- grn_obj old_value, new_value;
- GRN_TEXT_INIT(&old_value, 0);
- GRN_TEXT_INIT(&new_value, 0);
-
#ifndef DBUG_OFF
my_bitmap_map *tmp_map = dbug_tmp_use_all_columns(table, table->read_set);
#endif
@@ -3546,23 +3542,23 @@ int ha_mroonga::wrapper_update_row_index(const uchar *old_data, uchar *new_data)
Field *field = key_info.key_part[j].field;
int new_column_size;
- mrn_set_buf(ctx, field, &new_value, &new_column_size);
+ mrn_set_buf(ctx, field, &new_value_buffer, &new_column_size);
field->move_field_offset(ptr_diff);
int old_column_size;
- mrn_set_buf(ctx, field, &old_value, &old_column_size);
+ mrn_set_buf(ctx, field, &old_value_buffer, &old_column_size);
field->move_field_offset(-ptr_diff);
grn_rc rc;
if (old_record_id == new_record_id) {
rc = grn_column_index_update(ctx, index_column, old_record_id, j + 1,
- &old_value, &new_value);
+ &old_value_buffer, &new_value_buffer);
} else {
rc = grn_column_index_update(ctx, index_column, old_record_id, j + 1,
- &old_value, NULL);
+ &old_value_buffer, NULL);
if (!rc) {
rc = grn_column_index_update(ctx, index_column, new_record_id, j + 1,
- NULL, &new_value);
+ NULL, &new_value_buffer);
}
if (!rc) {
rc = grn_table_delete_by_id(ctx, grn_table, old_record_id);
@@ -3579,8 +3575,6 @@ err:
#ifndef DBUG_OFF
dbug_tmp_restore_column_map(table->read_set, tmp_map);
#endif
- grn_obj_unlink(ctx, &old_value);
- grn_obj_unlink(ctx, &new_value);
DBUG_RETURN(error);
}
@@ -3829,9 +3823,6 @@ int ha_mroonga::wrapper_delete_row_index(const uchar *buf)
DBUG_RETURN(error);
}
- grn_obj old_value;
- GRN_TEXT_INIT(&old_value, 0);
-
#ifndef DBUG_OFF
my_bitmap_map *tmp_map = dbug_tmp_use_all_columns(table, table->read_set);
#endif
@@ -3854,10 +3845,10 @@ int ha_mroonga::wrapper_delete_row_index(const uchar *buf)
continue;
int old_column_size;
- mrn_set_buf(ctx, field, &old_value, &old_column_size);
+ mrn_set_buf(ctx, field, &old_value_buffer, &old_column_size);
grn_rc rc;
rc = grn_column_index_update(ctx, index_column, record_id, j + 1,
- &old_value, NULL);
+ &old_value_buffer, NULL);
if (rc) {
error = ER_ERROR_ON_WRITE;
my_message(error, ctx->errbuf, MYF(0));
@@ -3869,7 +3860,6 @@ err:
#ifndef DBUG_OFF
dbug_tmp_restore_column_map(table->read_set, tmp_map);
#endif
- grn_obj_unlink(ctx, &old_value);
grn_table_delete_by_id(ctx, grn_table, record_id);
if (ctx->rc) {
@@ -6952,8 +6942,6 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
grn_obj key;
GRN_TEXT_INIT(&key, 0);
grn_bulk_space(ctx, &key, p_key_info->key_length);
- grn_obj new_value;
- GRN_VOID_INIT(&new_value);
while (!(res = wrapper_rnd_next(table->record[0])))
{
key_copy((uchar *) (GRN_TEXT_VALUE(&key)), table->record[0],
@@ -6989,7 +6977,7 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
continue;
int new_column_size;
- mrn_set_buf(ctx, field, &new_value, &new_column_size);
+ mrn_set_buf(ctx, field, &new_value_buffer, &new_column_size);
grn_obj *index_column = grn_obj_column(ctx,
index_tables[k + n_keys],
@@ -6998,7 +6986,7 @@ int ha_mroonga::wrapper_add_index(TABLE *table_arg, KEY *key_info,
grn_rc rc;
rc = grn_column_index_update(ctx, index_column, record_id, l + 1,
- NULL, &new_value);
+ NULL, &new_value_buffer);
grn_obj_unlink(ctx, index_column);
if (rc) {
res = ER_ERROR_ON_WRITE;