Skip to content

Key-value pair not updating when same key is inserted multiple times with different values.  #6

@shwetaiisc

Description

@shwetaiisc

Multiple inserts to the same key are not reflected in the hashtable.
The paper mentions that when a key already exists, the corresponding value gets updated in place. However, I don't observe the same.

I ran an experiment with a single thread where the same key is inserted several times but with different values. Only the first value is reflected while reading. I have set the buckets correctly. For example, for num_ops = 1000, the log of buckets is set to 10.
The code snippet is shown below --

uint64_t key = 1000, value = 1000;  
std::vector<uint64_t> obtained_value(num_ops);  
for(uint64_t i = 0; i < num_ops; ++i) {  
         value++;  
         iceberg_insert(&table, key, value, 0);  
         iceberg_get_value(&table, key, &obtained_value[i], 0);  
         std::cout << "value: " << value  << " obtained value: " << obtained_value[i] << "\n";  
}

Output: value keeps incrementing but obtained_value is always 1001.

I believe I am using the APIs correctly. The code works fine when different keys are inserted into the table. When I increment both key and value, the obtained_value is correct.

Please look into the issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions