Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
shwetaiisc opened this issue Jul 6, 2023 · 0 comments

Comments

@shwetaiisc
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant