From: | David Rowley <dgrowleyml(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Melanie Plageman <melanieplageman(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: heapgettup() with NoMovementScanDirection unused in core? |
Date: | 2023-01-27 23:28:14 |
Message-ID: | CAApHDvrvAxRzj9sbSM6ovaZULpRqgf-AYS9W6WWGTzKqRqza7g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sat, 28 Jan 2023 at 12:15, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> /*
> * Determine the net effect of two direction specifications.
> * This relies on having ForwardScanDirection = +1, BackwardScanDirection = -1,
> * and will probably not do what you want if applied to any other values.
> */
> #define CombineScanDirections(a, b) ((a) * (b))
>
> The main thing this'd buy us is being able to grep for uses of the
> trick. If it's written as just multiplication, good luck being
> able to find what's depending on that, should you ever need to.
Yeah, I think the multiplication macro is a good way of doing it.
Having the definition of it close to the ScanDirection enum's
definition is likely a very good idea so that anyone adjusting the
enum values is more likely to notice that it'll cause an issue. A
small note on the enum declaration about the -1, +1 values being
exploited in various places might be a good idea too. I see v6-0006 in
[1] further exploits this, so that's further reason to document that.
My personal preference would have been to call it
ScanDirectionCombine, so the naming is more aligned to the 4 other
macro names that start with ScanDirection in sdir.h, but I'm not going
to fuss over it.
David
[1] https://postgr.es/m/CAAKRu_ZyiXwWS1WXSZneoy+sjoH_+F5UhO-1uFhyi-u0d6z+fA@mail.gmail.com
David
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2023-01-27 23:28:16 | Re: Optimizing PostgreSQL with LLVM's PGO+LTO |
Previous Message | Corey Huinker | 2023-01-27 23:23:39 | Add n_tup_newpage_upd to pg_stat table views |