Set hazard pointers correctly instead of wrong. Duh.
authorRobert Haas <[email protected]>
Fri, 3 Aug 2012 12:01:24 +0000 (12:01 +0000)
committerRobert Haas <[email protected]>
Fri, 3 Aug 2012 12:01:24 +0000 (12:01 +0000)
src/backend/utils/hash/chash.c

index b3281d50f5620f7d44ca72d62508199ed34a7051..7169d85a8d33b90524ee0f41b3cb1a67d9e0f9e1 100644 (file)
@@ -404,7 +404,7 @@ CHashSearch(CHashTable table, void *entry)
 
        /* Prevent garbage collection for this bucket. */
        Assert(MyProc->hazard[0] == NULL);
-       MyProc->hazard[0] = b;
+       MyProc->hazard[0] = &table->garbage[bucket >> table->garbage_shift];
        pg_memory_barrier();
 
        /* Scan bucket and return data from any matching entry. */
@@ -459,7 +459,7 @@ CHashInsert(CHashTable table, void *entry)
        memcpy(CHashNodeGetItem(nnew), entry, table->desc.element_size);
 
        /* Prevent garbage collection for this bucket. */
-       MyProc->hazard[0] = b;
+       MyProc->hazard[0] = &table->garbage[bucket >> table->garbage_shift];
        pg_memory_barrier();
 
        /*
@@ -544,7 +544,7 @@ CHashDelete(CHashTable table, void *entry)
 
        /* Prevent garbage collection for this bucket. */
        Assert(MyProc->hazard[0] == NULL);
-       MyProc->hazard[0] = b;
+       MyProc->hazard[0] = &table->garbage[bucket >> table->garbage_shift];
        pg_memory_barrier();
 
        /* Scan bucket. */