diff options
author | Eugene Kosov <claprix@yandex.ru> | 2020-01-30 13:11:06 +0800 |
---|---|---|
committer | Eugene Kosov <claprix@yandex.ru> | 2020-01-31 22:14:18 +0800 |
commit | bd36a4ca12159a22ae5512857fa140475fccf22b (patch) | |
tree | 3b30e959ddb87f5880ed4e3f1d99f132e7cede89 /storage/innobase/buf | |
parent | 256994ef7469fc4c62d5b271a6557ad729380f0e (diff) | |
download | mariadb-git-bd36a4ca12159a22ae5512857fa140475fccf22b.tar.gz |
introduce HASH_REPLACE() for hash_table_t
HASH_REPLACE(): allows to not travel through linked list twice
when HASH_INSERT() happens right after HASH_DELETE()
Diffstat (limited to 'storage/innobase/buf')
-rw-r--r-- | storage/innobase/buf/buf0buf.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index 0c0f82d48b9..b47c1175c35 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -2212,8 +2212,8 @@ buf_page_realloc( ut_d(block->page.in_page_hash = FALSE); ulint fold = block->page.id.fold(); ut_ad(fold == new_block->page.id.fold()); - HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, (&block->page)); - HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold, (&new_block->page)); + HASH_REPLACE(buf_page_t, hash, buf_pool->page_hash, fold, + &block->page, &new_block->page); ut_ad(new_block->page.in_page_hash); @@ -3329,8 +3329,8 @@ buf_relocate( /* relocate buf_pool->page_hash */ ulint fold = bpage->id.fold(); ut_ad(fold == dpage->id.fold()); - HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, bpage); - HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold, dpage); + HASH_REPLACE(buf_page_t, hash, buf_pool->page_hash, fold, bpage, + dpage); } /** Hazard Pointer implementation. */ |