On Wed, Oct 5, 2016 at 3:10 AM, Thomas Munro <thomas.mu...@enterprisedb.com> wrote: > Here is an experimental hash table implementation that uses DSA memory > so that hash tables can be shared by multiple backends and yet grow > dynamically. Development name: "DHT".
+dht_iterate_begin(dht_hash_table *hash_table, + dht_iterator *iterator, + bool exclusive) +{ + Assert(hash_table->control->magic == DHT_MAGIC); + + iterator->hash_table = hash_table; + iterator->exclusive = exclusive; + iterator->partition = 0; + iterator->bucket = 0; + iterator->item = NULL; + iterator->locked = false; While reviewing , I found that in dht_iterate_begin function, we are not initializing iterator->last_item_pointer to InvalidDsaPointer; and during scan this variable will be used in advance_iterator function. (I think this will create problem, even loss of some tuple ?) +advance_iterator(dht_iterator *iterator, dsa_pointer bucket_head, + dsa_pointer *next) +{ + dht_hash_table_item *item; + + while (DsaPointerIsValid(bucket_head)) + { + item = dsa_get_address(iterator->hash_table->area, + bucket_head); + if ((!DsaPointerIsValid(iterator->last_item_pointer) || + bucket_head < iterator->last_item_pointer) && -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers