mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 09:14:17 +01:00
b5d65fc105
MDEV-33502 Slowdown when running nested statement with many partitions This change was triggered to help some MariaDB users with close to 10000 bits in their bitmaps. - Change underlaying storage to be 64 bit instead of 32bit. - This reduses number of loops to scan bitmaps. - This can cause some bitmaps to be 4 byte large. - Ensure that all not used top-bits are always 0 (simplifes code as the last 64 bit storage is not a special case anymore). - Use my_find_first_bit() to find the first set bit which is much faster than scanning trough things byte by byte and then bit by bit. Other things: - Added a bool to remember if my_bitmap_init() did allocate the bitmap array. my_bitmap_free() will only free arrays it did allocate. This allowed me to remove setting 'bitmap=0' before calling my_bitmap_free() for cases where the bitmap's where allocated externally. - my_bitmap_init() sets bitmap to 0 in case of failure. - Added 'universal' asserts to most bitmap functions. - Change all remaining calls to bitmap_init() to my_bitmap_init(). - To finish the change from 2014. - Changed all usage of uint32 in my_bitmap.h to my_bitmap_map. - Updated bitmap_copy() to handle bitmaps of different size. - Removed const from bitmap_exists_intersection() as this caused casts on all usage. - Removed not used function bitmap_set_above(). - Renamed create_last_word_mask() to create_last_bit_mask() (to match name changes in my_bitmap.cc) - Extended bitmap-t with test for more bitmap functions. |
||
---|---|---|
.. | ||
aes-t.c | ||
base64-t.c | ||
bitmap-t.c | ||
byte_order-t.c | ||
CMakeLists.txt | ||
crc32-t.c | ||
dynstring-t.c | ||
lf-t.c | ||
ma_dyncol-t.c | ||
my_atomic-t.c | ||
my_delete-t.c | ||
my_getopt-t.c | ||
my_malloc-t.c | ||
my_rdtsc-t.c | ||
my_vsnprintf-t.c | ||
queues-t.c | ||
stacktrace-t.c | ||
thr_template.c | ||
waiting_threads-t.c |