Commit 4faa1dc2 authored by Tom Lane's avatar Tom Lane

Suppress compiler warnings in dshash.c.

Some compilers complain, not unreasonably, about left-shifting an
int32 "1" and then assigning the result to an int64.  In practice
I sure hope that this data structure never gets large enough that
an overflow would actually occur; but let's cast the constant to
the right type to avoid the hazard.

In passing, fix a typo in dshash.h.

Amit Kapila, adjusted as per comment from Thomas Munro.

Discussion: https://postgr.es/m/CAA4eK1+5vfVMYtjK_NX8O3-42yM3o80qdqWnQzGquPrbq6mb+A@mail.gmail.com
parent e4519018
...@@ -315,7 +315,7 @@ dshash_destroy(dshash_table *hash_table) ...@@ -315,7 +315,7 @@ dshash_destroy(dshash_table *hash_table)
ensure_valid_bucket_pointers(hash_table); ensure_valid_bucket_pointers(hash_table);
/* Free all the entries. */ /* Free all the entries. */
size = 1 << hash_table->size_log2; size = ((size_t) 1) << hash_table->size_log2;
for (i = 0; i < size; ++i) for (i = 0; i < size; ++i)
{ {
dsa_pointer item_pointer = hash_table->buckets[i]; dsa_pointer item_pointer = hash_table->buckets[i];
...@@ -676,7 +676,7 @@ resize(dshash_table *hash_table, size_t new_size_log2) ...@@ -676,7 +676,7 @@ resize(dshash_table *hash_table, size_t new_size_log2)
dsa_pointer new_buckets_shared; dsa_pointer new_buckets_shared;
dsa_pointer *new_buckets; dsa_pointer *new_buckets;
size_t size; size_t size;
size_t new_size = 1 << new_size_log2; size_t new_size = ((size_t) 1) << new_size_log2;
size_t i; size_t i;
/* /*
...@@ -707,10 +707,10 @@ resize(dshash_table *hash_table, size_t new_size_log2) ...@@ -707,10 +707,10 @@ resize(dshash_table *hash_table, size_t new_size_log2)
new_buckets = dsa_get_address(hash_table->area, new_buckets_shared); new_buckets = dsa_get_address(hash_table->area, new_buckets_shared);
/* /*
* We've allocate the new bucket array; all that remains to do now is to * We've allocated the new bucket array; all that remains to do now is to
* reinsert all items, which amounts to adjusting all the pointers. * reinsert all items, which amounts to adjusting all the pointers.
*/ */
size = 1 << hash_table->control->size_log2; size = ((size_t) 1) << hash_table->control->size_log2;
for (i = 0; i < size; ++i) for (i = 0; i < size; ++i)
{ {
dsa_pointer item_pointer = hash_table->buckets[i]; dsa_pointer item_pointer = hash_table->buckets[i];
......
...@@ -39,7 +39,7 @@ typedef dshash_hash (*dshash_hash_function) (const void *v, size_t size, ...@@ -39,7 +39,7 @@ typedef dshash_hash (*dshash_hash_function) (const void *v, size_t size,
* members tranche_id and tranche_name do not need to be initialized when * members tranche_id and tranche_name do not need to be initialized when
* attaching to an existing hash table. * attaching to an existing hash table.
* *
* Compare and hash functions mus be supplied even when attaching, because we * Compare and hash functions must be supplied even when attaching, because we
* can't safely share function pointers between backends in general. Either * can't safely share function pointers between backends in general. Either
* the arg variants or the non-arg variants should be supplied; the other * the arg variants or the non-arg variants should be supplied; the other
* function pointers should be NULL. If the arg varants are supplied then the * function pointers should be NULL. If the arg varants are supplied then the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment