From: | Peter Geoghegan <pg(at)bowt(dot)ie> |
---|---|
To: | Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com>, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, Hayk Manukyan <manukyantt(at)gmail(dot)com>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Feature request for adoptive indexes |
Date: | 2021-10-27 16:10:32 |
Message-ID: | CAH2-Wz=22epJjPp9Z+FaZt2Q+cVTDMr6EvGf8eOLrmFFjq-1Dg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Oct 27, 2021 at 1:02 AM Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> wrote:
> AFAIK Gin is lossy for phrase queries as we don't store word position in the posting list. For purely logical queries, where position doesn't matter, it's not lossy.
GIN is always lossy, in the sense that it provides only a
gingetbitmap() routine -- there is no gingettuple() routine. I believe
that this is fundamental to the overall design of GIN. It would be
very difficult to add useful gingettuple() functionality now, since
GIN already relies on lossiness to avoid race conditions.
Here's an example of the problems that "adding gingettuple()" would
run into: Today, an index's pending list entries can be merged
concurrently with the entry tree, without worrying about returning the
same tuples twice. This is only safe/correct because GIN only supports
bitmap index scans. Without that, you need some other mechanism to
make it safe -- ISTM you must "logically lock" the index structure,
using ARIES/KVL style key value locks, or something along those lines.
--
Peter Geoghegan
From | Date | Subject | |
---|---|---|---|
Next Message | Jacob Champion | 2021-10-27 16:14:45 | Re: allowing "map" for password auth methods with clientcert=verify-full |
Previous Message | Gilles Darold | 2021-10-27 16:02:39 | Re: [PATCH] Proposal for HIDDEN/INVISIBLE column |