Skip to content

Commit

Permalink
Move table record writing outside of loop
Browse files Browse the repository at this point in the history
We can set values in the record buffer first and only perform one table
write call at the end. No need to write to file every time one column is
updated.

Also, remove unused method from Table_read_cursor.
  • Loading branch information
cvicentiu committed Sep 24, 2016
1 parent 2e7a585 commit 00bf18e
Showing 1 changed file with 4 additions and 19 deletions.
23 changes: 4 additions & 19 deletions sql/sql_window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -630,18 +630,6 @@ class Table_read_cursor : public Rowid_seq_cursor
return table->file->ha_rnd_pos(record, curr_rowid);
}

bool fetch_prev_row()
{
uchar *p;
if ((p= get_prev_rowid()))
{
int rc= table->file->ha_rnd_pos(record, p);
if (!rc)
return true; // restored ok
}
return false; // didn't restore
}

private:
/* The table that is acccesed by this cursor. */
TABLE *table;
Expand Down Expand Up @@ -2136,14 +2124,11 @@ bool save_window_function_values(List<Item_window_func>& window_functions,
tbl->file->ha_rnd_pos(tbl->record[0], rowid_buf);
store_record(tbl, record[1]);
while (Item_window_func *item_win= iter++)
{
int err;
item_win->save_in_field(item_win->result_field, true);
// TODO check if this can be placed outside the loop.
err= tbl->file->ha_update_row(tbl->record[1], tbl->record[0]);
if (err && err != HA_ERR_RECORD_IS_THE_SAME)
return true;
}

int err= tbl->file->ha_update_row(tbl->record[1], tbl->record[0]);
if (err && err != HA_ERR_RECORD_IS_THE_SAME)
return true;

return false;
}
Expand Down

0 comments on commit 00bf18e

Please sign in to comment.