| From: | David Rowley <dgrowleyml(at)gmail(dot)com> |
|---|---|
| To: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
| Cc: | Ashwin Agrawal <aagrawal(at)pivotal(dot)io>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Kevin Grittner <kgrittn(at)gmail(dot)com> |
| Subject: | Re: An out-of-date comment in nodeIndexonlyscan.c |
| Date: | 2021-06-13 12:54:18 |
| Message-ID: | CAApHDvog5unm6LQ-68B4gyhYF-Gf+6-87fns1zTFvwbrFv0wwg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Mon, 14 Jun 2021 at 00:02, Thomas Munro <thomas(dot)munro(at)gmail(dot)com> wrote:
> Here's a highly experimental patch I came up with that seems to
> produce the right results in simple cases, without (yet) involving the
> planner.
+ /* Find all equality quals. */
+ for (int i = 0; i < n_scan_keys; ++i)
+ {
+ if (scan_keys[i].sk_strategy == BTEqualStrategyNumber)
+ attnos[nattnos++] = scan_keys[i].sk_attno;
+ }
+
+ /* Are all attributes covered? */
+ /* XXX is this check enough or do we need to work harder? */
+ qsort(attnos, nattnos, sizeof(AttrNumber), compare_int16);
+ nattnos = qunique(attnos, nattnos, sizeof(AttrNumber), compare_int16);
+ if (nattnos == index->rd_index->indnkeyatts)
I think a more optimal and nicer way of doing that would be setting
bits in a Bitmapset then checking bms_num_members is equal to
n_scan_keys.
David
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tomas Vondra | 2021-06-13 13:50:03 | Re: a path towards replacing GEQO with something better |
| Previous Message | Ranier Vilela | 2021-06-13 12:43:43 | Re: Signed vs Unsigned (take 2) (src/backend/storage/ipc/procarray.c) |