* 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.
i = 0;
for (;;)
{
- if (diff >= (1L << bits))
+ if (diff >= (UINT64CONST(1) << bits))
{
/* too large, step up to next mode */
selector++;
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)
{
uint64 diff = codeword & mask;
- decoded[i] = prev_value + 1L + diff;
+ decoded[i] = prev_value + 1 + diff;
prev_value = decoded[i];
codeword >>= bits;
}
}
else
{
- int mask = (1L << bits) - 1;
+ uint64 mask = (UINT64CONST(1) << bits) - 1;
uint64 prev_value;
prev_value = base;
uint64 diff = codeword & mask;
uint64 curr_value;
- curr_value = prev_value + 1L + diff;
+ curr_value = prev_value + 1 + diff;
if (curr_value >= key)
{
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);
}
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);
}