• Sergey Glukhov's avatar
    Bug#38999 valgrind warnings for update statement in function compare_record() · d2db80c8
    Sergey Glukhov authored
    Valgrind warning happpens because of uninitialized null bytes.
    In row_sel_push_cache_row_for_mysql() function we fill fetch cache
    with necessary field values, row_sel_store_mysql_rec() is called
    for this and leaves null bytes untouched.
    Later row_sel_pop_cached_row_for_mysql() rewrites table record
    buffer with uninited null bytes. We can see the problem from the
    test case:
    At 'SELECT...' we call row_sel_push...->row_sel_store...->row_sel_pop_cached...
    chain which rewrites table->record[0] buffer with uninitialized null bytes.
    When we call 'UPDATE...' statement, compare_record uses this buffer and
    valgrind warning occurs.
    The fix is to init null bytes with default values.
    d2db80c8
innodb_mysql.test 16.9 KB