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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions