mirror of
https://github.com/MariaDB/server.git
synced 2026-04-22 08:15:31 +02:00
MDEV-9021: MYSQLD SEGFAULTS WHEN BUILT USING --WITH-MAX-INDEXES=128
The bitmap implementation defines two template Bitmap classes. One optimized for 64-bit (default) wide bitmaps while the other is used for all other widths. In order to optimize the computations, Bitmap<64> class has defined its own member functions for bitmap operations, the other one, however, relies on mysys' bitmap implementation (mysys/my_bitmap.c). Issue 1: In case of non 64-bit Bitmap class, intersect() wrongly reset the received bitmap while initialising a new local bitmap structure (bitmap_init() clears the bitmap buffer) thus, the received bitmap was getting cleared. Fixed by initializing the local bitmap structure by using a temporary buffer and later copying the received bitmap to the initialised bitmap structure. Issue 2: The non 64-bit Bitmap class had the Iterator missing which caused compilation failure. Also added a cmake variable to hold the MAX_INDEXES value when supplied from the command prompt. (eg. cmake .. -DMAX_INDEXES=128U). Checks have been put in place to trigger build failure if MAX_INDEXES value is greater than 128. Test modifications: * Introduced include/have_max_indexes_[64|128].inc to facilitate skipping of tests for which the output differs with different MAX_INDEXES. * Introduced include/max_indexes.inc which would get modified by cmake to reflect the MAX_INDEXES value used to build the server. This file simply sets an mtr variable '$max_indexes' to show the MAX_INDEXES value, which will then be consumed by the above introduced include file. * Some tests (portions), dependent on MAX_INDEXES value, have been moved to separate test files.
This commit is contained in:
parent
d6b430c91b
commit
7ec6558503
28 changed files with 3079 additions and 1157 deletions
|
|
@ -404,7 +404,7 @@
|
|||
|
||||
#cmakedefine HAVE_MBSTATE_T 1
|
||||
|
||||
#define MAX_INDEXES 64
|
||||
#cmakedefine MAX_INDEXES @MAX_INDEXES@
|
||||
|
||||
#cmakedefine QSORT_TYPE_IS_VOID 1
|
||||
#cmakedefine RETQSORTTYPE @RETQSORTTYPE@
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue