Re: Avoid full GIN index scan when possible
Julien Rouhaud <rjuju123@gmail.com>
From: Julien Rouhaud <rjuju123@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Marc Cousin <cousinmarc@gmail.com>, Alexander Korotkov <a.korotkov@postgrespro.ru>,
Tomas Vondra <tomas.vondra@2ndquadrant.com>, Nikita Glukhov <n.gluhov@postgrespro.ru>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-08-01T10:13:24Z
Lists: pgsql-hackers
Attachments
- avoid_gin_fullscan-v4.diff (application/octet-stream) patch v4
On Thu, Aug 1, 2019 at 8:43 AM Thomas Munro <thomas.munro@gmail.com> wrote: > > On Wed, Jul 31, 2019 at 5:28 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Meanwhile, I looked at the v3 patch, and it seems like it might not be > > too far from committable. I think we should *not* let this get bogged > > down in questions of whether EXPLAIN can report which index quals were > > used or ignored. That's a problem that's existed for decades in the > > btree code, with more or less zero user complaints. > > > > I do think v3 needs more attention to comments, for instance this > > hunk is clearly falsifying the adjacent comment: > > > > @ -141,7 +141,8 @@ ginFillScanKey(GinScanOpaque so, OffsetNumber attnum, > > uint32 i; > > > > /* Non-default search modes add one "hidden" entry to each key */ > > - if (searchMode != GIN_SEARCH_MODE_DEFAULT) > > + if (searchMode != GIN_SEARCH_MODE_DEFAULT && > > + (searchMode != GIN_SEARCH_MODE_ALL || nQueryValues)) > > nQueryValues++; > > key->nentries = nQueryValues; > > key->nuserentries = nUserQueryValues; > > > > Also, I agree with Julien that this > > > > + so->forcedRecheck = key->triConsistentFn(key) != GIN_TRUE; > > > > probably needs to be > > > > + so->forcedRecheck |= key->triConsistentFn(key) != GIN_TRUE; > > Ping, Julien? Based on the above, it looks like if we had a > last-minute patch addressing the above this could go directly to Ready > for Committer? I will hold off moving this one to CF2 until my > morning. Attached v4 that should address all comments.
Commits
-
Avoid full scan of GIN indexes when possible
- 4b754d6c16e1 13.0 landed