Hello,
According to the draw and simple8b_mode struct comment, it seems there
is a typo:
* 20-bit integer 20-bit integer 20-bit integer
* 1101 00000000000000010010 01111010000100100000 00000000000000010100
* ^
* selector
*
* The selector 1101 is 13 in decimal. From the modes table below, we see
* that it means that the codeword encodes three 12-bit integers. In decimal,
* those integers are 18, 500000 and 20. Because we encode deltas rather than
* absolute values, the actual values that they represent are 18, 500018 and
* 500038.
[...]
{20, 3}, /* mode 13: three 20-bit integers */
The comment should be "the codeword encodes three *20-bit* integers" ?
Patch attached.
Regards,
diff --git a/src/backend/lib/integerset.c b/src/backend/lib/integerset.c
index 28b4a38609..9984fd55e8 100644
--- a/src/backend/lib/integerset.c
+++ b/src/backend/lib/integerset.c
@@ -805,7 +805,7 @@ intset_binsrch_leaf(uint64 item, leaf_item *arr, int arr_elems, bool nextkey)
* selector
*
* The selector 1101 is 13 in decimal. From the modes table below, we see
- * that it means that the codeword encodes three 12-bit integers. In decimal,
+ * that it means that the codeword encodes three 20-bit integers. In decimal,
* those integers are 18, 500000 and 20. Because we encode deltas rather than
* absolute values, the actual values that they represent are 18, 500018 and
* 500038.