Re: GIN improvements part 1: additional information

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
Cc: Alexander Korotkov <aekorotkov(at)gmail(dot)com>, Tomas Vondra <tv(at)fuzzy(dot)cz>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: GIN improvements part 1: additional information
Date: 2013-11-06 15:36:04
Message-ID: 20131106153604.GM5809@eldon.alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Heikki Linnakangas escribió:
> On 04.11.2013 23:44, Alexander Korotkov wrote:
> >Attached version of patch has support of old page format. Patch still needs
> >more documentation and probably refactoring, but I believe idea is clear
> >and it can be reviewed. In the patch I have to revert change of null
> >category placement for compatibility with old posting list format.
>
> I committed some of the refactorings and cleanup included in this
> patch. Attached is a rebased version that applies over current head.
> I hope I didn't joggle your elbow..

Just for my own illumination, can someone explain this bit?

+ If a posting list is too large to store in-line in a key entry, a posting tree
+ is created. A posting tree is a B-tree structure, where the ItemPointer is
+ used as the key. At the leaf-level, item pointers are stored compressed, in
+ "varbyte encoding".

I think the first ItemPointer mentioned (the key) refers to a TID
pointing to the index, and "item pointers stored compressed" refers to
the TIDs pointing to the heap (the data). Is that correct?

I'm also interested in the "FIXME explain varbyte encoding" explanation
currently missing, if somebody can write it down ...

Thanks,

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ants Aasma 2013-11-06 15:47:45 Re: better atomics
Previous Message Tom Lane 2013-11-06 15:16:18 Re: git diff --check whitespace checks, gitattributes