-
Notifications
You must be signed in to change notification settings - Fork 7
Description
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.