diff options
author | jimw@mysql.com <> | 2006-06-28 12:11:52 -0700 |
---|---|---|
committer | jimw@mysql.com <> | 2006-06-28 12:11:52 -0700 |
commit | 46dcf6611453ac61e4b472a95a7816770028e253 (patch) | |
tree | eebe61790d1146aa9e881e8b09c288850b537c05 /sql/ha_federated.cc | |
parent | a1c2dc5e6f21668c2f7bd082b7dd6b4d3c24e724 (diff) | |
download | mariadb-git-46dcf6611453ac61e4b472a95a7816770028e253.tar.gz |
Optimize stack usage of ha_federated::update_row().
Diffstat (limited to 'sql/ha_federated.cc')
-rw-r--r-- | sql/ha_federated.cc | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index 9e9c23c0ccc..c4e1549183a 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -1817,19 +1817,13 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) /* buffers for following strings */ - char old_field_value_buffer[STRING_BUFFER_USUAL_SIZE]; - char new_field_value_buffer[STRING_BUFFER_USUAL_SIZE]; + char field_value_buffer[STRING_BUFFER_USUAL_SIZE]; char update_buffer[FEDERATED_QUERY_BUFFER_SIZE]; char where_buffer[FEDERATED_QUERY_BUFFER_SIZE]; - /* stores the value to be replaced of the field were are updating */ - String old_field_value(old_field_value_buffer, - sizeof(old_field_value_buffer), - &my_charset_bin); - /* stores the new value of the field */ - String new_field_value(new_field_value_buffer, - sizeof(new_field_value_buffer), - &my_charset_bin); + /* Work area for field values */ + String field_value(field_value_buffer, sizeof(field_value_buffer), + &my_charset_bin); /* stores the update query */ String update_string(update_buffer, sizeof(update_buffer), @@ -1842,8 +1836,7 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) /* set string lengths to 0 to avoid misc chars in string */ - old_field_value.length(0); - new_field_value.length(0); + field_value.length(0); update_string.length(0); where_string.length(0); @@ -1874,10 +1867,10 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) else { /* otherwise = */ - (*field)->val_str(&new_field_value); - (*field)->quote_data(&new_field_value); - update_string.append(new_field_value); - new_field_value.length(0); + (*field)->val_str(&field_value); + (*field)->quote_data(&field_value); + update_string.append(field_value); + field_value.length(0); } if (field_in_record_is_null(table, *field, (char*) old_data)) @@ -1885,11 +1878,11 @@ int ha_federated::update_row(const byte *old_data, byte *new_data) else { where_string.append(FEDERATED_EQ); - (*field)->val_str(&old_field_value, + (*field)->val_str(&field_value, (char*) (old_data + (*field)->offset())); - (*field)->quote_data(&old_field_value); - where_string.append(old_field_value); - old_field_value.length(0); + (*field)->quote_data(&field_value); + where_string.append(field_value); + field_value.length(0); } /* |