3 янв. 2019 г., в 23:47, Andrey Borodin <x4...@yandex-team.ru> написал(а): > >> * Bitmapset stores 32 bit signed integers, but BlockNumber is unsigned. So >> this will fail with an index larger than 2^31 blocks. That's perhaps >> academical, I don't think anyone will try to create a 16 TB GiST index any >> time soon. But it feels wrong to introduce an arbitrary limitation like that. > Looks like bitmapset is unsuitable for collecting block numbers due to the > interface. Let's just create custom container for this? > Or there is one other option: for each block number throw away sign bit and > consider page potentially internal and potentially empty leaf if (blkno & > 0x7FFFFFF) is in bitmapset. > And then we will have to create at least one 17Tb GiST to check it actually > works.
Heikki, how do you think, is implementing our own radix tree for this is viable solution? I've written working implementation with 4-level statically typed tree. If we follow this route, probably, there must be tests for this data structure. Best regards, Andrey Borodin.
radix_tree.diff
Description: Binary data