1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

Bug#26827 - table->read_set is set incorrectly,

causing update of a different column

Post-pushbuild fix.

bitmap_set_bit() is an inline function in DEBUG builds and
a macro in non-DEBUG builds. The latter evaluates its 'bit'
argument twice. So one must not use increment/decrement operators
on this argument.

Moved increment of pointer out of bitmap_set_bit() call.


include/my_bitmap.h:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Added a warning comment.
sql/sql_partition.cc:
  Bug#26827 - table->read_set is set incorrectly,
              causing update of a different column
  Moved increment of pointer out of bitmap_set_bit() call.
This commit is contained in:
unknown
2007-07-05 11:31:03 +02:00
parent 435df1859f
commit 26af0b96a8
2 changed files with 13 additions and 2 deletions

View File

@@ -103,6 +103,17 @@ extern void bitmap_lock_invert(MY_BITMAP *map);
&= ~ (1 << ((BIT) & 7)))
#define _bitmap_is_set(MAP, BIT) (uint) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \
& (1 << ((BIT) & 7)))
/*
WARNING!
The below symbols are inline functions in DEBUG builds and macros in
non-DEBUG builds. The latter evaluate their 'bit' argument twice.
NEVER use an increment/decrement operator with the 'bit' argument.
It would work with DEBUG builds, but fails later in production builds!
FORBIDDEN: bitmap_set_bit($my_bitmap, (field++)->field_index);
*/
#ifndef DBUG_OFF
static inline void
bitmap_set_bit(MY_BITMAP *map,uint bit)