• marko's avatar
    branches/zip: In hash table lookups, assert that the traversed items · 2f7bcc7d
    marko authored
    satisfy some conditions when UNIV_DEBUG is defined.
    
    HASH_SEARCH(): New parameter: ASSERTION. All users will pass an appropriate
    ut_ad() or nothing.
    
    dict_table_add_to_columns(): Assert that the table being added to the data
    dictionary cache is not already being pointed to by the name_hash and
    id_hash tables.
    
    HASH_SEARCH_ALL(): New macro, for use in dict_table_add_to_columns().
    
    dict_mem_table_free(): Set ut_d(table->cached = FALSE), so that we can
    check ut_ad(table->cached) when traversing the hash tables, as in
    HASH_SEARCH(name_hash, dict_sys->table_hash, ...) and
    HASH_SEARCH(id_hash, dict_sys->table_id_hash, ...).
    
    dict_table_get_low(), dict_table_get_on_id_low(): Assert
    ut_ad(!table || table->cached).
    
    fil_space_get_by_id(): Check ut_ad(space->magic_n == FIL_SPACE_MAGIC_N)
    in HASH_SEARCH(hash, fil_system->spaces, ...).
    
    fil_space_get_by_name(): Check ut_ad(space->magic_n == FIL_SPACE_MAGIC_N)
    in HASH_SEARCH(name_hash, fil_system->name_hash, ...).
    
    buf_buddy_block_free(): Check that the blocks are in valid state in
    HASH_SEARCH(hash, buf_pool->zip_hash, ...).
    
    buf_page_hash_get(): Check that the blocks are in valid state in
    HASH_SEARCH(hash, buf_pool->page_hash, ...).
    
    get_share(), free_share(): Check ut_ad(share->use_count > 0) in
    HASH_SEARCH(table_name_hash, innobase_open_tables, ...).
    
    This was posted as rb://75 for tracking down errors similar to Issue #153.
    2f7bcc7d
dict0dict.c 120 KB