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:
@ -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;}
|
||||
|
Reference in New Issue
Block a user