mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Bug# 19573096: LOADING CORRUPTED GEOMETRY DATA INTO A
MYISAM TABLE CAUSES THE SERVER TO CRASH Issue: ----- During index maintanence, R-tree node might need a split. In some cases the square of mbr could be calculated to infinite (as in this case) or to NaN. This is currently not handled. This is specific to MyISAM. SOLUTION: --------- If the calculated value in "mbr_join_square" is infinite or NaN, set it to max double value. Initialization of output parameters of "pick_seeds" is required if calculation is infinite (or negative infinite). Similar to the fix made for INNODB as part of Bug#19533996.
This commit is contained in:
parent
120907c0a2
commit
b7bdea944d
1 changed files with 7 additions and 0 deletions
|
@ -68,6 +68,10 @@ static double mbr_join_square(const double *a, const double *b, int n_dim)
|
|||
b += 2;
|
||||
}while (a != end);
|
||||
|
||||
/* Check for infinity or NaN */
|
||||
if (my_isinf(square) || isnan(square))
|
||||
square = DBL_MAX;
|
||||
|
||||
return square;
|
||||
}
|
||||
|
||||
|
@ -102,6 +106,9 @@ static void pick_seeds(SplitStruct *node, int n_entries,
|
|||
double max_d = -DBL_MAX;
|
||||
double d;
|
||||
|
||||
*seed_a = node;
|
||||
*seed_b = node + 1;
|
||||
|
||||
for (cur1 = node; cur1 < lim1; ++cur1)
|
||||
{
|
||||
for (cur2=cur1 + 1; cur2 < lim2; ++cur2)
|
||||
|
|
Loading…
Add table
Reference in a new issue