summaryrefslogtreecommitdiff
path: root/sql/ha_federated.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/ha_federated.cc')
-rw-r--r--sql/ha_federated.cc31
1 files changed, 3 insertions, 28 deletions
diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc
index 1d7b8cda8e2..63454bf88ed 100644
--- a/sql/ha_federated.cc
+++ b/sql/ha_federated.cc
@@ -1544,9 +1544,6 @@ inline uint field_in_record_is_null(TABLE *table,
int ha_federated::write_row(byte *buf)
{
bool has_fields= FALSE;
- uint all_fields_have_same_query_id= 1;
- ulong current_query_id= 1;
- ulong tmp_query_id= 1;
char insert_buffer[FEDERATED_QUERY_BUFFER_SIZE];
char values_buffer[FEDERATED_QUERY_BUFFER_SIZE];
char insert_field_value_buffer[STRING_BUFFER_USUAL_SIZE];
@@ -1575,14 +1572,6 @@ int ha_federated::write_row(byte *buf)
table->timestamp_field->set_time();
/*
- get the current query id - the fields that we add to the insert
- statement to send to the foreign will not be appended unless they match
- this query id
- */
- current_query_id= table->in_use->query_id;
- DBUG_PRINT("info", ("current query id %d", current_query_id));
-
- /*
start both our field and field values strings
*/
insert_string.append(FEDERATED_INSERT);
@@ -1595,21 +1584,8 @@ int ha_federated::write_row(byte *buf)
values_string.append(FEDERATED_OPENPAREN);
/*
- Even if one field is different, all_fields_same_query_id can't remain
- 0 if it remains 0, then that means no fields were specified in the query
- such as in the case of INSERT INTO table VALUES (val1, val2, valN)
-
- */
- for (field= table->field; *field; field++)
- {
- if (field > table->field && tmp_query_id != (*field)->query_id)
- all_fields_have_same_query_id= 0;
-
- tmp_query_id= (*field)->query_id;
- }
- /*
loop through the field pointer array, add any fields to both the values
- list and the fields list that match the current query id
+ list and the fields list that is part of the write set
You might ask "Why an index variable (has_fields) ?" My answer is that
we need to count how many fields we actually need
@@ -1617,8 +1593,7 @@ int ha_federated::write_row(byte *buf)
for (field= table->field; *field; field++)
{
/* if there is a query id and if it's equal to the current query id */
- if (((*field)->query_id && (*field)->query_id == current_query_id)
- || all_fields_have_same_query_id)
+ if (ha_get_bit_in_write_set((*field)->fieldnr))
{
/*
There are some fields. This will be used later to determine
@@ -2082,7 +2057,7 @@ error:
}
/* Initialized at each key walk (called multiple times unlike rnd_init()) */
-int ha_federated::index_init(uint keynr)
+int ha_federated::index_init(uint keynr, bool sorted)
{
int error;
DBUG_ENTER("ha_federated::index_init");