[Commits] fad4849: Move table record writing outside of loop

Vicentiu Ciorbaru vicentiu at mariadb.org
Tue Sep 20 13:16:22 EEST 2016


revision-id: fad484975f622f2316121b8b6cc790745547b734 (mariadb-10.1.8-272-gfad4849)
parent(s): 0046f1de97242a37363651409a9a9b110732b311
author: Vicențiu Ciorbaru
committer: Vicențiu Ciorbaru
timestamp: 2016-09-20 12:16:07 +0200
message:

Move table record writing outside of loop

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.

---
 sql/sql_window.cc | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/sql/sql_window.cc b/sql/sql_window.cc
index 6880b0a..4234f58 100644
--- a/sql/sql_window.cc
+++ b/sql/sql_window.cc
@@ -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;
@@ -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;
 }


More information about the commits mailing list