branches/zip: In hash table lookups, assert that the traversed items
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.
Showing
Please register or sign in to comment