summaryrefslogtreecommitdiff
path: root/sql/ha_federated.cc
diff options
context:
space:
mode:
authorjimw@mysql.com <>2006-06-28 12:11:52 -0700
committerjimw@mysql.com <>2006-06-28 12:11:52 -0700
commit46dcf6611453ac61e4b472a95a7816770028e253 (patch)
treeeebe61790d1146aa9e881e8b09c288850b537c05 /sql/ha_federated.cc
parenta1c2dc5e6f21668c2f7bd082b7dd6b4d3c24e724 (diff)
downloadmariadb-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.cc33
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);
}
/*