1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

WL 1682: Bitvector for updated/read fields in handler interface

Fixed clear issues of bitvector and memory allocation issues


sql/bitvector.cc:
  Made bitvector memroot class
sql/bitvector.h:
  Made bitvector memroot class
sql/handler.cc:
  Need to add updated fields to read set to ensure that they are
  updated since the update code doesn't update if records haven't
  changed
  Added DBUG printout's
sql/handler.h:
  Moved clear of bitvector's to reset function
  Introduced ha_reset for this purpose to ensure that it isn't
  necessary to perform this clear in all handlers.
sql/lock.cc:
  Removed clear that has been moved to ha_reset
sql/opt_range.cc:
  Changed reset to ha_reset
  Added delete file
sql/sql_base.cc:
  Removed clear and changed reset to ha_reset
sql/sql_insert.cc:
  Removed clear and changed reset to ha_reset
sql/sql_select.cc:
  Made sure delete file is done if needed
sql/sql_table.cc:
  Added delete file in another place needed
sql/sql_update.cc:
  Bug for multi-update fixed
This commit is contained in:
unknown
2005-05-07 10:00:25 +02:00
parent dfb2d19fe5
commit fdde665e76
11 changed files with 29 additions and 21 deletions

View File

@ -443,6 +443,8 @@ class handler :public Sql_alloc
virtual int rnd_init(bool scan) =0;
virtual int rnd_end() { return 0; }
private:
virtual int reset() { return extra(HA_EXTRA_RESET); }
public:
byte *ref; /* Pointer to current row */
byte *dupp_ref; /* Pointer to dupp row */
@ -562,6 +564,13 @@ public:
inited=NONE;
DBUG_RETURN(rnd_end());
}
int ha_reset()
{
DBUG_ENTER("ha_reset");
ha_clear_all_set();
DBUG_RETURN(reset());
}
/* this is necessary in many places, e.g. in HANDLER command */
int ha_index_or_rnd_end()
{
@ -664,7 +673,6 @@ public:
{ return 0; }
virtual int extra_opt(enum ha_extra_function operation, ulong cache_size)
{ return extra(operation); }
virtual int reset() { return extra(HA_EXTRA_RESET); }
virtual int external_lock(THD *thd, int lock_type) { return 0; }
virtual void unlock_row() {}
virtual int start_stmt(THD *thd) {return 0;}