On 23.03.2018 18:45, Alvaro Herrera wrote:
Konstantin Knizhnik wrote:
rd_projidx is not a list, it is Bitmapset. It is just one of many bitmap
sets in RelationData:
Yes, but the other bitmapsets are of AttrNumber of the involved column.
They new one is of list_nth() counters for items in the index list.
That seems weird and it scares me -- do we use that coding pattern
elsewhere? Maybe use an array of OIDs instead?
Using list or array instead of bitmap requires much more space...
And bitmaps are much more efficient for many operations: check for
element presence, combine, intersect,...
Check in bitmap has O(0) complexity so iterating through list of all
indexes or attributes with bitmap check doesn't add any essential overhead.
Sorry, I do not understand this: "They new one is of list_nth() counters
for items in the index list"
--
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company