Thread
-
A small problem when rehashing catalog cache
cca5507 <cca5507@qq.com> — 2025-12-16T11:16:20Z
Hi, When we search catalog cache, we move the searched tuple to the front of the list: ``` /* * We found a match in the cache. Move it to the front of the list * for its hashbucket, in order to speed subsequent searches. (The * most frequently accessed elements in any hashbucket will tend to be * near the front of the hashbucket's list.) */ dlist_move_head(bucket, &ct->cache_elem); ``` If I understand correctly, we reverse the list in RehashCatCache() and RehashCatCacheLists(): ``` /* Move all entries from old hash table to new. */ for (i = 0; i < cp->cc_nbuckets; i++) { dlist_mutable_iter iter; dlist_foreach_modify(iter, &cp->cc_bucket[i]) { CatCTup *ct = dlist_container(CatCTup, cache_elem, iter.cur); int hashIndex = HASH_INDEX(ct->hash_value, newnbuckets); dlist_delete(iter.cur); dlist_push_head(&newbucket[hashIndex], &ct->cache_elem); } } ``` Maybe "dlist_push_head" -> "dlist_push_tail"? Thoughts? -- Regards, ChangAo Chen