• Gleb Shchepa's avatar
    Bug #44768: SIGFPE crash when selecting rand from a view containing null · 9cc4cb0e
    Gleb Shchepa authored
    The RAND(N) function where the N is a field of "constant" table
    (table of single row) failed with a SIGFPE.
    
    Evaluation of RAND(N) rely on constant status of its argument.
    Current server "seeded" random value for each constant argument
    only once, in the Item_func_rand::fix_fields method.
    Then the server skipped a call to seed_random() in the
    Item_func_rand::val_real method for such constant arguments.
    
    However, non-constant state of an argument may be changed
    after the call to fix_fields, if an argument is a field of
    "constant" table. Thus, pre-initialization of random value
    in the fix_fields method is too early.
    
    
    Initialization of random value by seed_random() has been
    removed from Item_func_rand::fix_fields method.
    The Item_func_rand::val_real method has been modified to
    call seed_random() on the first evaluation of this method
    if an argument is a function.
    9cc4cb0e
item_func.h 47.9 KB