← Back to team overview

maria-developers team mailing list archive

MDEV-7049 MySQL#74585 - InnoDB: Failing assertion: *mbmaxlen < 5 in file ha_innodb.cc line 1904

 

Hello Marko,

InnoDB uses 5 bits to store the combination of mbminlen and mbmaxlen,
and its calculated as:

   mbmaxlen * 5 + mbminlen


Note, combinations with mbminlen=0 and mbmaxlen=0 are not possible.
Also, combinations with mbminlen>mbmaxlen are not possible.


This is a summary:

         mbminlen
mbmaxlen 0    1    2    3     4
0       (0)  (1)  (2)  (3)   (4)
1       (5)   6   (7)  (8)   (9)
2       (10) 11   12   (13)  (14)
3       (15) 16   17   18    (19)
4       (20) 21   22   23    24


I marked impossible numbers with parentheses.

In the range 0..24:
- 10 pairs are valid
- 15 pairs are not valid

It should be safe to use any impossible number to mean
mbmaxlen=5 & mbminlen=1

It seems there is no really a need to extend the header to use
separate 3 bits for both mbminlen and mbmaxlen.



Follow ups