Обсуждение: questions about how to implement a gist index

Поиск
Список
Период
Сортировка

questions about how to implement a gist index

От
Riccardo Vianello
Дата:
Hi all,

I'm trying to contribute some improvements to the implementation of a gist index that is part of an open source project and it would be really nice if anyone could help me answer some questions.

I would like to use different data structures to represent the internal and leaf entries. I think I have found several examples in the postgresql source code where a variable length array is used to pack different data consistently with the value of a "type" attribute. Is this the suggested way to proceed, or would it be also possible to use two actually different data structures? I at first considered this latter approach, but some erroneous behavior suggested that maybe I am not fully clear about which data structure should be produced or expected by some parts of the implementation.

Could you please also help me understand the difference (if any) between using the GIST_LEAF macro or the leafkey attribute of the GISTENTRY data structure?

Thank you very much in advance,

Riccardo


Re: questions about how to implement a gist index

От
Oleg Bartunov
Дата:
On Tue, Jun 28, 2016 at 12:44 AM, Riccardo Vianello
<riccardo.vianello@gmail.com> wrote:
> Hi all,
>
> I'm trying to contribute some improvements to the implementation of a gist
> index that is part of an open source project and it would be really nice if
> anyone could help me answer some questions.
>
> I would like to use different data structures to represent the internal and
> leaf entries. I think I have found several examples in the postgresql source
> code where a variable length array is used to pack different data
> consistently with the value of a "type" attribute. Is this the suggested way
> to proceed, or would it be also possible to use two actually different data
> structures? I at first considered this latter approach, but some erroneous
> behavior suggested that maybe I am not fully clear about which data
> structure should be produced or expected by some parts of the
> implementation.
>
> Could you please also help me understand the difference (if any) between
> using the GIST_LEAF macro or the leafkey attribute of the GISTENTRY data
> structure?

Yes, this is confused.

GIST_LEAF is TRUE if key is in leaf page.

bool leafkey points if TRUE that key contains value from heap.

>
> Thank you very much in advance,
>
> Riccardo
>
>


Re: questions about how to implement a gist index

От
Riccardo Vianello
Дата:
Hi Oleg,

On Tue, Jun 28, 2016 at 1:05 AM, Oleg Bartunov <obartunov@gmail.com> wrote:
On Tue, Jun 28, 2016 at 12:44 AM, Riccardo Vianello
<riccardo.vianello@gmail.com> wrote:
> Could you please also help me understand the difference (if any) between
> using the GIST_LEAF macro or the leafkey attribute of the GISTENTRY data
> structure?

Yes, this is confused.

GIST_LEAF is TRUE if key is in leaf page.

bool leafkey points if TRUE that key contains value from heap.

I think I wrongly assumed that internal and leaf nodes are homogeneously filled with union and indexed values respectively. Is it correct that leafkey is always TRUE for the entries that populate a leaf page, and may be either TRUE and FALSE if GIST_LEAF is FALSE?

Thanks,
Riccardo