aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/lib/integerset.c12
-rw-r--r--src/test/modules/test_integerset/test_integerset.c7
2 files changed, 11 insertions, 8 deletions
diff --git a/src/backend/lib/integerset.c b/src/backend/lib/integerset.c
index fcbb2bd0dba..74ed6215546 100644
--- a/src/backend/lib/integerset.c
+++ b/src/backend/lib/integerset.c
@@ -845,7 +845,7 @@ static const struct
* This value looks like a 0-mode codeword, but we check for it
* specifically. (In a real 0-mode codeword, all the unused bits are zero.)
*/
-#define EMPTY_CODEWORD (0xFFFFFFFFFFFFFFF0)
+#define EMPTY_CODEWORD UINT64CONST(0xFFFFFFFFFFFFFFF0)
/*
* Encode a number of integers into a Simple-8b codeword.
@@ -885,7 +885,7 @@ simple8b_encode(uint64 *ints, int *num_encoded, uint64 base)
i = 0;
for (;;)
{
- if (diff >= (1L << bits))
+ if (diff >= (UINT64CONST(1) << bits))
{
/* too large, step up to next mode */
selector++;
@@ -948,7 +948,7 @@ simple8b_decode(uint64 codeword, uint64 *decoded, uint64 base)
int selector = codeword & 0x0f;
int nints = simple8b_modes[selector].num_ints;
uint64 bits = simple8b_modes[selector].bits_per_int;
- uint64 mask = (1L << bits) - 1;
+ uint64 mask = (UINT64CONST(1) << bits) - 1;
uint64 prev_value;
if (codeword == EMPTY_CODEWORD)
@@ -961,7 +961,7 @@ simple8b_decode(uint64 codeword, uint64 *decoded, uint64 base)
{
uint64 diff = codeword & mask;
- decoded[i] = prev_value + 1L + diff;
+ decoded[i] = prev_value + 1 + diff;
prev_value = decoded[i];
codeword >>= bits;
}
@@ -992,7 +992,7 @@ simple8b_contains(uint64 codeword, uint64 key, uint64 base)
}
else
{
- int mask = (1L << bits) - 1;
+ uint64 mask = (UINT64CONST(1) << bits) - 1;
uint64 prev_value;
prev_value = base;
@@ -1001,7 +1001,7 @@ simple8b_contains(uint64 codeword, uint64 key, uint64 base)
uint64 diff = codeword & mask;
uint64 curr_value;
- curr_value = prev_value + 1L + diff;
+ curr_value = prev_value + 1 + diff;
if (curr_value >= key)
{
diff --git a/src/test/modules/test_integerset/test_integerset.c b/src/test/modules/test_integerset/test_integerset.c
index 0bb6d47f4b1..32713f4baa1 100644
--- a/src/test/modules/test_integerset/test_integerset.c
+++ b/src/test/modules/test_integerset/test_integerset.c
@@ -590,12 +590,14 @@ test_huge_distances(void)
for (int i = 0; i < num_values; i++)
{
uint64 x = values[i];
+ bool expected;
bool result;
if (x > 0)
{
+ expected = (values[i - 1] == x - 1);
result = intset_is_member(intset, x - 1);
- if (result != false)
+ if (result != expected)
elog(ERROR, "intset_is_member failed for " UINT64_FORMAT, x - 1);
}
@@ -603,8 +605,9 @@ test_huge_distances(void)
if (result != true)
elog(ERROR, "intset_is_member failed for " UINT64_FORMAT, x);
+ expected = (i != num_values - 1) ? (values[i + 1] == x + 1) : false;
result = intset_is_member(intset, x + 1);
- if (result != false)
+ if (result != expected)
elog(ERROR, "intset_is_member failed for " UINT64_FORMAT, x + 1);
}